PostgreSQL – DROP VIEWS 语句
一个视图可以被看作是一个虚拟表,它可以包含一个表的所有行或从一个或多个表中选择的行。这些使我们只能看到有限的数据,而不是存储在表格中的完整信息。可以从一个或多个基表(创建视图的表)创建视图。我们可以对视图执行各种操作,例如创建、更新和删除视图。在这里,我们将主要关注删除或删除视图。让我们试着借助一个例子来理解它,如下所示:
为了理解DROP VIEW语句,我们将采用一个名为“Students”的示例表,如下所示:
DROP VIEW 声明:
顾名思义, DROP VIEW语句从数据库中删除一个视图。基本的 DROP VIEW 语法如下 -
Syntax:
DROP VIEW [IF EXISTS] view_name
[CASCADE | RESTRICT]
现在让我们一一了解上述语法中使用的关键字的含义:
- DROP VIEW关键字用于指定需要删除的视图的名称。
- 顾名思义, IF EXISTS确保仅当存在删除时才删除它。如果我们试图删除一个不存在的视图,那么将使用一个错误。
- view_name只是要删除的视图的名称。
- 如果任何其他对象依赖于该视图,则RESTRICT 不允许删除该视图。它是默认选项。
- 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_id 、 stu_name 、 branch)的视图。让我们使用以下语句再创建一个名为“ 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 ”。