chap10_Oracle模式对象_第1页
chap10_Oracle模式对象_第2页
chap10_Oracle模式对象_第3页
chap10_Oracle模式对象_第4页
chap10_Oracle模式对象_第5页
已阅读5页,还剩220页未读 继续免费阅读

下载本文档

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

文档简介

1、 Oracle数据库应用教程第10章 模式对象 Oracle数据库应用教程本章内容本章内容p10.1项目导入规划人力资源管理系统数据库对象p10.2模式p10.3表p10.4索引p10.5索引化表p10.6分区表与分区索引p10.7视图p10.8其他模式对象 Oracle数据库应用教程本章要求本章要求p掌握表的管理p掌握索引的管理p掌握索引化表的概念及其管理p掌握分区的概念及分区管理p掌握视图的概念及其管理p了解簇、序列、同义词、数据库链接等的管理 Oracle数据库应用教程10.1项目导入项目导入规划人力资源管理规划人力资源管理系统数据库对象系统数据库对象p创建关系表p创建约束p创建索引p创

2、建视图p创建序列 Oracle数据库应用教程10.2模式模式p模式概念p模式与用户的关系p模式选择与切换 Oracle数据库应用教程p模式概念n是指一系列逻辑数据结构或对象的集合。是指一系列逻辑数据结构或对象的集合。 p模式与用户的关系n模式与用户相对应,一个模式只能被一个数据库用户模式与用户相对应,一个模式只能被一个数据库用户所拥有,并且模式的名称与这个用户的名称相同。所拥有,并且模式的名称与这个用户的名称相同。n通常情况下,用户所创建数据库对象都保存在与自己通常情况下,用户所创建数据库对象都保存在与自己同名的模式中。同名的模式中。n同一模式中数据库对象的名称必须惟一,而在不同模同一模式中数

3、据库对象的名称必须惟一,而在不同模式中的数据库对象可以同名。式中的数据库对象可以同名。n默认情况下,用户引用的对象是与自己同名模式中的默认情况下,用户引用的对象是与自己同名模式中的对象,如果要引用其他模式中的对象,需要在该对象对象,如果要引用其他模式中的对象,需要在该对象名之前指明对象所属模式。名之前指明对象所属模式。 Oracle数据库应用教程p模式选择与切换n如果用户以NORMAL身份登录,则进入同名模式;n若以SYSDBA身份登录,则进入SYS模式;n如果以SYSOPER身份登录,则进入PUBLIC模式。 Oracle数据库应用教程10.3 表表p创建表p表约束的管理 p表参数设置 p修

