DROP VIEW

说明

视图的删除

语法

drop_view ::=

参数

schema

视图所在的模式,缺省为当前模式。

viewname

要删除的视图名。

RESTRICT|CASCADE

  • RESTRICT确保只有不存在依赖关系或完整性约束的视图可以被删除。
  • CASCADE强制删除视图,并删除任何与本视图有依赖性的数据库对象。

默认为RESTRICT

注解

执行DROP VIEW语句的用户必须是该视图的创建者,或者是DBA。

示例

示例1: 删除视图

--  清理环境
DROP VIEW view1 CASCADE;
DROP TABLE tab1 CASCADE;

--  创建表并插入数据
CREATE TABLE tab1 (a INT);

INSERT INTO tab1 VALUES (100);
INSERT INTO tab1 VALUES (200);
INSERT INTO tab1 VALUES (300);


SELECT * FROM tab1 ORDER BY a;
A(int)      |
------------
100         |
------------
200         |
------------
300         |
总数目:3

--  创建视图
CREATE VIEW view1 AS SELECT * FROM tab1 ORDER BY a;


--  查询视图
SELECT * FROM view1;
A(int)      |
------------
100         |
------------
200         |
------------
300         |
总数目:3

--  删除视图
DROP VIEW view1;


--  删除表
DROP TABLE tab1;

示例2: 级联删除视图

--  清理环境
DROP VIEW view3 CASCADE;
DROP VIEW view2 CASCADE;
DROP TABLE tab1 CASCADE;

--  创建表并插入数据
CREATE TABLE tab2 (a INT);

INSERT INTO tab2 VALUES (100);
INSERT INTO tab2 VALUES (200);
INSERT INTO tab2 VALUES (300);


SELECT * FROM tab2 ORDER BY a;
A(int)      |
------------
100         |
------------
200         |
------------
300         |
总数目:3

--  创建视图
CREATE VIEW view2 AS SELECT * FROM tab2 ORDER BY a;

CREATE VIEW view3 AS SELECT * FROM view2 ORDER BY a;


--  查询视图
SELECT * FROM view2;
A(int)      |
------------
100         |
------------
200         |
------------
300         |
总数目:3


SELECT * FROM view3;
A(int)      |
------------
100         |
------------
200         |
------------
300         |
总数目:3

--  级联删除视图
DROP VIEW view2 CASCADE;

--  view3 已被级联删除,查询报错
SELECT * FROM view3;
ERROR, Relation "VIEW3" does not exist


--  删除表
DROP TABLE tab2;