ORACLE数据库管理系统的逻辑组成.ppt_第1页
ORACLE数据库管理系统的逻辑组成.ppt_第2页
ORACLE数据库管理系统的逻辑组成.ppt_第3页
ORACLE数据库管理系统的逻辑组成.ppt_第4页
ORACLE数据库管理系统的逻辑组成.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle数据库管理系统的逻辑结构,Owner:庞家进,Oracle逻辑结构(用户层),Oracle视图(View),1,Oracle表(Table),2,Oracle索引(Index),3,Oracle序数(Sequence),4,Oracle视图(View),查看视图信息使用数据字典视图dba_viewsDBA视图描述数据库中的所有视图all_viewsALL视图描述用户“可访问的”视图user_viewsUSER视图描述“用户拥有的”视图dba_tab_columnsDBA视图描述数据库中的所有视图的列(或表的列)all_tab_columnsALL视图描述用户“可访问的”视图的列(或表的列)user_tab_columnsUSER视图描述“用户拥有的”视图的列(或表的列)dba_updatable_columns显示数据库所有视图中的所有列的可更新状态all_updatable_columns显示用户可访问的视图中的所有列的可更新状态user_updatable_columns显示用户拥有的视图中的所有列的可更新状态,Oracle视图(View),创建视图完整语法:createorreplaceforceviewschema.view_name(column1,column2,.)asselect.withcheckoptionconstraintconstraint_namewithreadonly;例子:createviewvw_emp_checkasselectempno,ename,job,hiredate,deptnofromempwheredeptno=10withcheckoptionconstraintvw_emp_chk;-创建检查视图:对通过视图进行的增删改操作进行检查,要求增删改操作的数据必须是select查询所能查询到的数据。,Oracle视图(View),orreplace:如果存在同名的视图,则使用新视图替代已有的视图force:强制创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限column1,column2,.:视图的列名,列名的个数必须与select查询中列的个数相同;如果select查询包含函数或表达式,则必须为其定义列名.此时,既可以用column1,column2指定列名,也可以在select查询中指定列名.withcheckoption:指定对视图执行的DML操作必须满足“视图子查询”的条件即,对通过视图进行的增删改操作进行检查,要求增删改操作的数据,必须是select查询所能查询到的数据,否则不允许操作并返回错误提示.默认情况下,在增删改之前并不会检查这些行是否能被select查询检索到.constraintconstraint_name定义约束的名字withreadonly:创建的视图只能用于查询数据,而不能用于更改数据.与withcheckoption是排斥的,Oracle视图(View),1.3删除视图可以删除当前模式中的任何视图;如果要删除其他模式中的视图,必须拥有DROPANYVIEW系统权限;视图被删除后,该视图的定义会从词典中被删除,并且在该视图上授予的“权限”也将被删除。视图被删除后,其他引用该视图的视图及存储过程等都会失效。示例1:dropviewvw_test_tab;,Oracle视图(View),视图的重新编译语法:alterview视图名compile;作用:当视图依赖的基表改变后,视图会“失效”。为了确保这种改变“不影响”视图和依赖于该视图的其他对象,应该使用alterview语句“明确的重新编译”该视图,从而在运行视图前发现重新编译的错误。视图被重新编译后,若发现错误,则依赖该视图的对象也会失效;若没有错误,视图会变为“有效”。权限:为了重新编译其他模式中的视图,必须拥有alteranytable系统权限。注意:当访问基表改变后的视图时,oracle会“自动重新编译”这些视图。例子:altertabletest_tabmodify(c2varchar2(30);修改c2列的长度selectlast_ddl_time,object_name,statusfromuser_objectswhereobject_name=V_TEST_TAB;视图的状态:失效,Oracle视图(View),在视图上执行DML操作的步骤和原理第一步:将针对视图的SQL语句与视图的定义语句(保存在数据字典中)“合并”成一条SQL语句第二步:在内存结构的共享SQL区中“解析”(并优化)合并后的SQL语句第三步:“执行”SQL语句示例:createviewv_empasselectempno,ename,locfromemployeesemp,departmentsdeptwhereemp.deptno=dept.deptnoanddept.deptno=10;当用户执行如下查询语句时:selectenamefromv_empwhereempno=9876;oracle将把这条SQL语句与视图定义语句“合并”成如下查询语句:selectenamefromemployeesemp,departmentsdeptwhereemp.deptno=dept.deptnoanddept.deptno=10andempno=9876;然后,解析(并优化)合并后的查询语句,并执行查询语句,Oracle视图(View),如果创建连接视图的select查询“不包含”如下结构,并且遵守连接视图的“更新准则”,则这样的连接视图是“可更新”的:之一:集合运算符(union,intersect,minus)之二:DISTINCT关键字之三:GROUPBY,ORDERBY,CONNECTBY或STARTWITH子句之四:子查询之五:分组函数之六:需要更新的列不是由“列表达式”定义的之七:基表中所有NOTNULL列均属于该视图,Oracle视图(View),连接视图的更新准则insert准则:在insert语句中不能使用“非键值保存表”中的列(包括“连接列”);执行insert操作的视图,至少应该“包含”键值保存表中所有设置了约束的列如果在定义连接视图时使用了WITHCHECKOPTION选项,则“不能”针对连接视图执行insert操作update准则键值保存表中的列是可以更新的;如果在定义连接视图时使用了WITHCHECKOPTION选项,则连接视图中的连接列(一般就是“共有列”)和基表中的“其他共有列”是“不可”更新的,连接列和共有列之外的其他列是“可以”更新的delete准则如果在定义连接视图时使用了WITHCHECKOPTION选项,依然“可以”针对连接视图执行delete操作如果连接视图中的一个“基表的键”(主键、唯一键)在它的视图中仍然存在,并且“基表的键”仍然是“连接视图中的键”(主键、唯一键);即,某列在基表中是主键|唯一键,在视图中仍然是主键|唯一键则称这个基表为“键值保存表”。,Oracle表(Table),数字字典(user_objects)dba_tablesUser_tablesall_tablesdba_tab_columnsuser_tab_columnsall_tab_columns,Oracle表(Table),数据表的介绍数据表是数据库中一个非常重要的对象,是其他对象的基础。没有数据表,关键字、主键、索引等也就无从谈起。在数据库画板中可以显示数据库中的所有数据表,创建数据表,修改表的定义等数据表是数据库中一个非常重要的对象,是其他对象的基础。数据表(或称表)是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。根据信息的分类情况,一个数据库中可能包含若干个数据表。数据表是用行(字段)和列(属性)构成的一张二维表。,Oracle表(Table),一般方式创建表表名最大长度为30个字符。在同一个用户下(同一个数据库),表不能重名,但不同用户表的名称可以相重。另外,表的名称不能使用Oracle的保留字。在一张表中最多可以包含2000列。语法:CREATETABLE表名(列名数据类型DEFAULT表达式COLUMNCONSTRAINT,TABLECONSTRAINT,TABLE_PARTITION_CLAUSE);DEFAULT表达式:用来定义列的默认值。COLUMNCONSTRAINT:用来定义列级的约束条件。TABLECONSTRAINT:用来定义表级的约束条件。TABLE_PARTITION_CLAUSE:定义表的分区子句。,Oracle表(Table),通过子查询创建表如果要创建一个同已有的表结构相同或部分相同的表语法:CREATETABLE表名(列名)ASSQL查询语句;该语法既可以复制表的结构,也可以复制表的内容,并可以为新表命名新的列名。新的列名在表名后的括号中给出,如果省略将采用原来表的列名。复制的内容由查询语句的WHERE条件决定。,Oracle表(Table),表的修改(这些操作都无法回滚)改表名:altertable当前表名renameto新表名;改列名:altertable表名renamecolumn当前列名to新列名;增加列:Altertable表名add(columndatatypedefaultexpr,columndatatype.);修改列:Altertabletable_namemodify(column_namedatatypedefaultexpr,columndatatype.);删除列:Altertabletable_namedropcolumncolumn_name;,Oracle表(Table),删除已创建的表语法如下:DROPTABLE表名CASCADECONSTRAINTS;表的删除者必须是表的创建者或具有DROPANYTABLE权限。CASCADECONSTRAINTS表示当要删除的表被其他表参照时,删除参照此表的约束条件。,Oracle表(Table)的补充,oracle数据类型,Oracle表(Table)的补充,oracle数据类型字符型charnchar(都是2000字节)定长,速度快,占空间大,需处理varchar2nvarchar2varchar(都是4000字节)不定长,空间小,速度慢,无需处理格式如下char(sizebyte|char)nchar(size);无n开头的系统默认为byte单位,有n开头的不用指定byte或者char,其一定是char的。char和nchar为固定长度(自己设定的那个)不够则用空格补充,最多可以存储2000字节(是字符,也不是汉字,注意转化后的值)。varchar2nvarchar2varchar为变长字符串类型,不用空格补充,最多可以储存4000字节(varchar尽量不用,oracle可能把他废弃)有n开头(nchar,nvarchar2)两种数据类型用于包含unicode格式的字符串,其采用国家字符来储存和管理,而不是默认的字符集。长度总是字符数,而没有n肯能会指定字节还是字符,Oracle表(Table)的补充,oracle数据类型数值类型number(precision,scale)precision:精度,也称为总位数,取值为138默认为38,也可以用*表示number(5,-2)可以存储1234567其为1234600,number(5,10)可以储存.0000scale:小数位数,也称小数右边的位数,合法值为-48127,默认取值取决于是否指定了精度如果精度没有指定这默认为最大的取值区间,如果指定这默认为0,number类型是一中变长格式,长度为022字节每增加两位数字就增加一个自己的储存空间,Oracle表(Table)的补充,Oracle其他一些数据类型DATE日期和时间类型LOB超长字符,最大可达4GCLOB超长文本字符串BLOB超长二进制字符串BFILE超长二进制字符串,保存在数据库外的文件里是只读的.默认值:DEFAULTSYSDATE-加当前时间default默认值default1-加上一个默认数值,Oracle表(Table)的补充,oracle约束数字字典(user_constraints,user_cons_columns)primarykeynotnulluniqueForeignkeycheck():如constraint名字check(列100)格式:列级在列定义后面加上这些语句表级:在表的后面加上。如constraint名字unique(列名字,可以多个)constraintxxx_fkforeignkey(该表的某个列名)references某表(某列),Oracle表(Table)的补充,约束的修改altertable语句对约束进行修改:可以添加或者删除,但是不能修改有效化和无效化约束添加notnull约束时要用modify语句如:altertableemployeesaddconstraintemp_manager_fkforeignkey(manager_id)referenstable(column)altertableemployeesdropconstraintemp_manager_fk可以使用cascadealtertableemployeesdropprimarykeycascade,Oracle索引(Index),Index常用的数据字典User_indexes-可以获取有关用户已创建的索引的详细信息。User_ind_partitions-可以获取有关用户已创建的分区索引的详细信息User_ind_columns-获取有关列(用户的索引是基于这些列创建的)的详细信息其外还有all_indexesall_ind_partitionsall_ind_columnsdba_indexesdba_ind_partitionsdba_ind_columns,Oracle索引(Index),索引目标是为了提高查询的速度,当用户对查询速度不满意而需要对数据库的性能进行调校时,优先考虑建立索引。数据库中索引的概念与书索引的概念非常类似,不同之处在于数据库索引用来在表中查找特定的行。索引缺点:向表中“添加/删除”行时,必须花费额外的时间来更新该行的索引。创建索引的时机:当需要从大表中检索少数几行时,都应该对列创建索引。基本准则:当任何单个查询要检索的行alterdatabasedefaulttemporarytablespacekong4;设置表空间kong4为默认临时表空间。#建立数据文件数据文件或临时文件可以和表空间一起创建。SQLcreatetablespacesmallfiledatafiled:oralceoradataxqsmallfile01.dbfsize10M创建一个表空间可以用reuse子句重用已存在的数据文件,重用时可以省略size子句,如果指定size必须和已有数据文件大小一样SQLcreatetemporarytablespacetempfile创建一个临时数据文件tempfiled:oracleoradataxqtempfile01.dbfsize10Mextentmangementlocal本地管理注意:临时文件总是nologging模式,并且不可恢复,临时文件不能readonly,不能rena

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论