SQL — Использование представлений

SQL — Использование представлений

От автора: представление — это не что иное, как оператор SQL, который хранится в базе данных с соответствующим именем. На самом деле представление является определенным структурированным набором данных таблицы в виде предопределенного SQL-запроса.

Представления SQL могут содержать все строки таблицы или определенные выбранные строки. Представление может быть создано из одной или нескольких таблиц, это зависит от составленного для представления SQL-запроса.

Представления, которые являются типом виртуальных таблиц, позволяют пользователям делать следующее:

Структурировать данные таким образом, который будет наиболее естественным или интуитивным для пользователей или классов пользователей.

Ограничивать доступ к данным таким образом, чтобы пользователь мог находить и изменять (в некоторых случаях) только те данные, которые ему нужны, и не более того.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Обобщать данные из разных таблиц, чтобы использовать их для различных отчетов.

Создание представлений

Представления базы данных создаются с помощью инструкции CREATE VIEW. Представления можно создать из одной таблицы, нескольких таблиц или другого представления.

Пользователь должен иметь соответствующие системные привилегии в зависимости от конкретной реализации.
Основной синтаксис CREATE VIEW следующий:

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

Вы можете включить в инструкцию SELECT несколько таблиц так же, как вы используете их в обычном запросе SQL SELECT.

Пример

Рассмотрим таблицу CUSTOMERS, содержащую следующие записи:

SQL — Использование представлений

Ниже приведен пример создания представления из таблицы CUSTOMERS. Это представление будет использоваться для получения имени и возраста клиенттов из таблицы CUSTOMERS.

CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS;

Теперь вы можете выполнить запрос CUSTOMERS_VIEW так же, как вы выполняете запрос к самой таблице. Ниже приведен пример.

SELECT * FROM CUSTOMERS_VIEW;

В результате мы получим следующее.

SQL — Использование представлений

Параметр WITH CHECK OPTION

WITH CHECK OPTION является параметром CREATE VIEW. Параметр WITH CHECK OPTION назначается для того чтобы гарантировать, что все запросы UPDATE и INSERT удовлетворяют условиям в определении представления. Если они не удовлетворяют условию, запрос UPDATE или INSERT возвращает ошибку.

В следующем блоке кода приведен пример создания такого же представления CUSTOMERS_VIEW с параметром WITH CHECK OPTION.

CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;

Параметр WITH CHECK OPTION в этом случае должен блокировать запись значений NULL столбец представления AGE, поскольку для представления определено, что в столбце AGE не могут содержаться данные NULL.

Обновление представления

Представление может быть обновляемым, если выполняются определенные условия, которые приведены ниже:

Условие SELECT не должно содержать ключевое слово DISTINCT.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Условие SELECT не должно содержать сводных функций.

Условие SELECT не должно содержать заданных функций.

Условие SELECT не должно содержать заданных операторов.

Условие SELECT не должно содержать ORDER BY.

Условие FROM не должно содержать нескольких таблиц.

Условие WHERE не должно содержать подзапросов.

Запрос не должен содержать GROUP BY или HAVING.

Обработанные столбцы не должны обновляться.

Все NOT NULL столбцы из базовой таблицы должны быть включены в представление, чтобы запрос INSERT функционировал.

Таким образом, если представление удовлетворяет всем вышеперечисленным правилам, вы можете обновить это представление. В следующем блоке кода показан пример обновления возраста для клиента Ramesh.

UPDATE CUSTOMERS_VIEW
  SET AGE = 35
  WHERE name = 'Ramesh';

Это полностью обновит саму таблицу CUSTOMERS, что отразится и на представлении. Теперь попробуйте выполнить запрос в самой таблице, и результат выполнения инструкции SELECT будет выглядеть следующим образом.

SQL — Использование представлений

Добавление строк в представление

В представление можно вставлять строки данных. Те же правила, которые применяются для команды UPDATE, применяются также и для команды INSERT.

Здесь мы не можем вставлять строки в CUSTOMERS_VIEW, потому что мы не включили в это представление все NOT NULL столбцы, иначе в представление можно было бы вставить строки так же, как вы вставляете их в таблицу.

Удаление строк из представления

Строки данных могут быть удалены из представления. Те же правила, которые применяются для команд UPDATE и INSERT, применяются к команде DELETE. Ниже приведен пример удаления записи с AGE = 22.

DELETE FROM CUSTOMERS_VIEW
  WHERE age = 22;

В результате строка будет удалена из таблицы базы CUSTOMERS, и это также будет отображено в самом представлении. Теперь попробуйте выполнить запрос к таблице базы, результат выполнения инструкции SELECT будет выглядеть следующим образом.

SQL — Использование представлений

Удаление представлений

Очевидно, что, если у вас есть представление, когда оно больше не нужно, его нужно удалить. Для этого используется следующий синтаксис:

DROP VIEW view_name;

Ниже приведен пример того, как удалить представление CUSTOMERS_VIEW из таблицы CUSTOMERS.

DROP VIEW CUSTOMERS_VIEW;

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Хотите изучить MySQL?

Прямо сейчас посмотрите 24-х часовой курс по базе данных MySQL!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree