Кто мешает тебе выдумать порох непромокаемым? (К. Прутков).

SQL – Использование Views

5 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
22 апреля 2017
SQL - Использование Views
View (представление) не более чем заявление в SQL, которое хранится в базе данных с соответствующим именем. View на самом деле является композиция из таблицы в виде заранее определенного запроса SQL.

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

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

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

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

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

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

Основной синтаксис CREATE VIEW выглядит следующим образом:

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

 

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

Примеры

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

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 34000.00 |
|  5 | Ruslan   |  34 | Omsk      | 45000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

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

SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS;

 

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

SQL > SELECT * FROM CUSTOMERS_VIEW;

 

Это произведет следующий результат.

+----------+-----+
| NAME     | AGE |
+----------+-----+
| Maxim    |  35 |
| AndreyEx |  38 |
| Oleg     |  33 |
| Masha    |  35 |
| Ruslan   |  34 |
| Dima     |  32 |
| Roma     |  34 |
+----------+-----+

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, так как представление определяется данными, которые не имеют значение NULL в столбце AGE.

Обновление View

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

  • SELECT не может содержать ключевое слово DISTINCT.
  • SELECT не может содержать итоговые функции.
  • SELECT не может содержать набор функций.
  • SELECT не может содержать набор операторов.
  • SELECT не может содержать ORDER BY.
  • FROM не может содержать несколько таблиц.
  • WHERE не может содержать подзапросы.
  • Запрос не может содержать GROUP BY или HAVING.
  • Вычисляемые столбцы не могут быть обновлены.
  • Все столбцы NOT NULL из базовой таблицы должны быть включены в представлении для запроса INSERT к функции.

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

SQL > UPDATE CUSTOMERS_VIEW
   SET AGE = 39
   WHERE name = 'AndreyEx';

 

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

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  39 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 34000.00 |
|  5 | Ruslan   |  34 | Omsk      | 45000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

Вставка строк в View

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

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

Удаление строк в View

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

Ниже приведен пример, чтобы удалить запись, имеет возраст = 33.

SQL > DELETE FROM CUSTOMERS_VIEW
   WHERE age = 33;

 

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

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  4 | Masha    |  35 | Moscow    | 34000.00 |
|  5 | Ruslan   |  34 | Omsk      | 45000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

Удаление View

Очевидно, где у вас есть представление, вам нужен способ, чтобы удалить представление, если он больше не нужен. Синтаксис очень прост и приведен ниже:

DROP VIEW view_name;

 

Ниже приведен пример удаления CUSTOMERS_VIEW из таблицы Customers.

DROP VIEW CUSTOMERS_VIEW;

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 116

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

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

    Войти с помощью: 

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

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close