Компоненты SQL
Место для представления
Иногда из таблицы CUSTOMER (клиент) вам требуется получить определенную информацию. При этом не нужно просматривать все подряд, а только конкретные столбцы и строки. В таком случае требуется представление (view).
Представления – это виртуальные таблицы. В большинстве реализаций они не являются в таблицах метаданных, и данные на самом деле поступают из таблиц, на основе которых это представление создано. Его данные больше нигде не хранятся. Одни представления состоят из определенных столбцов и строк одной таблицы. Другие же, которые называются многотабличными представлениями, получаются не менее чем из двух таблиц.
Однотабличное представление
Иногда данные, которые дадут ответ на ваш вопрос, находятся в единственной таблице базы данных. А если вся необходимая вам информация находится в одной таблице, то можно создать однотабличное представление данных. Скажем, например, что нужно просмотреть имена (first name), фамилии (last name) и телефонные номера (phone) всех клиентов, которые живут в штате Нью-Хэмпшир (который обозначается аббревиатурой NH). Тогда на основе таблицы CUSTOMER можно создать представление, содержащее только те данные, которые вам нужны. Оно создается при выполнении следующей команды:
CREATE VIEW NH_CUST AS SELECT CUSTOMER.FirstName, CUSTOMER.LastName, CUSTOMER.Phone FROM CUSTOMER WHERE CUSTOMER.State = 'NH';
Диаграмма на рис. 3.2 показывает, каким образом представление создается из таблицы CUSTOMER.
Рис. З.2. Создание представления NH_CUST из таблицы CUSTOMER
Совет:
Этот код безупречно правильный, но немного громоздкий. Ту же самую операцию можно выполнить, набирая команды и покороче. Это возможно тогда, когда имеющаяся у вас реализация SQL допускает, что если в перечисленных атрибутах не указаны ссылки на таблицу, то все атрибуты относятся к таблице предложения FROM. Если ваша система в состоянии сделать это разумное допущение, то команду можно сократить до следующих строк:
CREATE VIEW NH_CUST AS SELECT FirstName, LastName, Phone FROM CUSTOMER WHERE STATE = 'NH';
Хотя этот вариант записи проще, подобное представление может неправильно работать после применения команд ALTER TABLE. Конечно, если оператор JOIN (соединить) не используется, такого не случится. А для представлений с операторами JOIN лучше использовать полные имена. Об операторах JOIN рассказывается в главе 10.