Создав представление Мясные_блюда пользователь может считать, что в базе данных реально существует такая таблица и дать, например, запрос на получение из нее всех данных:
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 из описаний представлений, хранящихся в каталоге).