WHERE city = "London";
Смешанное – это представление, которое ограничивает доступ, как к некоторым столбцам исходной таблицы, так и к некоторым строкам.
SELECT city, snum
FROM Salespeople
WHERE city = "London";
Удаление представлений
Синтаксис удаления представления из базы данных подобен синтаксису удаления базовых таблиц:
DROP VIEW <view name>
Определение модифицируемости представления
Если команды модификации могут выполняться в представлении, представление будет модифицируемым; в противном случае оно предназначено только для чтения при запросе. Выражение "модифицируемое представление" (updating a view), означает возможность выполнения в представлении любой из трех команд модификации DML (Вставить, Изменить и Удалить), которые могут изменять значения.
Использование этого принципа на практике, однако, затруднено. Кроме того, некоторые представления, которые являются модифицируемыми в теории, на самом деле не являются модифицируемыми в SQL. Критерии, по которые определяют, является ли представление модифицируемым или нет, в SQL, следующие:
|
|
- Оно должно выводиться в одну и только в одну базовую таблицу.
- Оно должно содержать первичный ключ этой таблицы (это технически не предписывается стандартом ANSI, но было бы неплохо придерживаться этого).
- Оно не должно иметь никаких полей, которые бы являлись агрегатными функциями.
- Оно не должно содержать DISTINCT в своем определении.
- Оно не должно использовать GROUP BY или HAVING в своем определении.
- Оно не должно использовать подзапросы (это - ANSI ограничение которое не предписано для некоторых реализаций)
- Оно может быть использовано в другом представлении, но это представление должно также быть модифицируемыми.
- Оно не должно использовать константы, строки, или выражения значений (например: comm * 100) среди выбранных полей вывода.
- Оно на должно содержать операторов Объединения (UNION) и Объединения всего (UNIOM ALL).
- Для INSERT, оно должно содержать любые поля основной таблицы, которые имеют ограничение NOT NULL, если другое ограничение по умолчанию, не определено.
- Упорядочение по (ORDER BY) никогда не используется в определении представлений.
Проверка значений помещаемых в представление
Другой вывод о модифицируемости представления тот, что вы можете вводить значения которые "проглатываются" (swallowed) в базовой таблице. Рассмотрим такое представление:
CREATE VIEW Highratings
AS SELECT cnum, rating