4、改表p删除表p利用OEM管理表p人力资源管理系统表和约束的创建 Oracle数据库应用教程10.3.1 创建表创建表p表的创建 p创建临时表 p利用子查询创建表 Oracle数据库应用教程(1)表的创建)表的创建p表的规划与设计n表名称n列的数量n列名称与类型n表约束n表内部数据的组织方式(标准表、索引化表、分区表)n表存储位置、存储空间分配等。 Oracle数据库应用教程p使用CREATE TABLE语句 创建表nCREATE TABLE table_namen(column_name datatype ncolumn_level_constraintn,column_name dataty

5、pe ncolumn_level_constraintn,table_level_constraint) nparameter_list; Oracle数据库应用教程pCREATE TABLE emp ( p emp_id NUMBER(6,0) PRIMARY KEY, pfirst_name VARCHAR2(20), plast_name VARCHAR2(25) NOT NULL, pemail VARCHAR2(25) NOT NULL, pjob_id VARCHAR2(10) NOT NULL, psalary NUMBER(8,2) CHECK(salary0), pcommi

6、ssion_pct NUMBER(2,2), pmanager_id NUMBER(6,0), pdepartment_id NUMBER(4,0)p) p TABLESPACE USERS; Oracle数据库应用教程p表名(table_name)n必须是合法标识符,长度为130 字节,并且以字母开头,可以包含字母(AZ,az)、数字(010),下划线(_)、美元符号($)和井号(#)。此外,表名称不能是Oracle数据库的保留字 p数据类型(datatype) n字符类型n数字类型n日期类型nLOB类型n二进制类型 n行类型 Oracle数据库应用教程pCHAR(n)n定长字符串,n的取值

7、范围为1-2000字节pVARCHAR2(n)n可变字符串,n取值范围为1-4000字节n自动调整数据长度pNCHAR(n)n用来存储Unicode类型字符串。pNVARCHAR2(n) n它用来存储Unicode类型字符串。pLONGn可变长字符列,最大长度为2GBn用于不需设置成索引的字符,不常用字符类型字符类型 Oracle数据库应用教程数字类型数字类型pNUMBER(m,n)n用于存储整数和实数。m表示数值的总位数(精度),取值范围为138,默认为38;n表示小数位数,若为负数则表示把数据向小数点左边舍入,默认值为0。 Oracle数据库应用教程日期类型日期类型pDATEn可以存储的日

8、期范围为公元前4712年1月1日到公元4712年1月1日,由世纪、年、月、日、时、分、秒组成。可以在用户当前会话中使用参数NLS_DATE_FORMAT指定日期和时间的格式,或者使用TO_DATE函数,将表示日期和时间的字符串按特定格式转换成日期和时间。pTIMESTAMP(n):表示时间戳,是DATE 数据类型的扩展,允许存储小数形式的秒值。n表示秒的小数位数,取值范围为110,默认值为6。pTIMESTAMP(n) WITH TIME ZONE:通过存储一个时区偏差来扩展TIMESTAMP类型。 时区偏差值为相对于通用协调时间(或称UTC,以前称为格林威治时间或GMT)的时差。 Oracl

9、e数据库应用教程pTIMESTAMP(n) WITH LOCAL TIME ZONEn与TIMESTAMP(n) WITH TIME ZONE的不同之处在于,存储日期时直接转换为数据库时区日期,而读取日期时将数据库时区日期转换为用户会话时区日期。pINTERVAL YEAR(n) TO MONTHn存储以年份和月份表示的时间段。n是表示YEAR的最多数字位数,默认为2。例如,INTERVAL 2-11 YEAR TO MONTH表示2年11个月。pINTERVAL DAY(m) TO SECOND(n)n存储以天数、小时数、分钟数和秒数表示的时间段。m是表示DAY的最多数字位数,默认为2。n是

10、表示SECOND的小数部分的位数,默认为6。例如,INTERVAL 5 10:30:40 DAY TO SECOND表示5天10小时30分40秒。 Oracle数据库应用教程LOB类型类型pCLOBn用于存储可变长度的字符数据,如文本文件等,最大数据量为4 GB。pNCLOBn用于存储可变长度的Unicode字符数据,最大数据量为4 GB。pBLOBn用于存储大型的、未被结构化的可变长度的二进制数据(如二进制文件、图片文件、音频和视频等非文本文件),最大数据量为4 GB。pBFILEn用于存储指向二进制格式文件的定位器,该二进制文件保存在数据库外部的操作系统中,文件最大为4 GB。 Oracl

11、e数据库应用教程二进制类型二进制类型 pRAW(n)n用于存储可变长度的二进制数据,n表示数据长度,取值范围为12000字节;pLONG RAWn用于存储可变长度的二进制数据,最大存储数据量为2 GB。 Oracle数据库应用教程行类型行类型pROWIDn行标识符,表中行的物理地址的伪列类型。ROWID类型数据由18位十六进制数构成,包括对象编号、文件编号、数据块编号和块内行号。pUROWIDn行标识符,用于表示索引化表中行的逻辑地址。 Oracle数据库应用教程p约束(constraint)n在Oracle数据库中对列的约束包括主键约束、惟一性约束、检查约束、外键约束和空/非空约束等5中,定

12、义方法有表级约束和列级约束2种。p参数(parameter_list)n在定义表时,可以通过参数设置表存储在哪一个表空间中,和存储空间分配等。 Oracle数据库应用教程(2)创建临时表)创建临时表 p临时表中的数据在特定条件下自动释放,但其结构将一直存在。p根据临时表中数据被释放的时间不同,临时表分为事务级别的临时表和会话级别的临时表两类。nON COMMIT DELETE ROWS /事务级临时表nON COMMIT PRESERVE ROWS /会话级临时表p语法n使用CREATE GLOBAL TEMPORARY TABLE语句创建临时表n使用ON COMMIT子句说明临时表的类型,默

13、认为事务级别的临时表。 Oracle数据库应用教程p事务级别的临时表是在事务提交时系统自动删除表中所有记录。nCREATE GLOBAL TEMPORARY TABLE tran_temp(nID NUMBER(2) PRIMARY KEY,nname VARCHAR2(20)n)nON COMMIT DELETE ROWS; Oracle数据库应用教程p会话级别的临时表是在会话终止时系统自动删除表中所有记录 。nCREATE GLOBAL TEMPORARY TABLE sess_temp(nID NUMBER(2) PRIMARY KEY,nname VARCHAR2(20)n)nON C

