10.01.2017 Views

sql

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 />

объединения таблиц.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!