Oracle数据库中视图的创建
视图:视图是虚拟的表,它依赖于数据库中已有的表,这些表被称为基表
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语句层次的封装,可以用来简化数据处理以及格式化基础数据或保护基础数据。