14、OMMIT PRESERVE ROWS; Oracle数据库应用教程(3)利用子查询创建表)利用子查询创建表 p语法语法nCREATE TABLE table_namen(column_name column_level_constraintn,column_name column_level_constraintn,table_level_constraint) nparameter_listnAS subquery; Oracle数据库应用教程p注意注意n通过该方法创建表时,可以修改表中列的名称,但是不能修改列的数据类型和长度;n源表中的约束条件和列的缺省值都不会复制到新表中;n子查询中不

15、能包含LOB类型和LONG类型列;n当子查询条件为真时,新表中包含查询到的数据;当查询条件为假时,则创建一个空表。 Oracle数据库应用教程p创建一个标准表,保存工资高于3000的员工的员工号、员工名和部门号。语句为nCREATE TABLE nemp_select(empno,fname,lname,deptno)nASnSELECT emp_id,first_name,last_name,ndepartment_id nFROM emp WHERE salary3000; Oracle数据库应用教程p创建一个会话级临时表,保存部门号、部门人数和部门的平均工资。nCREATE GLOBAL

16、 TEMPORARY TABLE ndept_tempnON COMMIT PRESERVE ROWSnASnSELECT department_id, count(*) num, avg(salary) avgsal nFROM empnGROUP BY department_id; Oracle数据库应用教程10.3.2 表约束表约束p约束的类别 p定义约束 p添加和删除约束 p设置约束状态 p约束的延迟检查 p查询约束信息 Oracle数据库应用教程(1)约束的类别)约束的类别 p约束作用n是在表中定义的用于维护数据库完整性的一些规则。通过对表中列定义约束,可以防止在执行DML操作时,将

17、不符合要求的数据插入到表中。p约束类型nPRIMARY KEYnUNIQUEnCHECKnFOREIGN KEY nNULL/NOT NULL Oracle数据库应用教程PRIMARY KEYp特点n定义主键,起惟一标识作用,其值不能为NULL,也不能重复;n一个表中只能定义一个主键约束;n建立主键约束的同时,在该列上建立一个惟一性索引,可以为它指定存储位置和存储参数;n主键约束可以是列级约束,也可以是表级约束。 Oracle数据库应用教程UNIQUEp特点n定义为惟一性约束的某一列或多个列的组合的取值必须惟一;n如果某一列或多个列仅定义惟一性约束,而没有定义非空约束,则该约束列可以包含多个空

18、值;nOracle自动在惟一性约束列上建立一个惟一性索引,可以为它指定存储位置和存储参数;n惟一性约束可以是列级约束,也可以是表级约束。 Oracle数据库应用教程p在一个基本表中只能定义一个PRIMARY KEY约束,但可定义多个UNIQUE约束;p对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。p不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束。PRIMARY KEY与与UNIQUE比较比较 Oracle数据库应用教程CHECK p特点n检查约束用来限制列值所允许的取值范围,其

19、表达式中必须引用相应列,并且表达式的计算结果必须是一个布尔值;n约束表达式中不能包含子查询,也不能包含SYSDATE、USER等SQL函数,和ROWID、ROWNUM等伪列;n一个列可以定义多个检查约束;n检查约束可以是列级约束,也可以是表级约束。 Oracle数据库应用教程p概念nFOREIGN KEY约束指定某一个列或一组列作为外部键,其中,包含外部键的表称为从表,包含外部键所引用的主键或唯一键的表称主表。n系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。FOREIGN KEY Oracle数据库应用教程p特点n

20、定义外键约束的列的取值要么是主表参照列的值,要么为空;n外键列只能参照于主表中的主键约束列或惟一性约束列;n可以在一列或多列组合上定义外键约束;n外键约束可以是列级约束,也可以是表级约束。 Oracle数据库应用教程NULL/NOT NULL p特点n在同一个表中可以定义多个NOT NULL约束;n只能是列级约束。 Oracle数据库应用教程(2)定义约束)定义约束p列约束n对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;p表约束n与列定义相互独立,不包括在列定义中。通常用于对多个列一起进行约束,与列定义用,分隔。定义表约束时必须指出要约束的那些列的

21、名称。 Oracle数据库应用教程p定义列级约束的语法为:nCONSTRAINT constraint_name nconstraint_type conditioin; p定义表级约束的语法为:nCONSTRAINT constraint_namenconstraint_type(column1_name,ncolumn2_name,|condition);p注意nOracle约束通过名称进行标识。在定义时可以通过CONSTRAINT关键字为约束命名。如果用户没有为约束命名,Oracle将自动为约束命名。 Oracle数据库应用教程p创建一个student表。nCREATE TABLE st

22、udent(n sno NUMBER(6) CONSTRAINT S_PK PRIMARY KEY,n sname VARCHAR2(10) NOT NULL UNIQUE ,n sex CHAR(2) CONSTRAINT S_CK1 n check(sex in(M, F),n sage NUMBER(6,2) ,nCONSTRAINT S_CK2 CHECK(sage between 18 and 60)n); Oracle数据库应用教程p创建一个course表,同时为主键约束列上的唯一性索引设置存储位置和存储参数,语句为 nCREATE TABLE course(n cno NUMBE

23、R(6) PRIMARY KEY,n cname CHAR(20) UNIQUEn USING INDEX TABLESPACE indx n STORAGE(INITIAL 64K NEXT 64K)n); Oracle数据库应用教程p创建一个SC表,语句为nCREATE TABLE SC(n sno NUMBER(6) REFERENCES student(sno),n cno NUMBER(6) REFERENCES course(cno),n grade NUMBER(5,2),n CONSTRAINT SC_PK PRIMARY KEY(sno, cno) n); Oracle数据库

24、应用教程p定义列级FOREIGN KEY约束nCONSTRAINT constraint_name nFOREIGN KEY nREFERENCES ref_table_name (column_name,)p定义表级FOREIGN KEY约束nCONSTRAINT constraint_name nFOREIGN KEY (column_name,) nREFERENCES ref_table_name (column_name,) nON DELETE CASCADE|SET NULL; Oracle数据库应用教程pCREATE TABLE SC(p sno NUMBER(6),p cno

25、 NUMBER(6),p grade NUMBER(5,2),p CONSTRAINT SC_PK PRIMARY KEY(sno, cno),p CONSTRAINT SNO_FK FOREIGN KEY(sno) p REFERENCES student(sno),p CONSTRAINT CNO_FK FOREIGN KEY(cno) p REFERENCES course(cno) p); Oracle数据库应用教程pON DELETE CASCADEn删除子表中所有相关记录pON DELETE SET NULLn将子表中相关记录的外键约束列值设置为NULLpON DELETE RES

26、TRICTEDn受限删除,即如果子表中有相关子记录存在,则不能删除主表中的父记录,默认引用方式。 Oracle数据库应用教程pCREATE TABLE SC(p sno NUMBER(6),p cno NUMBER(6),p grade NUMBER(5,2),p CONSTRAINT SC_PK PRIMARY KEY(sno, cno),p CONSTRAINT SNO_FK FOREIGN KEY(sno) p REFERENCES student(sno) ON DELETE CASCADE,p CONSTRAINT CNO_FK FOREIGN KEY(cno) p REFERENC

27、ES course(cno) ON DELETE CASCADE p); Oracle数据库应用教程pDEFAULTn如果用户在插入新行时没有显示为列提供数据,系统将默认值赋给该列。n语法CONSTRAINT DEFAULT 表达式 Oracle数据库应用教程(3)添加和删除约束)添加和删除约束 p添加约束语法为:nALTER TABLE table_name nADD CONSTRAINT constraint_namenconstraint_type(column1_name,column2_name,)condition; Oracle数据库应用教程p创建一个player表nCREATE

28、 TABLE player(n ID NUMBER(6),n sno NUMBER(6),n sname VARCHAR2(10),n sage NUMBER(6,2),n resume VARCHAR2(1000)n); p添加主键约束nALTER TABLE player ADD CONSTRAINT P_PK PRIMARY KEY(ID);p添加惟一性约束nALTER TABLE player ADD CONSTRAINT P_UK UNIQUE(sname); Oracle数据库应用教程p添加检查约束nALTER TABLE player ADD CONSTRAINT P_CK CH

29、ECK(sage BETWEEN 20 AND 30);p添加外键约束nALTER TABLE playernADD CONSTRAINT P_FK FOREIGN KEY(sno)REFERENCES student(sno) ON DELETE CASCADE;p添加空/非空约束n为表列添加空/非空约束时必须使用MODIFY子句代替ADD子句nALTER TABLE player MODIFY resume NOT NULL;nALTER TABLE player MODIFY resume NULL; Oracle数据库应用教程p删除约束n使用ALTER TABLEDROP语句删除已经定

