- •Введение в язык sql92.
- •О нотации грамматики языка sql.
- •Оператор select.
- •Выбор строк (фраза where).
- •Сортировка результата (фраза order by).
- •Стандартные обобщающие функции языка sql.
- •Группировка результата (фраза group by).
- •Примеры простой группировки.
- •Подзапросы и другие операции.
- •Многотабличные запросы.
- •Операции union, intersect, except.
- •Операции обновления базы данных.
- •Insert into table_name [ ( colomn_list ) ]
- •Values ( data_value_list )
- •Определение данных в языке sql.
- •Типы данных языка isq sql92.
- •Integer (можно сократить до int)
- •Скалярные операторы языка sql.
- •Создание баз данных.
- •Представления (виды).
Представления (виды).
“...Изменчивей хамелеона.” ПЛАТОН 427-348 гг. до н.э.
В отличие от реальных таблиц, представления не существуют в база данных как некоторый набор хранимых данных. Столкнувшись со ссылкой на представление, программы СУБД находят его определение и преобразуют исходный запрос в эквивалентный запрос к таблицам, использованным в определении представления. После этого модифицированный запрос выполняется. Этот процесс “слияния” называется разрешением представления.
Создание представлений.
CREATE VIEWview_name [(colomn_name[ , ... ]) ]
AS subselect [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
Есть необъязательная возможность присвоения имени (colomn_name) каждому из столбцов представления.При этом порядок и количество имен совпадает с именами столбцов в результирующей таблице запроса, заданной параметром subselect. Если список имен столбцов опущен, то он определяется по таблице результата запроса. Неоднозначность не допускается. Заданный параметромsubselect подзапрос принято называть определяющим запросом.
Если указана фраза WITH CHECK OPTION, то гарантируется отсутствие строки неудовлетворяющей условиюWHERE определяющего запроса в базовой таблице. Для успешного создания представления требуется иметь привелегию SELECT для всех используемых в определяющем запросе таблиц и привилегию USAGE для всех доменов, используемых в указанных столбцах.
Создание горизонтального представлений.
CREATE VIEW view_name_1
AS SELECT *
FROM table_name
WHERE colomn_name = literal_value;
Горизонтальное представление позволяет ограничить доступ пользователей только определёнными строками, выбранными из одной или нескольких таблиц. В результате выполнения данного оператора будет создано представление под именем m2_staff, содержащие только строки с номером отделения ‘B3’. Руководитель отделения компании тем самым будет видеть только свою информацию через представление, возможно и не подозревая о закрытой для него сводной таблице staff.
Создание вертикального представлений.
CREATE VIEW view_name_2
AS SELECT colomn_name1 , colomn_name2 , ... , colomn_nameN
FROM table_name
WHERE colomn_name = literal_value;
Вертикальное представление позволяет ограничить доступ к информации в таблице по столбцам, выбранным из одной и той же таблицы (список во фразе SELECT). Очевидно, что возможна комбинация горизонтального и вертикального представления (своего рода «подтаблица») для пользователя, как это показано ниже.
CREATE VIEW view_name_2
AS SELECT colomn_name1 , colomn_name2 , ... , colomn_nameN
FROM view_name1
Создание представления с группированием и соединением.
Этот пример представления, которое называется группированным, использует в качестве исходных несколько несколько соединяемых таблиц (т.е. соединенное представление). Одной из важнейших причин использования представлений является стремление упростить многотабличные запросы. Можно построить системы относительно простых запросов вместо того, чтобы писать каждый раз сложные многотабличные запросы (с частичным повторением операций).
CREATE VIEW view_name (view_colomn1, view_colomn2, cnt)
AS SELECT t1.colomn_name1 , t1.colomn_name2 , COUNT(*)
FROM table_name1 t1, table_name2 t2
WHERE t1.colomn_name1= t2.colomn_name2;
GROUP BY t1.colomn_name1, t1.colomn_name2
Обратите внимания, что группировка происходит по двум столбцам одной таблицы, а соединение таблиц – по одному столбцу, семантически общему для них.
Удаление представлений.
DROP VIEWview_name [ RESTRICT | CASCADE ]
Представление удаляется из базы данных с помощью оператора данного формата. Если указать ключ режима выполнения CASCADE, то произойдет удаление всех связанных с данным представлением других представлений. По умолчанию режим удаления RESTRICT,т.е. удаляется только представление, а все остальные использующие его представления блокируются на выполнение.