视图总结
来源:互联网 发布:大数据公司被收购 编辑:程序博客网 时间:2024/06/08 19:10
视图是存储的查询定义。
创建视图的语法如下:
Create [OR REPLACE] [FORCE | NOFORCE] VIEW view_name[(alias,alias,...)] AS
select_statement [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY];
其中:OR REPLACE表示在该视图存在的话,将重新创建该视图。
FORCE使用此关键字,则无论基表是否存在,都将创建视图。
NOFORCE这是默认值。如果使用此关键字,则仅当基表存在时才创建视图。
view_name表示要创建视图的名称。
alias指定在视图里面列的名字,名字数目必须与视图所选择的表达式的数目相匹配。
select_statement表示Select语句。
WITH CHECK OPTION此选项指定只能插入或更新视图可以访问的行。术语constraint表示为CHECK OPTION约束指定的名称。
WITH READ ONLY此选项确保不能在此视图上执行任何修改操作。
示例7:演示创建一个名为ven_view的视图,该视图与vendor_master表具有相同的结构。
Create VIEW ven_view AS select * from vendor_master;
视图中的ORDER BY子句:以便在查询视图时即使不使用Order By子句,结果集也会按指定的顺序排列行。
示例8:Create OR REPLACE VIEW ven_view(编号,日期) AS select orderno,odate from vendor_master order by venname;
创建带有错误的视图:使用FORCE选项
在以下情况下,Oracle也会创建视图:
视力定义的查询引用了一个不存在的表;视图定义的查询引用了现有表中无效的列;视图的所有者没有所需的权限。
示例9:下面创建一个基于venmast的视图。但数据库中并不存在名为"venmast"的表。
Create FORCE VIEW ven AS select * from venmast;
如果稍后创建名为venmast的表,可以使用ALTER VIEW ven COMPILE;
联接视图:
示例:演示如何创建联接视图
Create OR REPLACE VIEW ven_ord_view AS select vm.vencode,venname,orderno,odate,ostatus
from vendor_master vm,order_master om where vm.vencode=om.vencode;
键保留表:在联接视图中,如果视图包含了一个表的主键,并且也是这个视图的主键,则这个键被保留,则这个表被称为键保留表。
ven_ord_view视图以vendor_master和order_master这两个表为基表。order_master表被视为键保留表,因为orderno既是order_master表
的主键,也是视图的主键。而vendor_master表不被视为键保留表,因为vendor_master表的主键vencode是联接字段,不是视图的主键。
示例10:此示例成功修改了记录,因为odate列属于键保留表order_master。对于非键保留表vendor_master的venname列的更新则是不允许的。
update wen_ord_view odate=odate+1 where vencode='V003'; 注意:运行此示例时,必须确保基表的主键已正确创建。
可以查询字典视图User_Updateble_Columns来查看联接视图中可更新的列。
可以查询字典视图User_Views来查看用户所创建的视图信息。
视图中的函数:视图可以使用单行函数(由数字、字符、日期组成)、分组函数和表达式。
示例11:此示例用UPPER函数创建视图,注意使用函数或表达式时,应赋予列一个别名。
Create VIEW vendor_master_view AS select vencode,UPPER(venname) vendor_name from vendor_master;
删除视图语法:Drop VIEW view_name ;
0 0
- 视图总结
- 视图总结
- oracle系统视图总结
- oracle 物化视图 总结
- 视图索引总结
- mysql视图学习总结
- 视图切换总结
- MV/D视图总结
- 视图切换总结
- mysql视图学习总结
- UML视图总结
- oracle视图总结(转)
- oracle视图总结
- mysql视图学习总结
- mysql视图学习总结
- 物化视图权限总结
- oracle视图总结
- SQL SERVER视图总结
- Visual Basic 总结
- 有关指针(1)
- Android Studio导入SlidingMenu库
- hdu1241油田
- webdriver+python 对三大浏览器的支持
- 视图总结
- 2063. 【2016.10.4NOIP普及模拟】Exam
- 一个菜鸟java码农的成长之路(4):用LinkedList模拟栈结构
- 关于AXIS1.4实现webservice接口部署的基础实例
- 【NOIP2012模拟10.6】购买
- KMP
- 索引总结
- 《算法竞赛入门经典》第三章(蛇形填数)
- 从宏观到微观理解coding