资源描述:
《oracle数据库管理系统的逻辑组成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Oracle数据库管理系统的逻辑结构Owner:庞家进Oracle逻辑结构(用户层)Oracle视图(View)1Oracle表(Table)2Oracle索引(Index)3Oracle序数(Sequence)4Oracle视图(View)查看视图信息使用数据字典视图dba_views——DBA视图描述数据库中的所有视图all_views——ALL视图描述用户“可访问的”视图user_views——USER视图描述“用户拥有的”视图dba_tab_columns——DBA视图描述数据库中的所有视图的列(或表的列)all_tab_colu
2、mns——ALL视图描述用户“可访问的”视图的列(或表的列)user_tab_columns——USER视图描述“用户拥有的”视图的列(或表的列)dba_updatable_columns——显示数据库所有视图中的所有列的可更新状态all_updatable_columns——显示用户可访问的视图中的所有列的可更新状态user_updatable_columns——显示用户拥有的视图中的所有列的可更新状态Oracle视图(View)创建视图完整语法:create[orreplace][force]view[schema.]view_nam
3、e[(column1,column2,...)]asselect...[withcheckoption][constraintconstraint_name][withreadonly];例子:createviewvw_emp_checkasselectempno,ename,job,hiredate,deptnofromempwheredeptno=10withcheckoptionconstraintvw_emp_chk;--------创建检查视图:对通过视图进行的增删改操作进行检查,要求增删改操作的数据必须是select查询所能查
4、询到的数据。Oracle视图(View)orreplace:如果存在同名的视图,则使用新视图"替代"已有的视图force:"强制"创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限column1,column2,...:视图的列名,列名的个数必须与select查询中列的个数相同;如果select查询包含函数或表达式,则必须为其定义列名.此时,既可以用column1,column2指定列名,也可以在select查询中指定列名.withcheckoption:指定对视图执行的DML操作必须满足“视图子查询”的条件即,对通过视图进行的
5、增删改操作进行"检查",要求增删改操作的数据,必须是select查询所能查询到的数据,否则不允许操作并返回错误提示.默认情况下,在增删改之前"并不会检查"这些行是否能被select查询检索到.constraintconstraint_name定义约束的名字withreadonly:创建的视图只能用于查询数据,而不能用于更改数据.与withcheckoption是排斥的Oracle视图(View)1.3删除视图可以删除当前模式中的任何视图;如果要删除其他模式中的视图,必须拥有DROPANYVIEW系统权限;视图被删除后,该视图的定义会从词典
6、中被删除,并且在该视图上授予的“权限”也将被删除。视图被删除后,其他引用该视图的视图及存储过程等都会失效。示例1:dropviewvw_test_tab;Oracle视图(View)视图的重新编译语法:alterview视图名compile;作用:当视图依赖的基表改变后,视图会“失效”。为了确保这种改变“不影响”视图和依赖于该视图的其他对象,应该使用alterview语句“明确的重新编译”该视图,从而在运行视图前发现重新编译的错误。视图被重新编译后,若发现错误,则依赖该视图的对象也会失效;若没有错误,视图会变为“有效”。权限:为了重新编译
7、其他模式中的视图,必须拥有alteranytable系统权限。注意:当访问基表改变后的视图时,oracle会“自动重新编译”这些视图。例子:altertabletest_tabmodify(c2varchar2(30));——修改c2列的长度selectlast_ddl_time,object_name,statusfromuser_objectswhereobject_name='V_TEST_TAB';——视图的状态:失效Oracle视图(View)在视图上执行DML操作的步骤和原理第一步:将针对视图的SQL语句与视图的定义语句(保存
8、在数据字典中)“合并”成一条SQL语句第二步:在内存结构的共享SQL区中“解析”(并优化)合并后的SQL语句第三步:“执行”SQL语句示例:createviewv_empasselectemp