本节主要介绍如何创建、修改和删除视图。

视图用来展示表的查询结果。大部分能使用表的地方,都可以使用视图。如果经常访问的数据分布在多个表里时,使用视图是最好的方法。

创建视图

您可以使用 CREATE VIEW 语句来创建视图。

示例:创建视图 stock_item。该视图内容取自 stock 和 item 两张表,两张表做表连接即可得到该视图。

  1. obclient> CREATE VIEW stock_item
  2. AS
  3. SELECT /*+ leading(s) use_merge(i) */
  4. 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
  5. FROM stok s, item i
  6. WHERE s.s_i_id = i.i_id;
  7. Query OK, 0 rows affected (0.01 sec)

修改视图

您可以使用 CREATE OR REPLACE VIEW 语句来对视图进行修改。

示例:修改视图 stock_item。

  1. obclient> CREATE OR REPLACE VIEW stock_item
  2. AS
  3. SELECT /*+ leading(s) use_merge(i) */
  4. 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
  5. FROM stok s, item i
  6. WHERE s.s_i_id = i.i_id;
  7. Query OK, 0 rows affected (0.02 sec)

删除视图

您可以使用 DROP VIEW 语句删除一个或多个视图,删除视图并不会删除视图引用的表。

如果当前视图被其他视图所引用,则视图删除后将会导致依赖当前视图的其他视图的查询失败。

删除视图时,需确保当前用户具备该视图的 DROP 权限。

示例:删除视图 V1。

  1. obclient> DROP VIEW V1;