30、义的约束。n可以通过直接指定约束的名称来删除约束,或指定约束的内容来删除约束。p删除指定内容的约束nALTER TABLE player DROP UNIQUE(sname);p删除指定名称的约束nALTER TABLE player DROP CONSTRAINT P_CK; Oracle数据库应用教程p删除主键约束、唯一性约束的同时将删除唯一性索引,如果要在删除约束时保留唯一性索引,则必须在ALTER TABLEDORP 语句中指定KEEP INDEX 子句。nALTER TABLE player DROP CONSTRAINT P_UK KEEP INDEX;p如果要在删除约束的同时,删

31、除引用该约束的其他约束,则需要在ALTER TABLEDORP语句中指定CASCADE关键字。nALTER TABLE player DROP CONSTRAINT P_PK CASCADE; Oracle数据库应用教程(4)设置约束状态)设置约束状态 p激活(ENABLE)状态n当约束处于激活状态时,约束将对表的插入或更新操作进行检查,与约束规则冲突的操作被回退。p禁用(DISABLE)状态n当约束处于禁用状态时,约束不起作用,与约束规则冲突的插入或更新操作也能够成功执行。p利用SQL*Loader从外部数据源提取大量数据到数据库中;p进行数据库中数据的大量导入、导出操作;p针对表执行一项包

32、含大量数据操作的批处理工作时。 Oracle数据库应用教程p禁用约束 n在定义约束时,可以将约束设置为禁用状态,默认为激活状态。也可以在约束创建后,修改约束状态为禁用。n创建表时禁用约束pCREATE TABLE S (SNO CHAR(11) PRIMARY KEY DISALBE,);n利用ALTER TABLEDISABLE禁用约束pALTER TABLE STUDENT DISABLE CONSTRAINT S_CK1;pALTER TABLE STUDENT DISABLE UNIQUE (sname); Oracle数据库应用教程n禁用主键约束、惟一性约束时,会删除其对应的惟一性索

33、引,而在重新激活时,Oracle为它们重建惟一性索引。若在禁用约束时,保留对应的惟一性索引,可使用ALTER TABLEDISABLEKEEP INDEX语句。pALTER TABLE STUDENT DISABLE UNIQUE (sname) KEEP INDEX;pALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX;n若当前约束(主键约束、惟一性约束)列被引用,则需要使用ALTER TABLEDISABLECASCADE语句同时禁用引用该约束的约束。pALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP

34、 INDEX CASCADE; Oracle数据库应用教程p激活约束n创建或添加约束时,默认为激活状态。n利用ALTER TABLEENABLE语句激活约束pALTER TABLE STUDENT ENABLE UNIQUE (sname);n禁用主键约束、惟一性约束时,会删除其对应的惟一性索引,而在重新激活时,Oracle为它们重建惟一性索引,可以为索引设置存储位置和存储参数(索引与表尽量分开存储)。pALTER TABLE STUDENT ENABLE PRIMARY KEY pUSING INDEX TABLESPACE indx STORAGE(INITIAL 32K NEXT 16K

35、); Oracle数据库应用教程p通过ALTER TABLE MODIFY DISABLE| ENABLE 语句改变约束状态nALTER TABLE STUDENT MODIFY CONSTRAINT S_CK2 DISABLE; Oracle数据库应用教程 (5)约束的延迟检查)约束的延迟检查 p默认情况下,在表中的约束都是不可延迟约束,Oracle在一条DML语句执行完毕之后立即进行约束检查(除非禁用)。 p创建约束时可以显式使用DEFERRABLE关键字,创建可延迟的约束。pINITIALLY IMMEDIATE 或INITIALLY DEFERRED说明可延迟约束在初始状态下是立即检查

36、还是延迟检查p如果在定义约束时设定为不可延迟,则约束创建后不能更改其可延迟性。只有创建时设定为可延迟的约束,创建后才能更改其可延迟性。 Oracle数据库应用教程p创建两个表,其约束都是可延迟的。nCREATE TABLE new_department(ndeptno NUMBER PRIMARY KEY nDEFERRABLE INITIALLY IMMEDIATE,ndname CHAR(10) UNIQUEn); nCREATE TABLE new_employee(nempno NUMBER PRIMARY KEY,nename CHAR(10),ndeptno NUMBER CONS

37、TRAINT NE_FK REFERENCES new_department(deptno)nON DELETE CASCADE DEFERRABLEn); Oracle数据库应用教程p由于外键约束的作用,执行下面语句时会产时错误。nINSERT INTO new_employee VALUES(1, nZHANG,10);nINSERT INTO new_employee VALUES(1, nZHANG,10)n*nERROR 位于第 1 行:nORA-02291: 违反完整约束条件 (SCOTT.E_FK) - 未找到父项关键字 Oracle数据库应用教程p将new_employee表的

