龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

深入Oracle视图编写的示例(1)(3)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
删除视图 可以删除当前模式中的任何视图;如果要删除其他模式中的视图,必须拥有DROP ANY VIEW系统权限;视图被删除后,该视图的定义会从词典中被删除

删除视图

可以删除当前模式中的任何视图;如果要删除其他模式中的视图,必须拥有DROP ANY VIEW系统权限;视图被删除后,该视图的定义会从词典中被删除,并且在该视图上授予的“权限”也将被删除。视图被删除后,其他引用该视图的视图及存储过程等都会失效。
示例1:drop view vw_test_tab;

查看视,使用数据字典视图     

  1. dba_views――DBA视图描述数据库中的所有视图  
  2. all_views――ALL视图描述用户“可访问的”视图  
  3. user_views――USER视图描述“用户拥有的”视图  
  4. dba_tab_columns――DBA视图描述数据库中的所有视图的列(或表的列)  
  5. all_tab_columns――ALL视图描述用户“可访问的”视图的列(或表的列)  
  6. user_tab_columns――USER视图描述“用户拥有的”视图的列(或表的列)  
  7.          示例1:查询当前方案中所有视图的信息  
  8. desc user_views;  
  9. set long 400;  
  10. select view_name,text  from user_views;  
  11. 示例1:查询当前方案中指定视图(或表)的列名信息  
  12. select * from user_tab_columns where table_name='VW_DEPT';  

在连接视图上执行DML操作

在视图上进行的所有DML操作,最终都会在基表上完成;select 视图没有什么限制,但insert/delete/update有一些限制

在视图上执行DML操作的步骤和原理
第一步:将针对视图的SQL语句与视图的定义语句(保存在数据字典中)“合并”成一条SQL语句
第二步:在内存结构的共享SQL区中“解析”(并优化)合并后的SQL语句
第三步:“执行”SQL语句
示例:假设视图v_emp的定义语句如下:                  

  1. create view v_emp   
  2. as  
  3. select empno,ename,loc  
  4. from employees emp,departments dept  
  5. where emp.deptno=dept.deptno and dept.deptno=10;  
  6. 当用户执行如下查询语句时:  
  7. select ename  from  v_emp  
  8. where empno=9876;  
  9. oracle将把这条SQL语句与视图定义语句“合并”成如下查询语句:  
  10. select  ename    
  11. from employees emp,departments dept  
  12. where emp.deptno=dept.deptno  and dept.deptno=10 
  13. and empno=9876;  

然后,解析(并优化)合并后的查询语句,并执行查询语句

精彩图集

赞助商链接