Представим, что пользователь создал запрос командой SELECT. Результат виден на экране сразу же. Если в следующий момент времени данные в исходных таблицах были изменены, то этот результат уже не актуален, и запрос нужно создавать снова. Тексты запросов, с которыми приходится очень часто обращаться к базе данных выгодно не писать каждый раз заново, а хранить. Именно для этого существуют представления или view. Иногда еще их называют виртуальными таблицами.
Представление - это объект реляционной базы данных, являющийся результатом выполнения запроса на основе команды SELECT, в момент обращения к представлению.
Таким образом, представление хранит текст запроса и выполняет его в тот момент, когда пользователь обращается к представлению. Поэтому результат представления всегда содержит самые новые данные.
Представления могут выбирать данные из таблиц и из других представлений. Но при этом следует помнить, что имена представлений и таблиц не должны совпадать в рамках всей базы данных.
Преимущества использования представлений:
Представление создается командой CREATE VIEW и использованием команды SELECT внутри ее.

Если нужно создать представление, которое будет показывать всех абитуриентов в возрасте старше 18 лет, то его текст будет таким:
CREATE VIEW older18 AS SELECT * FROM abiturient;
Команда CREATE VIEW содержит следующие необязательные инструкции:
Существует два алгоритма, которые выполняются при обращении к представлению:
Для того чтобы понимать разницу между ними, нужно помнить, что пользователь обращается к представлению чаще всего для выполнения какой-либо операции с ним. Например, пользователь хочет использовать представление при построении запроса. Если используется алгоритм MERGE, то содержимое представления заносится напрямую в эту операцию, а после этого операция выполняется. Если используется TEMPTABLE, то результат представления сначала размещается во временной таблице, а потом эта временная таблица используется в требуемой операции. Алгоритм MERGE работает эффективнее, поэтому если алгоритм не определен (UNDEFINED), то по умолчанию СУБД всегда пробует использовать MERGE.
Не все представления могут использоваться при добавлении данных. Чтобы это было возможно должно выполняться два условия:
Построим представление, которое будет показывать заявления всех абитуриентов мужского пола:
CREATE VIEW applic_male SELECT * FROM application LEFT JOIN abiturient ON application.idabiturient=abiturient.idabiturient WHERE abiturient.gender=’male’;
Для данного представления основной является таблица application (так как в операторе LEFT JOIN она находится слева). Следовательно, именно ее можно обновлять через представление.
Построим представление, которое показывает количество абитуриентов каждого пола:
CREATE VIEW count_male_female SELECT gender, count(idabiturient) FROM abiturient GROUP BY gender;
А вот это представление не подходит для добавления данных. В нем нет таблицы, строки которой соответствую строкам представления, и есть вычисляемое поле.