Создав представление Мясные_блюда пользователь может считать, что в базе данных реально существует такая таблица и дать, например, запрос на получение из нее всех данных:
SELECT *
FROM Мясные_блюда;
результат которого имеет вид
БЛ Блюдо В Выход
2 Салат мясной З 200
6 Мясо с гарниром З 250
9 Суп харчо С 500
13 Бастурма Г 300
14 Бефстроганов Г 210
Поскольку при определении представления может быть использован любой допустимый подзапрос, то выборка данных может осуществляться как из базовых таблиц, так и из представлений:
CREATE VIEW Горячие_мясные_блюда
AS SELECT Блюдо, Продукт, Вес
FROM Мясные_блюда, Состав, Продукты
WHERE Мясные_блюда.БЛ = Состав.БЛ
AND Продукты.ПР = Состав.ПР
AND В = 'Г';
Если теперь возникла необходимость получить сведения о горячих мясных блюдах, в состав которых входят помидоры, то можно сформировать запрос
SELECT Блюдо, Продукт, Вес
FROM Горячие_мясные_блюда
WHERE Блюдо IN
( SELECT Блюдо
FROM Горячие_мясные_блюда
WHERE Продукт = 'Помидоры')
и получить:
Блюдо Продукт Вес
Бастурма Говядина 180
Бастурма Помидоры 100
Бастурма Лук 40
Бастурма Зелень 20
Бастурма Масло 5
Легко заметить, что данный запрос, осуществляющий выбор данных через два представления, выглядит для пользователя точно так же, как обычный SELECT, оперирующий обычной базовой таблицей. Однако СУБД преобразует его при выполнении в эквивалентную операцию над лежащими в основе базовыми таблицами (перед выполнением проводит слияние выданного пользователем SELECT с предложениями SELECT из описаний представлений, хранящихся в каталоге).
SELECT *
FROM Мясные_блюда;
результат которого имеет вид
БЛ Блюдо В Выход
2 Салат мясной З 200
6 Мясо с гарниром З 250
9 Суп харчо С 500
13 Бастурма Г 300
14 Бефстроганов Г 210
Поскольку при определении представления может быть использован любой допустимый подзапрос, то выборка данных может осуществляться как из базовых таблиц, так и из представлений:
CREATE VIEW Горячие_мясные_блюда
AS SELECT Блюдо, Продукт, Вес
FROM Мясные_блюда, Состав, Продукты
WHERE Мясные_блюда.БЛ = Состав.БЛ
AND Продукты.ПР = Состав.ПР
AND В = 'Г';
Если теперь возникла необходимость получить сведения о горячих мясных блюдах, в состав которых входят помидоры, то можно сформировать запрос
SELECT Блюдо, Продукт, Вес
FROM Горячие_мясные_блюда
WHERE Блюдо IN
( SELECT Блюдо
FROM Горячие_мясные_блюда
WHERE Продукт = 'Помидоры')
и получить:
Блюдо Продукт Вес
Бастурма Говядина 180
Бастурма Помидоры 100
Бастурма Лук 40
Бастурма Зелень 20
Бастурма Масло 5
Легко заметить, что данный запрос, осуществляющий выбор данных через два представления, выглядит для пользователя точно так же, как обычный SELECT, оперирующий обычной базовой таблицей. Однако СУБД преобразует его при выполнении в эквивалентную операцию над лежащими в основе базовыми таблицами (перед выполнением проводит слияние выданного пользователем SELECT с предложениями SELECT из описаний представлений, хранящихся в каталоге).