欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle数据库中视图的创建

程序员文章站 2022-03-03 20:01:25
...

视图:视图是虚拟的表,它依赖于数据库中已有的表,这些表被称为基表

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
[(alias[, alias]...)]
AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY]

其中:

OR REPLACE :若所创建的试图已经存在,ORACLE自动重建该视图;

FORCE   :不管基表是否存在ORACLE都会自动创建该视图;

NOFORCE  :只有基表都存在ORACLE才会创建该视图:

alias  :为视图产生的列定义的别名;

subquery  :一条完整的SELECT语句,可以在该语句中定义别名;

WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束;

WITH READ ONLY : 该视图上不能进行任何DML操作。
 

举例如下:

create or replace view proudectcustomers
as
select cust_name,cust_contact,prod_id
from customers,orders,orderitems
where customers.cust_id=orders.cust_id
and orderitems.order_num=orders.order_num

分析:

        这条语句创建了一个名为prouductcustemers的视图,它联结三个表,以返回已订购任意产品的所有客户的列表。如果执行语句select * from  prouductcustomers,将列出订购了任意产品的客户 。

删除视图:drop  view  视图名 

视图的优点

1、简化复杂的SQL操作

2、使用表的组成部分并不是整个表

3、保护数据。可以根据需要给与用户相应的权限

4、更改数据的格式和表示方式。视图可以返回与底层格式和表示方式不同的数据

 视图的规则和限制:

下面是视图创建时一些常见的规则和限制

 1、与表名一样,视图必须唯一

  2、对于创建的视图数目没有限制

  3、创建视图,必须具有足够的权限

  4、视图可以嵌套

  5、order by 可以在视图中,但是如果从该视图检索数据的select语句中也含有order by ,那该视图中的order by将被覆盖

  6、视图不能索引,也不能有关联的触发器或默认值

   7、视图可以和表一起用。例如,编写一条联结表和视图的select语句

 小结:

      视图为虚拟的表。他们包含的不是数据而是根据需要检索数据的查询。视图提供了select语句层次的封装,可以用来简化数据处理以及格式化基础数据或保护基础数据。