38、外键约束检查延迟。nALTER TABLE new_employee MODIFY CONSTRAINT NE_FK INITIALLY DEFERRED; p此时,由于将new_employee表外键约束延迟到事务结束后进行检查,因此可以先向new_employee中插入数据,而后向new_department中插入数据。nINSERT INTO new_employee VALUES(1, ZHANG,10);nINSERT INTO new_department VALUES(10, COMPUTER);nCOMMIT; Oracle数据库应用教程p操作完后,应将new_employee

39、外键约束检查恢复原来状态。nALTER TABLE new_employee MODIFY nCONSTRAINT NE_FK INITIALLY IMMEDIATE; p注意n在修改约束的检查延迟性时,如果无法确定约束的名称或需要设置多个约束的延迟性,可以一次性将所有可延迟的约束延迟或恢复。pSET CONSTRAINT ALL DEFERRED;pSET CONSTRAINT ALL IMMEDIATE; Oracle数据库应用教程(6)查询约束信息)查询约束信息pALL_CONSTRAINTSpUSER_CONSTRAINTSpDBA_CONSTRAINTSpALL_CONS_COLUM

40、NSpUSER_CONS_COLUMNSpDAB_CONS_COLUMNS Oracle数据库应用教程p查看student表中的所有约束。nSELECT CONSTRAINT_NAME, nCONSTRAINT_TYPE,DEFERRED,STATUSnFROM USER_CONSTRAINTS nWHERE TABLE_NAME=STUDENT;p查看student表中各个约束所作用的列。nSELECT CONSTRAINT_NAME, nCOLUMN_NAME nFROM USER_CONS_COLUMNSnWHERE TABLE_NAME=STUDENT; Oracle数据库应用教程10

41、.3.3 表参数设置表参数设置pTABLESPACEnTABLESPACE子句用于指定表存储的表空间。 pSTORAGE nSTORAGE子句用于设置表的存储参数。若不指定,则继承表空间的存储参数设置。 pNITIAL pNEXTpPCTINCREASEpMINEXTENTSpMAXEXTENTSpBUFFER_POOL (KEEP、RECYCLE、DEFAULT) Oracle数据库应用教程pSTORAGE参数设置需注意n如果表空间管理方式为EXTENT MANAGEMENT LOCAL AUTOALLOCATE,则在STORAGE中只能指定INITIAL,NEXT和MINEXTENTS这3

42、个参数;n如果表空间管理方式为EXTENT MANAGEMENT LOCAL UNIFORM,则不能指定任何STORAGE子句;n如果表空间管理方式为EXTENT MANAGEMENT DICTIONARY,则在STORAG中可以设置任何参数。 Oracle数据库应用教程p数据块管理参数 nPCTFREE:用于指定数据块中必须保留的最小空闲空间。nPCTUSED:用于指定当数据块空闲空间达到PCTFREE参数的限制后,数据块能够被再次使用前,已占用的存储空间必须低于的比例。nINITRANS:用于指定能够并发访问同一个数据块的事务的数量。nMAXTRANS:用于指定能够并发访问同一个数据块的事

43、务的最大数量。 Oracle数据库应用教程pLOGGING与NOLOGGING子句n默认为NOLOGGING,即表的创建操作不会记录到重做日志文件中,尤其适合通过查询创建表的情况。使用LOGGING子句,表的创建操作(包括通过查询创建表时的插入记录操作)都将记录到重做日志文件中。pPARALLEL、NOPARALLELpCACHE、NOCACHEpMONITORING、NOMONITORING Oracle数据库应用教程10.3.4 修改表修改表p基本语法p列的添加、删除、修改p表参数修改p表结构重组p表重命名等p为表和列添加注释 Oracle数据库应用教程()修改表基本语法()修改表基本语法

