При именовании представлений используется V_ в начале названия. После символа подчеркивания идет краткое описание того, как работает представление, при этом при необходимости используются дополнительные символы подчеркивания. Также можно назвать это представление V_AvgTotal_Rounded. Вы можете выбрать другое название.
При выполнении этого оператора мы получим следующее сообщение: QueryexecutedsuccessfullyCREATEVIEWV_AvgTotalAS (Запрос успешно выполнен: CREATEVIEWV_AvgTotalAS). Представление V_AvgTotal можно увидеть в разделе Views (Представления) на вкладке Database Structure (Структура базы данных) в DB Browser.
Рис. 124
Теперь, когда представление создано, мы можем выполнить несколько простых задач, просто щелкнув на нем правой кнопкой мыши. После этого появится окно меню (рис. 125).
Если выбрать пункт меню Browse Table (Просмотр таблицы) и перейти на соседнюю вкладку Browse Data (Просмотр данных), то можно просмотреть содержимое представления (как для любой таблицы базы данных). Из этого меню мы также можем удалить представление или сгенерировать копию кода (который ввели ранее для создания представления).
Рис. 125
Примечание
На рис. 125 пункт меню Modify View (Изменить представление) на момент публикации неактивен и недоступен. Изменение существующих представлений не поддерживается данной версией DB Browser. Однако в других реализациях SQL, таких как SQL Server, можно изменять существующие представления. Позже в этой главе мы объясним, как изменить представление в SQLite.
Использование представлений
Использование представлений в базах данных полезно по ряду причин, но в первую очередь из-за удобства. Если вам постоянно нужен один и тот же запрос или вы постоянно ссылаетесь на конкретное соединение, которое показывает взаимодействие двух таблиц, такой запрос удобно сохранить как представление, и тогда он будет доступен при необходимости в любое время. Кроме того, когда запрос сохраняется как представление, его можно вызвать как подзапрос, выбрав имя представления.
Рассмотрим представление V_AvgTotal, созданное в начале этой главы. В главе 8 для сравнения итоговых сумм счетов со средней суммой счета мы использовали функцию расчета среднего значения в качестве подзапроса. Теперь, чтобы не писать полный подзапрос расчета среднего значения, мы можем написать наш запрос следующим образом:
SELECT
InvoiceDate,
BillingAddress,
BillingCity,
Total
FROM
invoices
WHERE Total <
(SELECT
*
from
V_AvgTotal)
ORDER BY
Total DESC
Примечание
Хотя представление — это полноценный SQL-запрос, мы все равно должны ссылаться на него в операторе SELECT, если будем использовать представление вместе с подзапросами. В операторах SELECT можно использовать символ *, чтобы представление, на которое мы ссылаемся, возвращало все строки. В рассматриваемом примере строка только одна — агрегированная сумма.
Если какой-либо запрос часто используется в качестве подзапроса, то, сохранив его в качестве представления, мы можем упростить код и сделать более понятными для других наши действия. Кто угодно, например наш коллега, может просто перейти на вкладку Database Structure (Структура базы данных) и изучить, как работают наши представления. Использование представлений сокращает время написания запроса, особенно когда запросы становятся длинными и сложными.
Изменения представлений
Как мы упоминали ранее, текущая версия DB Browser (на момент написания этой книги) не поддерживает изменение существующих представлений. В качестве альтернативы в SQLite необходимо создать новое представление и присвоить ему новое имя или удалить существующее представление. Чтобы изменить представление в SQLite, необходимо перейти на вкладку Execute SQL (Выполнить SQL-запрос), щелкнуть правой кнопкой мыши на представлении и скопировать оператор CREATEVIEW. Затем можно вставить результаты на вкладку Execute SQL (Выполнить SQL-запрос), внести изменения и снова запустить оператор на выполнение.
Примечание
При повторном запуске представления, если исходное представление все еще сохранено в разделе Views (Представления), необходимо переименовать новое представление (или удалить существующее). Иначе появится сообщение об ошибке, указывающее, что представление уже существует. Имя представления должно быть уникальным.
Практические задания
• Измените представление V_AvgTotal, чтобы в нем не было функции ROUND().
• Из главы 8 выберите другой пример подзапроса, преобразуйте часть подзапроса в представление и запустите его снова.
Соединенные представления