SQL | Взгляды

Опубликовано: 19 Августа, 2021

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

В этой статье мы узнаем о создании, удалении и обновлении просмотров.
Образцы таблиц :

СтудентПодробнее

StudentMarks

СОЗДАНИЕ ПРОСМОТРОВ

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

Синтаксис :

 СОЗДАТЬ ПРОСМОТР имя_представления AS
ВЫБРАТЬ column1, column2 .....
FROM table_name
ГДЕ условие;

view_name : имя для просмотра
table_name : имя таблицы
condition : Условие для выбора строк

Примеры :

  • Создание представления из одной таблицы:
    • В этом примере мы создадим представление с именем DetailsView из таблицы StudentDetails.
      Запрос:
       СОЗДАТЬ ПРОСМОТР ПодробностиПросмотреть как
      ВЫБЕРИТЕ ИМЯ, АДРЕС
      ОТ СтудентаПодробнее
      ГДЕ S_ID <5;
      

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

       ВЫБРАТЬ * ИЗ DetailsView;
      

      Выход:

    • В этом примере мы создадим представление с именем StudentNames из таблицы StudentDetails.
      Запрос:



       СОЗДАТЬ ПРОСМОТР StudentNames AS
      ВЫБЕРИТЕ S_ID, ИМЯ
      ОТ СтудентаПодробнее
      ЗАКАЗАТЬ ПО ИМЕНИ;
      

      Если мы теперь запросим представление как,

       ВЫБРАТЬ * ИЗ StudentNames;
      

      Выход:

  • Создание представления из нескольких таблиц : В этом примере мы создадим представление с именем MarksView из двух таблиц StudentDetails и StudentMarks. Чтобы создать представление из нескольких таблиц, мы можем просто включить несколько таблиц в оператор SELECT. Запрос:
     СОЗДАТЬ ПРОСМОТР MarksView AS
    ВЫБЕРИТЕ StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS
    ОТ StudentDetails, StudentMarks
    ГДЕ StudentDetails.NAME = StudentMarks.NAME;
    

    Чтобы отобразить данные View MarksView:

     ВЫБРАТЬ * ИЗ MarksView;
    

    Выход:

УДАЛЕНИЕ ПРОСМОТРОВ

Мы узнали о создании представления, но что, если созданное представление больше не требуется? Очевидно, мы захотим его удалить. SQL позволяет нам удалить существующее представление. Мы можем удалить или отбросить представление с помощью оператора DROP.

Синтаксис :

 DROP VIEW view_name;

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

Например, если мы хотим удалить View MarksView , мы можем сделать это следующим образом:

 УДАЛИТЬ ПРОСМОТР MarksView;

ОБНОВЛЕНИЕ ПРОСМОТРОВ

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

  1. Оператор SELECT, который используется для создания представления, не должен включать предложение GROUP BY или ORDER BY.
  2. В операторе SELECT не должно быть ключевого слова DISTINCT.
  3. Представление должно иметь все значения NOT NULL.
  4. Представление не должно создаваться с использованием вложенных запросов или сложных запросов.
  5. Представление должно быть создано из одной таблицы. Если представление создано с использованием нескольких таблиц, мы не сможем обновить представление.
  • Мы можем использовать оператор CREATE OR REPLACE VIEW для добавления или удаления полей из представления.
    Синтаксис :
     СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ВИД view_name AS
    ВЫБРАТЬ column1, coulmn2, ..
    FROM table_name
    ГДЕ условие;
    

    Например, если мы хотим обновить представление MarksView и добавить поле AGE к этому представлению из таблицы StudentMarks , мы можем сделать это следующим образом:

     СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ПРОСМОТР MarksView AS
    ВЫБЕРИТЕ StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS, StudentMarks.AGE
    ОТ StudentDetails, StudentMarks
    ГДЕ StudentDetails.NAME = StudentMarks.NAME;
    

    Если мы сейчас получим все данные из MarksView как:

     ВЫБРАТЬ * ИЗ MarksView;
    

    Выход:

  • Вставка строки в представление :
    Мы можем вставить строку в представление так же, как мы это делаем в таблице. Мы можем использовать оператор SQL INSERT INTO для вставки строки в представление. Синтаксис :
     ВСТАВИТЬ INTO имя_представления (столбец1, столбец2, столбец3, ..) 
    ЗНАЧЕНИЯ (значение1, значение2, значение3 ..);
    
    view_name : имя представления
    

    Пример :
    В приведенном ниже примере мы вставим новую строку в View DetailsView, который мы создали выше в примере «создания представлений из одной таблицы».

     ВСТАВИТЬ В DetailsView (ИМЯ, АДРЕС)
    ЦЕННОСТИ («Суреш», «Гургаон»);
    

    Если мы сейчас получим все данные из DetailsView как,

     ВЫБРАТЬ * ИЗ DetailsView;
    

    Выход:

  • Удаление строки из представления :
    Удаление строк из представления также просто, как удаление строк из таблицы. Мы можем использовать оператор SQL DELETE для удаления строк из представления. Также при удалении строки из представления сначала удаляется строка из фактической таблицы, а затем изменение отражается в представлении. Синтаксис :
     УДАЛИТЬ ИЗ view_name
    ГДЕ условие;
    
    view_name : имя представления, из которого мы хотим удалить строки
    condition : Условие для выбора строк 
    

    Пример :
    В этом примере мы удалим последнюю строку из представления DetailsView, которое мы только что добавили в приведенном выше примере вставки строк.

     УДАЛИТЬ ИЗ DetailsView
    ГДЕ ИМЯ = "Суреш";
    

    Если мы сейчас получим все данные из DetailsView как,

     ВЫБРАТЬ * ИЗ DetailsView;
    

    Выход:

С ОПЦИЕЙ ПРОВЕРКИ

Предложение WITH CHECK OPTION в SQL очень полезно для представлений. Это применимо к обновляемому представлению. Если представление не обновляется, то нет смысла включать это предложение в оператор CREATE VIEW.

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

Пример :
В приведенном ниже примере мы создаем View SampleView из таблицы StudentDetails с предложением WITH CHECK OPTION.

 СОЗДАТЬ ПРОСМОТР SampleView AS
ВЫБЕРИТЕ S_ID, ИМЯ
ОТ СтудентаПодробнее
ГДЕ ИМЯ НЕ ПУСТО
С ОПЦИЕЙ ПРОВЕРКИ;

В этом представлении, если мы теперь попытаемся вставить новую строку с нулевым значением в столбец NAME, это выдаст ошибку, потому что представление создается с условием для столбца NAME как NOT NULL.
Например, хотя представление можно обновлять, но также и следующий запрос для этого представления недействителен:

 ВСТАВИТЬ В SampleView (S_ID)
ЦЕННОСТИ (6);

ПРИМЕЧАНИЕ . Значение столбца NAME по умолчанию - null .

Использование представления:
Хорошая база данных должна содержать представления по следующим причинам:

  1. Ограничение доступа к данным -
    Представления обеспечивают дополнительный уровень безопасности таблицы, ограничивая доступ к заранее определенному набору строк и столбцов таблицы.
  2. Скрытие сложности данных -
    Представление может скрыть сложность, которая существует при объединении нескольких таблиц.
  3. Упростите команды для пользователя -
    Представления позволяют пользователю выбирать информацию из нескольких таблиц, не требуя, чтобы пользователи действительно знали, как выполнить соединение.
  4. Хранить сложные запросы -
    Представления можно использовать для хранения сложных запросов.
  5. Переименовать столбцы -
    Представления также можно использовать для переименования столбцов, не затрагивая базовые таблицы, при условии, что количество столбцов в представлении должно совпадать с количеством столбцов, указанным в инструкции select. Таким образом, переименование помогает скрыть имена столбцов базовых таблиц.
  6. Множественный просмотр объекта -
    Для разных пользователей в одной таблице могут быть созданы разные представления.

Автор статьи - Харш Агарвал. Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.