PostgreSQL — оператор DROP VIEWS

Опубликовано: 5 Октября, 2022

Представление можно рассматривать как виртуальную таблицу, которая может содержать все строки таблицы или выбранные строки из одной или нескольких таблиц. Это позволяет нам видеть только ограниченные данные вместо полной информации, хранящейся в таблице. Представление может быть создано из одной или нескольких базовых таблиц ( таблица, из которой создается представление ). Мы можем выполнять различные операции с представлениями, такие как создание, обновление и удаление представлений. Здесь мы сосредоточимся в первую очередь на удалении или удалении представлений. Давайте попробуем понять это с помощью примера, как показано ниже:

Чтобы понять оператор DROP VIEW , мы возьмем пример таблицы с именем «Студенты», как показано здесь:

Заявление DROP VIEW:

Как следует из названия, оператор DROP VIEW удаляет представление из базы данных. Основной синтаксис DROP VIEW следующий:

Syntax:
DROP VIEW [IF EXISTS] view_name
[CASCADE | RESTRICT]

Теперь давайте разберемся в значении ключевых слов, используемых в приведенном выше синтаксисе, одно за другим:

  1. Ключевые слова DROP VIEW используются для указания имени представления, которое необходимо удалить.
  2. Как следует из названия, IF EXISTS гарантирует, что дроп будет удален только в том случае, если он существует. Если мы попытаемся удалить несуществующее представление, будет использована ошибка.
  3. view_name — это просто имя представления, которое нужно удалить.
  4. RESTRICT не позволяет удалить представление, если от него зависят какие-либо другие объекты. Это опция по умолчанию.
  5. CASCADE автоматически удаляет объекты, зависящие от представления, и все объекты, зависящие от этих объектов.

Примечание . Также можно удалить несколько представлений с помощью одного оператора DROP VIEW, используя следующий синтаксис:

DROP VIEW [IF EXISTS] view_name1, view_name2, ...;

Теперь, чтобы понять оператор DROP VIEW, нам нужно сначала создать представление, которое мы можем удалить/удалить позже. Ниже приведен оператор, который создает представление с именем «StudentsView» на основе информации, хранящейся в таблице «Студенты».

CREATE OR REPLACE VIEW StudentsView
AS 
SELECT 
   admit_id,
   stu_name,
   branch 
FROM
Students
WHERE branch ="Science";

Выход :

Итак, мы успешно создали представление, содержащее три столбца ( accept_id , stu_name , branch ) из исходной таблицы. Давайте создадим еще одно представление с именем « myview », основанное на StudentView , используя следующий оператор:

CREATE OR REPLACE VIEW myview 
AS 
SELECT 
   admit_id,
   stu_name 
FROM 
StudentsView 
WHERE stu_name ="Sakshi";

Выход :

Поскольку это представление было создано из первого представления с именем «StudentsView», следовательно, другие объекты зависят от «StudentsView». Теперь давайте попробуем удалить представление «StudentsView», используя оператор DROP VIEW, как показано здесь:

DROP VIEW StudentsView;

Output:

ERROR:  cannot drop view studentsview because other objects depend on it
DETAIL:  view myview depends on view studentsview
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

Поскольку RESTRICT был параметром по умолчанию, он не позволит удалить представление, если от него зависят какие-либо другие объекты, и, следовательно, здесь возникает ошибка. Однако, если мы попытаемся удалить myview , его можно просто удалить.

DROP VIEW myview;

Output:
DROP VIEW
Query returned successfully in 73 msec.

Вот как мы можем создавать и удалять представления в PostgreSQL. Чтобы проверить, успешно ли удалено представление, просто запустите SELECT * FROM имя_представления, если оно все еще существует или было удалено. В этом случае, если мы запустим следующий запрос:

SELECT * from myview

тогда возникнет ошибка, показывающая, что myview не существует, поскольку мы уже удалили « myview ».