ВУЗ:
Составители:
Рубрика:
47
природу представлений. После создания представления его можно использо-
вать в запросах наравне с таблицами. На основе представлений можно созда-
вать новые представления.
В качестве примера создадим представление, скрывающее информа-
цию об адресах студентов (такое представление принято называть верти-
кальным).
CREATE VIEW NEW_СТУДЕНТ ID, ФИО, ID_Cons
AS SELECT ID_Stud, СФам, Консультант FROM СТУДЕНТ
При работе с представлениями надо все время помнить об их вирту-
альной природе. СУБД не создает никакой специальной структуры для хра-
нения данных представления, а просто выполняет запрос, указанный в AS,
каждый раз, когда встречает имя представления. С одной стороны, это удоб-
но. Например, можно постоянно поддерживать «таблицу» со средними бал-
лами каждого студента, вместо хранения и периодического пересчета этих
данных. Однако, с другой стороны, синтаксически правильный запрос с
представлением может привести к ошибке. Рассмотрим следующий пример.
Пусть определено представление, содержащее средний балл каждого студен-
та:
CREATE VIEW СРЕДНИЙ_БАЛЛ (СНом, Студент, СрБалл)
AS SELECT ID_Stud, СФам, AVG(Оценка)
FROM СТУДЕНТ, УСПЕВАЕМОСТЬ
GROUP BY ID_Stud, СФам
Теперь найдем студентов, чей средний балл больше 4.5:
SELECT СНом, Студент, СрБалл FROM СРЕДНИЙ_БАЛЛ
WHERE СрБалл>4.5
Этот правильный, на первый взгляд, запрос будет отвергнут, поскольку
на самом деле сформирован неверный запрос с условием на агрегатную
функцию в предложении WHERE:
SELECT ID_Stud, СФам, AVG(Оценка)
FROM СТУДЕНТ, УСПЕВАЕМОСТЬ
WHERE AVG(Оценка)>4.5
GROUP BY ID_Stud, СФам
Второй случай, где надо с осторожностью использовать представления
– это модификация данных. Вот ограничения стандарта на операции моди-
фикации для представлений.
⇒ В запросе, на основе которого создано представление, должно от-
сутствовать слово DISTINCT.
⇒ В предложении FROM запроса, на основе которого создано пред-
ставление, должна быть только одна таблица.
⇒ Каждое имя в списке возвращаемых столбцов должно быть ссылкой
на простой столбец: в списке не должны встречаться вычисляемые столбцы,
выражения, агрегатные функции.
⇒ В предложении WHERE не должен стоять вложенный запрос.
48
⇒ В запросе не должно содержаться предложений GROUP BY и
HAVING.
Кроме того, следует помнить ряд ограничений при использовании
групповых представлений (основанных на запросах с группировками).
⇒ Нельзя использовать встроенные функции.
⇒ Нельзя использовать операторы JOIN, GROUP BY и HAVING.
⇒ Подзапрос не может ссылаться на групповое представление.
ЗАКЛЮЧЕНИЕ
Стандарт SQL – это сотни страниц текста. Любая коммерческая реали-
зация языка предлагает множество дополнительных возможностей и расши-
рений. Поскольку целью этой работы являлось ознакомление с основными
принципами манипулирования данными и введение в SQL, то за рамками из-
ложения остались многие возможности языка. Кратко перечислим незатро-
нутые темы:
⇒ понятие индекса и работа с индексами в SQL;
⇒ понятие транзакции и операторы управления транзакциями в SQL;
⇒ операторы администрирования в SQL;
⇒ разграничение прав доступа в SQL;
⇒ встроенный SQL и понятие курсора;
⇒ оптимизация запросов.
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »