Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Урок 18<br />
Использование представлений<br />
В этом уроке рассказывается о том, что такое представления, как они работают и когда их<br />
можно использовать. Вы узнаете также, как представления можно использовать для<br />
упрощения некоторых операций SQL, выполненных в прошлых уроках.<br />
Что такое представления<br />
Представления - это виртуальные таблицы. В отличие от таблиц, содержащих данные,<br />
представления содержат запросы, которые динамически выбирают данные, когда это<br />
необходимо.<br />
Поддержка в MySQL<br />
К моменту выхода этой книги СУБД MySQL еще не поддерживала представления (их<br />
поддержку планировалось осуществить в версии MySQL 5). Поэтому приведенные нами<br />
примеры в настоящее время работать не будут.<br />
Лучший способ объяснить, что такое представления, - рассмотреть конкретный пример.<br />
Возвратимся к уроку 12, "Объединение таблиц", в котором был использован следующий<br />
оператор SELECT для выборки данных сразу из трех таблиц:<br />
ВВОД<br />
SELECT cust_name, cust_contact<br />
FROM Customers, Orders, OrderItems<br />
WHERE Customers.cust_id = Orders.cust_id<br />
AND OrderItems.order_num = Orders.order_num<br />
AND prod_id = 'RGAN01';<br />
Этот запрос был использован для извлечения информации о клиентах, которые заказали<br />
указанный продукт. Всякий, кому необходимы эти данные, должен был бы разобраться в<br />
структуре таблицы, а также в методике создания запроса и объединения таблиц. Чтобы<br />
извлечь аналогичные данные для другого продукта (или для нескольких продуктов),<br />
последнее предложение WHERE придется модифицировать.<br />
Теперь предположим, что вы могли бы сохранить весь этот запрос в виртуальной таблице<br />
с именем ProductCustomers. Затем для выборки тех же самых данных нужно было бы<br />
просто сделать следующее:<br />
ВВОД<br />
SELECT cust_name, cust_contact<br />
FROM ProductCustomers<br />
WHERE prod_id = 'RGAN01';<br />
Это как раз тот случай, когда в игру вступают представления. Таблица ProductCustomers<br />
является представлением, поэтому она не содержит каких-либо столбцов или данных.<br />
Вместо них хранится запрос - тот самый запрос, который был использован выше для<br />
объединения таблиц.