44、pALTER TABLE pADD 完整性约束定义pMODIFY pRENAME COLUMN oldname TO newnamepSET UNUSED COLUMN column /single columnpSET UNUSED COLUMNS(column1,column2)pDROP COLUMN /single columnpDROP /multi columnpDROP UNUSED COLUMNS Oracle数据库应用教程()列的添加、删除、修改()列的添加、删除、修改 p添加列 n语法pALTER TABLE table_name pADD(new_column_name

45、datatypeNOT pNULLDEFAULT value); n示例pALTER TABLE emp pADD(phone_number VARCHAR2(20),p hiredate DATE DEFAULT SYSDATE NOT NULL); Oracle数据库应用教程p修改列类型 n语法pALTER TABLE table_name MODIFY column_name new_datatype; n修改表中列类型时,必须满足下列条件:p可以增大字符类型列的长度和数值类型列的精度;p如果字符类型列、数值类型列中数据满足新的长度、精度,则可以缩小类型的长度、精度;p如果不改变字符串的

46、长度,可以将VARCHAR2类型和CAHR类型转换;p如果更改数据类型为另一种非同系列类型,则列中数据必须为NULL。 Oracle数据库应用教程n示例pALTER TABLE emp MODIFY first_name CHAR(25);pALTER TABLE emp MODIFY phone_number CHAR(30); p修改列名 n语法pALTER TABLE table_name RENAME COLUMN oldname pTO newname;n示例 pALTER TABLE emp RENAME COLUMN hiredate TO phire_date; Oracle数

47、据库应用教程p删除列 n直接删除列语法pALTER TABLE table_name pDROP COLUMN column_name|p(column1_name,column2_name,)pCASCADE CONSTRAINTS; n直接删除列示例pALTER TABLE emp pDROP COLUMN emp_id CASCADE CONSTRAINTS;pALTER TABLE emp DROP (phone_number,hire_date); Oracle数据库应用教程n将列标记为UNUSED,然后进行删除。pALTER TABLE table_name pSET UNUSED

48、 COLUMN column_name|p(column1_name,column2_name,)pCASCADE CONSTRAINTS; n示例pALTER TABLE player SET UNUSED COLUMN sage;pALTER TABLE player SET UNUSED (sname,resume);pALTER TABLE player DROP UNUSED COLUMNS; Oracle数据库应用教程p如果数据库表空间处于字典管理方式,可以对表的参数进行修改,包括存储参数、存储位置、数据块设置等。nALTER TABLE emp nPCTFREE 30 PCTUS

49、ED 60 nSTORAGE(NEXT 512K PCTINCREASE 10);p注意n表创建后不能对INITIAL、MINEXTENTS两个参数进行修改。()表参数修改()表参数修改 Oracle数据库应用教程p将一个非分区的表移动到一个新的数据段中,或者移动到其他的表空间中,通过这种操作可以重建表的存储结构,称为表结构重组。p如果发现表的数据段具有不合理的区分配方式,但是又不能通过别的方法来进行调整(改变存储参数不会影响到已经分配的区),可以考虑将表移动到一个新的数据段中。此外,如果频繁地对表进行DML操作,会产生大量空间碎片和行迁移、行连接,可以考虑进行表结构重组。()表结构重组()表

50、结构重组 Oracle数据库应用教程p语法nALTER TABLE tbname MOVE nTABLESPACE tbs_name p注意 n直到表被完全移动到新的数据段中之后,Oracle才会删除原来的数据段;n表结构重组后,表中每个记录的ROWID会发生变化,因此该表的所有索引失效,需要重新建立索引;n如果表中包含LOB列,则默认情况下不移动LOB列数据和LOB索引段。 Oracle数据库应用教程p语法nALTER TABLE old_name RENAME TO new_name;nRENAME old_name TO new_name; p说明n表重命名后,Oracle会自动将旧表上

51、的对象权限、约束条件等转换到新表上,但是所有与旧表相关联的对象都会失效,需要重新编译。()表重命名()表重命名 Oracle数据库应用教程p为表添加注释nCOMMENT ON TALBE table_name IS;p为列添加注释nCOMMENT ON COLUMN ntable_name.column_name IS p注释可以通过以下数据字典来查看.nALL_COL_COMMENTSnUSER_COL_COMMENTSnALL_TAB_COMMENTSnUSER_TAB_COMMENTS()为表和列添加注释()为表和列添加注释 Oracle数据库应用教程p语法nDROP TABLE tab

