您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle数据库开发实用教程第八章分析
Oracle11g实用教程第八章模式对象内容概要模式1表2索引和索引化表3分区表和分区索引4视图、序列、同义词、簇5模式模式概念模式选择与切换模式对象类型模式概念是指一系列逻辑数据结构或对象的集合。模式与用户的关系模式与用户相对应,一个模式只能被一个数据库用户所拥有,并且模式的名称与这个用户的名称相同。通常情况下,用户所创建数据库对象都保存在与自己同名的模式中。同一模式中数据库对象的名称必须惟一,而在不同模式中的数据库对象可以同名。默认情况下,用户引用的对象是与自己同名模式中的对象,如果要引用其他模式中的对象,需要在该对象名之前指明对象所属模式。模式选择与切换如果用户以NORMAL身份登录,则进入同名模式;若以SYSDBA身份登录,则进入SYS模式;如果以SYSOPER身份登录,则进入PUBLIC模式。模式对象类型表:关系数据库中最重要的模式对象。索引:索引为表或簇的每个索引行保存一个入口,并对行提供直接的快速的访问。分区表:是大表或大索引的片段。视图:是一个或多个表或视图中数据的定制表示,可以把视图看成存储的查询或一个虚表,视图并不是真正存储数据的。序列:序列是一种数据库对象,用来自动产生一组唯一的序号。维度:用于定义两个列或两个列集合之间的层次关系。同义词:同义词是一种数据库对象,它是为一个数据库对象定义的别名。PL/SQL子程序和包:PL/SQL是Oracle对SQL过程化的扩展。一个PL/SQL子程序是一个命名的由有一系列参数的PL/SQL块,一个PL/SQL包组逻辑上与PL/SQL类型、变量和子程序相关。表表的概念表的管理利用OEM管理表表的概念表是Oracle数据库中的数据组织的基本单元,表中的一行对应于一条记录,表中的一列描述了一个实体的属性用户可以为一个表的各列数据的值设定规则。这些规则被称为完整性约束表的分类关系表:是基本的表结构,以行和列的形式存储数据对象表:使用对象类型为列定义,用于保存一个特定类型的对象实例根据表生存周期的不同,表可以分为永久性表和临时表;对于关系表,根据表中数据组织方式的不同,可分为标准表、索引化表、分区表及外部表等表的管理表的创建表的删除表的修改表约束的管理表存储空间的管理创建表CREATETABLEtable_name(COLUMN1datatype[defaultexp][column_level_constraint][,COLUMN2datatype[defaultexp][column_level_constraint]]...[CONSTRAINTtable_level_constraint])[PCTFREEn][PCTUSEDn][STORAGEn][TABLESPACEtbs][ENABLE|DISABLE][ASQUERY];CREATETABLEemployee(empnoNUMBER(5)PRIMARYKEY,enameVARCHAR2(15),deptnoNUMBER(3)NOTNULLCONSTRAINTfk_empREFERENCESdept)TABLESPACEUSERSPCTFREE10PCTUSED40STORAGE(INITIAL50KNEXT50KMAXEXTENTS10PCTINCREASE25);table_name:表名必须是合法标识符,长度为1~30字节,并且以字母开头,可以包含字母(A~Z,a~z)、数字(0~9),下划线(_)、美元符号($)和井号(#)。此外,表名称不能是Oracle数据库的保留字datatype:列的数据类型字符类型数字类型日期类型大对象类型其他类型CHAR(n)定长字符串,n的取值范围为1-2000字节VARCHAR2(n)可变字符串,n取值范围为1-4000字节自动调整数据长度NCHAR(n)用来存储Unicode类型字符串。NVARCHAR2(n)它用来存储Unicode类型字符串。LONG可变长字符列,最大长度为2GB用于不需设置成索引的字符,不常用字符类型数字数据类型NUMBER(m,n)可变长的数值列,m是所有有效数字的位数,n为小数点后的位数日期数据类型DATE公元前4712年1月1日到公元4712年1月1日默认格式:DD-MON-YY习惯格式:YYYY-MM-DDHH:MM:SS大对象数据类型BLOB、CLOB、NCLOB用来保存较大的图形文件或带格式的文本文件、音频和视频等非文本文件最大长度4GBBFILE在数据库外部保存的大型二进制对象文件。不能写,只能读、查询大小有操作系统决定其他数据类型RAW(n)可变长二进制数据保存较小的图形文件或带格式的文本文件N取1-2000字节LONGRAW可变长二进制数据保存较大的图形文件或带格式的文本文件N取2GB字节ROWIDUROWIDdefault:设定列的默认值约束(constraint)在Oracle数据库中对列的约束包括主键约束、惟一性约束、检查约束、外键约束和空/非空约束等5中,定义方法有表级约束和列级约束2种。PCTFREE:用于指定数据块中必须保留的最小空闲空间。PCTUSED:用于指定当数据块空闲空间达到PCTFREE参数的限制后,数据块能够被再次使用前,已占用的存储空间必须低于的比例。TABLESPACE:指定该表所在的表空间STORAGE:存储分配参数。ASQUERY:可以利用子查询创建表。创建临时表临时表中的数据在特定条件下自动释放,但其结构将一直存在。临时表中的数据只在当前会话或当前事务中是有效的。根据临时表中数据被释放的时间不同,临时表分为事务级别的临时表和会话级别的临时表两类。ONCOMMITDELETEROWS//事务级临时表ONCOMMITPRESERVEROWS//会话级临时表事务级别的临时表是在事务提交时系统自动删除表中所有记录。CREATEGLOBALTEMPORARYTABLEtran_temp(IDNUMBER(2)PRIMARYKEY,nameVARCHAR2(20))ONCOMMITDELETEROWS;会话级别的临时表是在会话终止时系统自动删除表中所有记录。CREATEGLOBALTEMPORARYTABLEsess_temp(IDNUMBER(2)PRIMARYKEY,nameVARCHAR2(20))ONCOMMITPRESERVEROWS;利用子查询创建表语法CREATETABLEtable_name(column_name[column_level_constraint][,column_name[column_level_constraint]…][,table_level_constraint])[parameter_list]ASsubquery;注意通过该方法创建表时,可以修改表中列的名称,但是不能修改列的数据类型和长度;源表中的约束条件和列的缺省值都不会复制到新表中;子查询中不能包含LOB类型和LONG类型列;当子查询条件为真时,新表中包含查询到的数据;当查询条件为假时,则创建一个空表。创建一个表,保存工资高于3000的员工的员工号、员工名和部门号。语句为:CREATETABLEemp_select(emp_no,emp_name,dept_no)ASSELECTempno,ename,deptnoFROMempWHEREsal3000;表约束约束的类别定义约束添加和删除约束设置约束状态约束的延迟检查查询约束信息约束的类别约束作用是在表中定义的用于维护数据库完整性的一些规则。通过对表中列定义约束,可以防止在执行DML操作时,将不符合要求的数据插入到表中。约束类型PRIMARYKEYUNIQUECHECKFOREIGNKEYNULL/NOTNULLPRIMARYKEY特点定义主键,起惟一标识作用,其值不能为NULL,也不能重复;一个表中只能定义一个主键约束;建立主键约束的同时,在该列上建立一个惟一性索引,可以为它指定存储位置和存储参数;主键约束可以是列级约束,也可以是表级约束。UNIQUE特点定义为惟一性约束的某一列或多个列的组合的取值必须惟一;如果某一列或多个列仅定义惟一性约束,而没有定义非空约束,则该约束列可以包含多个空值;Oracle自动在惟一性约束列上建立一个惟一性索引,可以为它指定存储位置和存储参数;惟一性约束可以是列级约束,也可以是表级约束。在一个基本表中只能定义一个PRIMARYKEY约束,但可定义多个UNIQUE约束;对于指定为PRIMARYKEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARYKEY约束。PRIMARYKEY与UNIQUE比较CHECK特点检查约束用来限制列值所允许的取值范围,其表达式中必须引用相应列,并且表达式的计算结果必须是一个布尔值;约束表达式中不能包含子查询,也不能包含SYSDATE、USER等SQL函数,和ROWID、ROWNUM等伪列;一个列可以定义多个检查约束;检查约束可以是列级约束,也可以是表级约束。概念FOREIGNKEY约束指定某一个列或一组列作为外部键,其中,包含外部键的表称为从表,包含外部键所引用的主键或唯一键的表称主表。系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。FOREIGNKEYFOREIGNKEY特点定义外键约束的列的取值要么是主表参照列的值,要么为空;外键列只能参照于主表中的主键约束列或惟一性约束列;可以在一列或多列组合上定义外键约束;外键约束可以是列级约束,也可以是表级约束。NULL/NOTNULL特点在同一个表中可以定义多个NOTNULL约束;只能是列级约束。定义约束列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中。通常用于对多个列一起进行约束,与列定义用’,’分隔。定义表约束时必须指出要约束的那些列的名称。定义列级约束的语法为:[CONSTRAINTconstraint_name]constraint_type[conditioin];定义表级约束的语法为:[CONSTRAINTconstraint_name]constraint_type([column1_name,column2_name,…]|[condition]);注意Oracle约束通过名称进行标识。在定义时可以通过CONSTRAINT关键字为约束命名。如果用户没有为约束命名,Oracle将自动为约束命名。SQLCREATETABLEgoods(gidCHAR(8)CONSTRAINTG_PKPRIMARYKEY,gnamevarchar2(50)NOTNULL,unitpriceNUMBER(10,2)CONSTRAINTG_CK1CHECK(unitprice0),categoryVARCHAR(30),providerVARCHAR(100));SQLCREATETABLEcustomers(customeridCHAR(8)PRIMARYKEY,nameVARCHAR2(30)NOTNULL,genderCHAR(2)default('男')check(Genderin('男','女')),cardIdCHAR(18),addressVARCHAR2(150),emailVARCHAR2(100)UNIQUEUSINGINDEXTABLESPACEindxSTORAGE(INITI
本文标题:Oracle数据库开发实用教程第八章分析
链接地址:https://www.777doc.com/doc-3876525 .html