首批通过分布式安全可靠测评,为关键业务系统打造
管理视图
更新时间:2026-07-15 22:01:30
本节主要介绍如何创建、修改和删除视图。
视图用来展示表的查询结果。大部分能使用表的地方,都可以使用视图。如果经常访问的数据分布在多个表里时,使用视图是最好的方法。
创建普通视图
您可以使用 CREATE VIEW 语句来创建普通视图。创建后,可以对该视图执行 DML 语句。
Oracle 模式下,创建视图的 SQL 语法如下:
create_view_stmt:
CREATE [OR REPLACE] [[NO] FORCE] VIEW view_name [(column_name_list)] AS select_stmt;
column_name_list:
column_name [, column_name ...]
其中:
OR REPLACE:表示如果要创建的视图名称已存在,则使用新的定义重新创建视图。select_stmt:定义视图的SELECT语句,该语句中的信息可以从基表或其他视图中选取。[NO] FORCE:如果创建视图时,不希望考虑该视图是否存在基表或存在引用的对象类型,以及视图所在 Schema 的所有者是否具有权限时,则需要指定FORCE。如果已确认基表存在且视图所在 Schema 的所有者具有权限,则可以指定
NO FORCE。默认为NO FORCE。column_name_list:与基表一样,视图必须具有唯一的列名,不能重复。缺省情况下,由SELECT语句检索的列名将用作视图列名。如果想为视图列定义明确的名称,可使用可选的
column_name_list子句,ID 之间使用逗号分隔。column_name_list中的名称数目必须等于SELECT语句检索的列数。SELECT语句检索的列可以是对表列的简单引用。也可以是使用函数、常量值、运算符等的表达式。
示例:
选择表 tbl1 中的 col1、col2 列来创建视图 view1。
obclient> CREATE OR REPLACE FORCE VIEW view1(vcol1, vcol2) AS SELECT col1, col2 FROM tbl1;
Query OK, 0 rows affected
修改普通视图
您可以使用 CREATE OR REPLACE VIEW 语句来对普通视图进行修改。
示例:修改视图 stock_item。
obclient> CREATE OR REPLACE VIEW stock_item
AS
SELECT /*+ leading(s) use_merge(i) */
i_price, i_name, i_data, s_i_id, s_w_id, s_order_cnt, s_ytd, s_remote_cnt, s_quantity, s_data, s_dist_01, s_dist_02, s_dist_03, s_dist_04, s_dist_05, s_dist_06, s_dist_07, s_dist_08, s_dist_09, s_dist_10
FROM stok s, item i
WHERE s.s_i_id = i.i_id;
Query OK, 0 rows affected (0.02 sec)
删除视图
您可以使用 DROP VIEW 语句删除一个或多个视图,删除视图并不会删除视图所引用的表。
如果当前视图被其他视图所引用,则被依赖视图删除后将会导致依赖当前视图的其他视图的查询失败。
删除视图时,需确保当前用户具备该视图的 DROP 权限。
Oracle 模式下,删除视图的 SQL 语法如下:
obclient>DROP VIEW view_name;
示例:删除视图 v1。
obclient> DROP VIEW v1;