52、le_namenCASCADE CONSTRAINTSPURGE p删除一个表同时,Oracle将执行下列操作:n删除该表中所有记录;n从数据字典中删除该表定义;n删除与该表相关的所有索引和触发器;n回收为该表分配的存储空间;n依赖于该表的数据库对象处于INVALID状态。10.3.5删除表删除表 Oracle数据库应用教程p注意n在Oracle 10g中,使用DROP TABLE语句删除一个表时,并不立即回收该表的空间,而只是将表及其关联对象的信息写入一个称为“回收站”(RECYCLEBIN)的逻辑容器中,从而可以实现闪回删除表操作。如果要回收该表空间,可以采用清空“回收站”(PURGE R

53、ECYCLEBIN)或在DROP TABLE语句中使用PURGE语句。 Oracle数据库应用教程10.3.6 查询表信息查询表信息p表的基本描述信息和统计信息 nDBA_TABLES,ALL_TABLES,USER_TABLESp表中列的信息及统计信息 nDBA_TAB_COLUMNS,ALL_TAB_COLUMNS,USER_TAB_COLUMNSp数据库中所有的关系表和对象表 nDBA_ALL_TABLES,ALL_ALL_TABLES,USER_ALL_TABLESp数据库中所有表的注释信息 nDBA_TAB_COMMENTS,ALL_TAB_COMMENTS,USER_TAB_COM

54、MENTSp数据库中所有表的列的注释信息 nDBA_COL_COMMENTS,ALL_COL_COMMENTS,USER_COL_COMMENTS Oracle数据库应用教程p查询当前用户的所有表的名称、存储表空间。语句为nSELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES; p查询emp表上manager_id列的信息 nSELECT COLUMN_NAME,DATA_TYPE,nDATA_LENGTH,NULLABLE nFROM USER_TAB_COLUMNSnWHERE TABLE_NAME=EMP AND COLUMN_NAME=M

55、ANAGER_ID; Oracle数据库应用教程10.3.7利用利用OEM管理表管理表p创建表p删除表p修改表p查询表 Oracle数据库应用教程(1)创建表)创建表 Oracle数据库应用教程 Oracle数据库应用教程 Oracle数据库应用教程 Oracle数据库应用教程 Oracle数据库应用教程 Oracle数据库应用教程(2)表的其他管理)表的其他管理 Oracle数据库应用教程10.3.8 人力资源管理系统表和约束的创人力资源管理系统表和约束的创建建pCREATE TABLE regionsp( region_id NUMBER PRIMARY KEY, p region_nam

56、e VARCHAR2(25)p)TABLESPACE USERS; pCREATE TABLE countriesp( country_id CHAR(2) PRIMARY KEY, p country_name VARCHAR2(40), p region_id NUMBER REFERENCES regions(region_id)p)TABLESPACE USERS; Oracle数据库应用教程pCREATE TABLE locationsp( location_id NUMBER(4) PRIMARY KEY, p street_address VARCHAR2(40), p post

57、al_code VARCHAR2(12), p city VARCHAR2(30) NOT NULL, p state_province VARCHAR2(25), p country_id CHAR(2) p REFERENCES countries(country_id)p)TABLESPACE USERS; Oracle数据库应用教程pCREATE TABLE departmentsp( department_id NUMBER(4) PRIMARY KEY, p department_name VARCHAR2(30) NOT NULL, p manager_id NUMBER(6),

58、 p location_id NUMBER(4) p REFERENCES locations (location_id)p)TABLESPACE USERS; Oracle数据库应用教程pCREATE TABLE jobsp( job_id VARCHAR2(10) PRIMARY KEY, p job_title VARCHAR2(35) NOT NULL, p min_salary NUMBER(6), p max_salary NUMBER(6)p)pTABLESPACE USERS; Oracle数据库应用教程pCREATE TABLE employeesp( employee_id

59、 NUMBER(6) PRIMARY KEY, p first_name VARCHAR2(20), p last_name VARCHAR2(25) NOT NULL, p email VARCHAR2(25) NOT NULL UNIQUE, p phone_number VARCHAR2(20), p hire_date DATE NOT NULL, p job_id VARCHAR2(10) NOT NULL REFERENCES jobs (job_id), p salary NUMBER(8,2) CHECK (salary 0),p commission_pct NUMBER(2

60、,2), p manager_id NUMBER(6) , p department_id NUMBER(4) REFERENCES p departments(department_id)p) pTABLESPACE USERS; Oracle数据库应用教程创建人力资源管理系统表创建人力资源管理系统表pCREATE TABLE job_historyp( employee_id NUMBER(6) NOT NULL p REFERENCES employees(employee_id), p start_date DATE NOT NULL, p end_date DATE NOT NULL

温馨提示

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

评论

0/150

提交评论