📜  PostgreSQL – DROP VIEWS 语句

📅  最后修改于: 2022-05-13 01:57:15.612000             🧑  作者: Mango

PostgreSQL – DROP VIEWS 语句

一个视图可以被看作是一个虚拟表,它可以包含一个表的所有行或从一个或多个表中选择的行。这些使我们只能看到有限的数据,而不是存储在表格中的完整信息。可以从一个或多个基表(创建视图的表)创建视图我们可以对视图执行各种操作,例如创建、更新和删除视图。在这里,我们将主要关注删除或删除视图。让我们试着借助一个例子来理解它,如下所示:

为了理解DROP VIEW语句,我们将采用一个名为“Students”的示例表,如下所示:

学生桌

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 语句,我们需要先创建一个视图,我们可以稍后删除/删除。下面是根据存储在“Students”表中的信息创建名为“StudentsView”的视图的语句。

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

输出

学生查看

所以我们已经成功地创建了一个包含原始表中三列(admit_idstu_namebranch)的视图。让我们使用以下语句再创建一个名为“ myview ”的视图,该视图基于 StudentsView:

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

输出

我的看法

由于这个视图是从名为“StudentsView”的第一个视图创建的,因此其他对象依赖于“StudentsView”。现在让我们尝试使用 DROP VIEW 语句删除视图“StudentsView”,如下所示:

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 view_name(如果它仍然存在或已删除)。在这种情况下,如果我们运行以下查询:

SELECT * from myview

然后会出现一个错误,显示myview不存在,因为我们已经删除了“ myview ”。