[TOC] # 管理视图 视图用来展示表的查询结果。大部分能使用表的地方,都可以使用视图。如果经常访问的数据分布在多个表里时,使用视图是最好的方法。 ## 创建视图 您可以使用`CREATE VIEW`语句来创建视图。 示例:创建视图 stock\_item。该视图内容取自 stock 和 item 两张表,两张表做表连接即可得到该视图。 ~~~ obclient> CREATE 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.01 sec) ~~~ ## 修改视图 您可以使用`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 权限。 示例:删除视图 V1。 ~~~ obclient> DROP VIEW V1; ~~~