收藏 分销(赏)

Oracle模式对象基础教案.pptx

上传人:可**** 文档编号:7907903 上传时间:2025-01-26 格式:PPTX 页数:181 大小:1.71MB 下载积分:10 金币
下载 相关 举报
Oracle模式对象基础教案.pptx_第1页
第1页 / 共181页
Oracle模式对象基础教案.pptx_第2页
第2页 / 共181页


点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,Oracle10g,数据库基础教程,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Oracle10g,数据库基础教程,第,9,章 模式对象,本章内容,模式概念,表管理,索引管理,分区表与分区索引的管理,视图、序列、同义词、数据库链接管理,本章要求,掌握表的管理,掌握索引的管理,掌握分区的概念及分区管理,了解视图、序列、同义词、数据库链接等的管理,9.1,模式,模式概念,模式与用户的关系,模式选择与切换,模式概念,是指一系列逻辑数据结构或对象的集合。,模式与用户的关系,模式与用户相对应,一个模式只能被一个数据库用户所拥有,并且模式的名称与这个用户的名称相同。,通常情况下,用户所创建数据库对象都保存在与自己同名的模式中。,同一模式中数据库对象的名称必须惟一,而在不同模式中的数据库对象可以同名。,默认情况下,用户引用的对象是与自己同名模式中的对象,如果要引用其他模式中的对象,需要在该对象名之前指明对象所属模式。,模式选择与切换,如果用户以,NORMAL,身份登录,则进入同名模式;,若以,SYSDBA,身份登录,则进入,SYS,模式;,如果以,SYSOPER,身份登录,则进入,PUBLIC,模式。,9.2,表,创建表,表约束的管理,表参数设置,修改表,删除表,利用,OEM,管理表,9.2.1,创建表,表的创建,创建临时表,利用子查询创建表,(,1,)表的创建,表的规划与设计,表名称,列的数量,列名称与类型,表约束,表内部数据的组织方式(标准表、索引化表、分区表),表存储位置、存储空间分配等。,使用,CREATE TABLE,语句 创建表,CREATE TABLE table_name,(column_name datatype,column_level_constraint,,,column_name datatype,column_level_constraint,,,table_level_constraint),parameter_list;,CREATE TABLE employee(,empno NUMBER(5)PRIMARY KEY,ename VARCHAR2(15),deptno NUMBER(3)NOT NULL CONSTRAINT,fk_emp REFERENCES dept,(,deptno,),),TABLESPACE USERS,PCTFREE 10 PCTUSED 40,STORAGE(INITIAL 50K NEXT 50K MAXEXTENTS 10 PCTINCREASE 25);,表名,(,table_name,),必须是合法标识符,长度为,1,30,字节,并且以字母开头,可以包含字母,(A,Z,,,a,z),、数字(,0,9,),下划线(,_,)、美元符号(,$,)和井号(,#,)。此外,表名称不能是,Oracle,数据库的保留字,数据类型,(datatype),字符类型,数字类型,日期类型,LOB,类型,二进制类型,行类型,CHAR,(,n,),定长字符串,,n,的取值范围为,1-2000,字节,VARCHAR2,(,n,),可变字符串,,n,取值范围为,1-4000,字节,自动调整数据长度,NCHAR(n),用来存储,Unicode,类型字符串。,NVARCHAR2(n),它用来存储,Unicode,类型字符串。,LONG,可变长字符列,最大长度为,2GB,用于不需设置成索引的字符,不常用,字符类型,数字类型,NUMBER,(,m,,,n,),用于存储整数和实数。,m,表示数值的总位数(精度),取值范围为,1,38,,默认为,38,;,n,表示小数位数,若为负数则表示把数据向小数点左边舍入,默认值为,0,。,日期类型,DATE,可以存储的日期范围为公元前,4712,年,1,月,1,日到公元,4712,年,1,月,1,日,由世纪、年、月、日、时、分、秒组成。可以在用户当前会话中使用参数,NLS_DATE_FORMAT,指定日期和时间的格式,或者使用,TO_DATE,函数,将表示日期和时间的字符串按特定格式转换成日期和时间。,TIMESTAMP(,n,),:表示时间戳,是,DATE,数据类型的扩展,允许存储小数形式的秒值。,n,表示秒的小数位数,取值范围为,1,9,,默认值为,6,。,TIMESTAMP(,n,)WITH TIME ZONE,:通过存储一个时区偏差来扩展,TIMESTAMP,类型。时区偏差值为相对于通用协调时间(或称,UTC,,以前称为格林威治时间或,GMT,)的时差。,TIMESTAMP(,n,)WITH LOCAL TIME ZONE,与,TIMESTAMP(,n,)WITH TIME ZONE,的不同之处在于,存储日期时直接转换为数据库时区日期,而读取日期时将数据库时区日期转换为用户会话时区日期。,INTERVAL YEAR(,n,)TO MONTH,存储以年份和月份表示的时间段。,n,是表示,YEAR,的最多数字位数,默认为,2,。例如,,INTERVAL 2-11 YEAR TO MONTH,表示,2,年,11,个月。,INTERVAL DAY(,m,)TO SECOND(,n,),存储以天数、小时数、分钟数和秒数表示的时间段。,m,是表示,DAY,的最多数字位数,默认为,2,。,n,是表示,SECOND,的小数部分的位数,默认为,6,。例如,,INTERVAL 5 10:30:40 DAY TO SECOND,表示,5,天,10,小时,30,分,40,秒。,LOB,类型,CLOB,用于存储可变长度的字符数据,如文本文件等,最大数据量为,4 GB,。,NCLOB,用于存储可变长度的,Unicode,字符数据,最大数据量为,4 GB,。,BLOB,用于存储大型的、未被结构化的可变长度的二进制数据(如二进制文件、图片文件、音频和视频等非文本文件),最大数据量为,4 GB,。,BFILE,用于存储指向二进制格式文件的定位器,该二进制文件保存在数据库外部的操作系统中,文件最大为,4 GB,。,二进制类型,RAW(,n,),用于存储可变长度的二进制数据,,n,表示数据长度,取值范围为,1,2000,字节;,LONG RAW,用于存储可变长度的二进制数据,最大存储数据量为,2 GB,。,行类型,ROWID,行标识符,表中行的物理地址的伪列类型。,ROWID,类型数据由,18,位十六进制数构成,包括对象编号、文件编号、数据块编号和块内行号。,UROWID,行标识符,用于表示索引化表中行的逻辑地址。,约束(,constraint,),在,Oracle,数据库中对列的约束包括主键约束、惟一性约束、检查约束、外键约束和空,/,非空约束等,5,中,定义方法有表级约束和列级约束,2,种。,参数(,parameter_list,),在定义表时,可以通过参数设置表存储在哪一个表空间中,和存储空间分配等。,(,2,)创建临时表,临时表中的数据在特定条件下自动释放,但其结构将一直存在。,根据临时表中数据被释放的时间不同,临时表分为事务级别的临时表和会话级别的临时表两类。,ON COMMIT DELETE ROWS /,事务级临时表,ON COMMIT PRESERVE ROWS /,会话级临时表,语法,使用,CREATE GLOBAL TEMPORARY TABLE,语句创建临时表,使用,ON COMMIT,子句说明临时表的类型,默认为事务级别的临时表。,事务级别的临时表是在事务提交时系统自动删除表中所有记录。,CREATE GLOBAL TEMPORARY TABLE tran_temp(,ID NUMBER(2)PRIMARY KEY,name VARCHAR2(20),),ON COMMIT DELETE ROWS;,会话级别的临时表是在会话终止时系统自动删除表中所有记录。,CREATE GLOBAL TEMPORARY TABLE sess_temp(,ID NUMBER(2)PRIMARY KEY,name VARCHAR2(20),),ON COMMIT PRESERVE ROWS;,(,3,)利用子查询创建表,语法,CREATE TABLE table_name,(column_name column_level_constraint,,,column_name column_level_constraint,,,table_level_constraint),parameter_list,AS subquery;,注意,通过该方法创建表时,可以修改表中列的名称,但是不能修改列的数据类型和长度;,源表中的约束条件和列的缺省值都不会复制到新表中;,子查询中不能包含,LOB,类型和,LONG,类型列;,当子查询条件为真时,新表中包含查询到的数据;当查询条件为假时,则创建一个空表。,创建一个标准表,保存工资高于,3000,的员工的员工号、员工名和部门号。语句为,CREATE TABLE,emp_select(emp_no,emp_name,dept_no),AS,SELECT empno,ename,deptno FROM,employee WHERE sal3000;,创建一个会话级临时表,保存部门号、部门人数和部门的平均工资。,CREATE GLOBAL TEMPORARY TABLE ept_temp,ON COMMIT PRESERVE ROWS,AS,SELECT deptno,count(*)num,avg(sal)avgsal FROM emp,GROUP BY deptno;,9.2.2,表约束,约束的类别,定义约束,添加和删除约束,设置约束状态,约束的延迟检查,查询约束信息,(,1,)约束的类别,约束作用,是在表中定义的用于维护数据库完整性的一些规则。通过对表中列定义约束,可以防止在执行,DML,操作时,将不符合要求的数据插入到表中。,约束类型,PRIMARY KEY,UNIQUE,CHECK,FOREIGN KEY,NULL/NOT NULL,PRIMARY KEY,特点,定义主键,起惟一标识作用,其值不能为,NULL,,也不能重复;,一个表中只能定义一个主键约束;,建立主键约束的同时,在该列上建立一个惟一性索引,可以为它指定存储位置和存储参数;,主键约束可以是列级约束,也可以是表级约束。,UNIQUE,特点,定义为惟一性约束的某一列或多个列的组合的取值必须惟一;,如果某一列或多个列仅定义惟一性约束,而没有定义非空约束,则该约束列可以包含多个空值;,Oracle,自动在惟一性约束列上建立一个惟一性索引,可以为它指定存储位置和存储参数;,惟一性约束可以是列级约束,也可以是表级约束。,在一个基本表中只能定义一个,PRIMARY KEY,约束,但可定义多个,UNIQUE,约束;,对于指定为,PRIMARY KEY,的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于,UNIQUE,所约束的唯一键,则允许为空。,不能为同一个列或一组列既定义,UNIQUE,约束,又定义,PRIMARY KEY,约束。,PRIMARY KEY,与,UNIQUE,比较,CHECK,特点,检查约束用来限制列值所允许的取值范围,其表达式中必须引用相应列,并且表达式的计算结果必须是一个布尔值;,约束表达式中不能包含子查询,也不能包含,SYSDATE,、,USER,等,SQL,函数,和,ROWID,、,ROWNUM,等伪列;,一个列可以定义多个检查约束;,检查约束可以是列级约束,也可以是表级约束。,概念,FOREIGN KEY,约束指定某一个列或一组列作为外部键,其中,包含外部键的表称为从表,包含外部键所引用的主键或唯一键的表称主表。,系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。,FOREIGN KEY,特点,定义外键约束的列的取值要么是主表参照列的值,要么为空;,外键列只能参照于主表中的主键约束列或惟一性约束列;,可以在一列或多列组合上定义外键约束;,外键约束可以是列级约束,也可以是表级约束。,NULL/NOT NULL,特点,在同一个表中可以定义多个,NOT NULL,约束;,只能是列级约束。,(,2,)定义约束,列约束,对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名,;,表约束,与列定义相互独立,不包括在列定义中。通常用于对多个列一起进行约束,与列定义用,分隔。定义表约束时必须指出要约束的那些列的名称。,定义列级约束的语法为:,CONSTRAINT constraint_name,constraint_type conditioin;,定义表级约束的语法为:,CONSTRAINT constraint_name,constraint_type(column1_name,column2_name,|condition);,注意,Oracle,约束通过名称进行标识。在定义时可以通过,CONSTRAINT,关键字为约束命名。如果用户没有为约束命名,,Oracle,将自动为约束命名。,创建一个,student,表。,CREATE TABLE student(,sno NUMBER(6)CONSTRAINT S_PK,PRIMARY KEY,sname VARCHAR2(10)NOT NULL,sex CHAR(2)CONSTRAINT S_CK1,CHECK(sex in(M,F),sage NUMBER(6,2),CONSTRAINT S_CK2 CHECK(,sage between 18 and 60),);,创建一个,course,表,同时为主键约束列上的唯一性索引设置存储位置和存储参数,语句为,CREATE TABLE course(,cno NUMBER(6)PRIMARY KEY,cname CHAR(20)UNIQUE USING INDEX,TABLESPACE indx STORAGE(,INITIAL 64K NEXT 64K),);,创建一个,SC,表,语句为,CREATE TABLE SC(,sno NUMBER(6)REFERENCES student(sno),cno NUMBER(6)REFERENCES course(cno),grade NUMBER(5,2),CONSTRAINT SC_PK PRIMARY KEY(sno,cno),);,定义列级,FOREIGN KEY,约束,CONSTRAINT constraint_name,FOREIGN KEY,REFERENCES ref_table_name(column_name,),定义表级,FOREIGN KEY,约束,CONSTRAINT constraint_name,FOREIGN KEY(column_name,),REFERENCES ref_table_name(column_name,),ON DELETE CASCADE|SET NULL;,ON DELETE CASCADE,删除子表中所有相关记录,ON DELETE SET NULL,将子表中相关记录的外键约束列值设置为,NULL,ON DELETE RESTRICTED,受限删除,即如果子表中有相关子记录存在,则不能删除主表中的父记录,默认引用方式。,DEFAULT,如果用户在插入新行时没有显示为列提供数据,系统将默认值赋给该列。,语法,CONSTRAINT DEFAULT,表达式,(,3,)添加和删除约束,添加约束语法为:,ALTER TABLE table_name,ADD CONSTRAINT constraint_name,constraint_type(column1_name,column2_name,)condition;,创建一个,player,表,CREATE TABLE player(,ID NUMBER(6),sno NUMBER(6),sname VARCHAR2(10),sage NUMBER(6,2),resume VARCHAR2(1000),);,添加主键约束,ALTER TABLE player ADD CONSTRAINT P_PK PRIMARY KEY(ID);,添加惟一性约束,ALTER TABLE player ADD CONSTRAINT P_UK UNIQUE(sname);,添加检查约束,ALTER TABLE player ADD CONSTRAINT P_CK CHECK(sage BETWEEN 20 AND 30);,添加外键约束,ALTER TABLE player,ADD CONSTRAINT P_FK FOREIGN KEY(sno)REFERENCES student(sno)ON DELETE CASCADE;,添加空,/,非空约束,为表列添加空,/,非空约束时必须使用,MODIFY,子句代替,ADD,子句,ALTER TABLE player MODIFY resume NOT NULL;,ALTER TABLE player MODIFY resume NULL;,删除约束,使用,ALTER TABLE,DROP,语句删除已经定义的约束。,可以通过直接指定约束的名称来删除约束,或指定约束的内容来删除约束。,删除指定内容的约束,ALTER TABLE player DROP UNIQUE(sname);,删除指定名称的约束,ALTER TABLE player DROP CONSTRAINT P_CK;,删除主键约束、唯一性约束的同时将删除唯一性索引,如果要在删除约束时保留唯一性索引,则必须在,ALTER TABLE,DORP,语句中指定,KEEP INDEX,子句。,ALTER TABLE player DROP CONSTRAINT P_UK KEEP INDEX;,如果要在删除约束的同时,删除引用该约束的其他约束,则需要在,ALTER TABLE,DORP,语句中指定,CASCADE,关键字。,ALTER TABLE player DROP CONSTRAINT P_PK CASCADE;,(,4,)设置约束状态,激活(,ENABLE,)状态,当约束处于激活状态时,约束将对表的插入或更新操作进行检查,与约束规则冲突的操作被回退。,禁用(,DISABLE,)状态,当约束处于禁用状态时,约束不起作用,与约束规则冲突的插入或更新操作也能够成功执行。,利用,SQL*Loader,从外部数据源提取大量数据到数据库中;,进行数据库中数据的大量导入、导出操作;,针对表执行一项包含大量数据操作的批处理工作时。,禁用约束,在定义约束时,可以将约束设置为禁用状态,默认为激活状态。也可以在约束创建后,修改约束状态为禁用。,创建表时禁用约束,CREATE TABLE S(SNO CHAR(11)PRIMARY KEY DISALBE,);,利用,ALTER TABLE,DISABLE,禁用约束,ALTER TABLE STUDENT DISABLE CONSTRAINT S_CK1;,ALTER TABLE STUDENT DISABLE UNIQUE(sname);,禁用主键约束、惟一性约束时,会删除其对应的惟一性索引,而在重新激活时,,Oracle,为它们重建惟一性索引。若在禁用约束时,保留对应的惟一性索引,可使用,ALTER TABLE,DISABLE,KEEP INDEX,语句。,ALTER TABLE STUDENT DISABLE UNIQUE(sname)KEEP INDEX;,ALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX;,若当前约束,(,主键约束、惟一性约束,),列被引用,则需要使用,ALTER TABLE,DISABLE,CASCADE,语句同时禁用引用该约束的约束。,ALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX CASCADE;,激活约束,创建或添加约束时,默认为激活状态。,利用,ALTER TABLE,ENABLE,语句激活约束,ALTER TABLE STUDENT ENABLE UNIQUE(sname);,禁用主键约束、惟一性约束时,会删除其对应的惟一性索引,而在重新激活时,,Oracle,为它们重建惟一性索引,可以为索引设置存储位置和存储参数,(,索引与表尽量分开存储,),。,ALTER TABLE STUDENT ENABLE PRIMARY KEY,USING INDEX TABLESPACE indx STORAGE(INITIAL 32K NEXT 16K);,通过,ALTER TABLE,MODIFY,DISABLE|ENABLE,语句改变约束状态,ALTER TABLE STUDENT MODIFY CONSTRAINT S_CK2 DISABLE;,(,5,)约束的延迟检查,默认情况下,在表中的约束都是不可延迟约束,,Oracle,在一条,DML,语句执行完毕之后立即进行约束检查(除非禁用)。,创建约束时可以显式使用,DEFERRABLE,关键字,创建可延迟的约束。,INITIALLY IMMEDIATE,或,INITIALLY DEFERRED,说明可延迟约束在初始状态下是立即检查还是延迟检查,如果在定义约束时设定为不可延迟,则约束创建后不能更改其可延迟性。只有创建时设定为可延迟的约束,创建后才能更改其可延迟性。,创建两个表,其约束都是可延迟的。,CREATE TABLE new_dept(,deptno NUMBER PRIMARY KEY DEFERRABLE INITIALLY IMMEDIATE,dname CHAR(11)UNIQUE,);,CREATE TABLE new_emp(,empno NUMBER PRIMARY KEY,ename CHAR(11),deptno NUMBER CONSTRAINT NE_FK REFERENCES new_dept(deptno),ON DELETE CASCADE DEFERRABLE,);,由于外键约束的作用,执行下面语句时会产时错误。,INSERT INTO new_emp VALUES(1,ZHANG,11);,*,ERROR,位于第,1,行,:,ORA-02291:,违反完整约束条件,(SCOTT.E_FK)-,未找到父项关键字,将,new_emp,表的外键约束检查延迟。,ALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY DEFERRED;,此时,由于将,new_emp,表外键约束延迟到事务结束后进行检查,因此可以先向,new_emp,中插入数据,而后向,new_dept,中插入数据。,INSERT INTO new_emp VALUES(1,ZHANG,11);,INSERT INTO new_dept VALUES(11,COMPUTER);,COMMIT;,操作完后,应将,new_emp,外键约束检查恢复原来状态。,ALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY IMMEDIATE;,注意,在修改约束的检查延迟性时,如果无法确定约束的名称或需要设置多个约束的延迟性,可以一次性将所有可延迟的约束延迟或恢复。,SET CONSTRAINT ALL DEFERRED;,SET CONSTRAINT ALL IMMEDIATE;,(,6,)查询约束信息,ALL_CONSTRAINTS,USER_CONSTRAINTS,DBA_CONSTRAINTS,ALL_CONS_COLUMNS,USER_CONS_COLUMNS,DAB_CONS_COLUMNS,查看,student,表中的所有约束。,SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,DEFERRED,STATUS,FROM USER_CONSTRAINTS,WHERE TABLE_NAME=STUDENT;,查看,student,表中各个约束所作用的列。,SELECT CONSTRAINT_NAME,COLUMN_NAME,FROM USER_CONS_COLUMNS,WHERE TABLE_NAME=STUDENT;,9.2.3,表参数设置,TABLESPACE,TABLESPACE,子句用于指定表存储的表空间。,STORAGE,STORAGE,子句用于设置表的存储参数。若不指定,则继承表空间的存储参数设置。,NITIAL,NEXT,PCTINCREASE,MINEXTENTS,MAXEXTENTS,BUFFER_POOL(KEEP,、,RECYCLE,、,DEFAULT),STORAGE,参数设置需注意,如果表空间管理方式为,EXTENT MANAGEMENT LOCAL AUTOALLOCATE,,则在,STORAGE,中只能指定,INITIAL,,,NEXT,和,MINEXTENTS,这,3,个参数;,如果表空间管理方式为,EXTENT MANAGEMENT LOCAL UNIFORM,,则不能指定任何,STORAGE,子句;,如果表空间管理方式为,EXTENT MANAGEMENT DICTIONARY,,则在,STORAG,中可以设置任何参数。,数据块管理参数,PCTFREE,:用于指定数据块中必须保留的最小空闲空间。,PCTUSED,:用于指定当数据块空闲空间达到,PCTFREE,参数的限制后,数据块能够被再次使用前,已占用的存储空间必须低于的比例。,INITRANS,:用于指定能够并发访问同一个数据块的事务的数量。,MAXTRANS,:用于指定能够并发访问同一个数据块的事务的最大数量。,LOGGING,与,NOLOGGING,子句,默认为,NOLOGGING,,即表的创建操作不会记录到重做日志文件中,尤其适合通过查询创建表的情况。使用,LOGGING,子句,表的创建操作(包括通过查询创建表时的插入记录操作)都将记录到重做日志文件中。,PARALLEL,、,NOPARALLEL,CACHE,、,NOCACHE,MONITORING,、,NOMONITORING,9.2.4,修改表,基本语法,列的添加、删除、修改,表参数修改,表结构重组,表重命名等,为表和列添加注释,()修改表基本语法,ALTER TABLE,ADD ,完整性约束定义,MODIFY ,RENAME COLUMN oldname TO newname,SET UNUSED COLUMN column /single column,SET UNUSED COLUMNS,(,column1,,,column2,),DROP COLUMN /single column,DROP /multi column,DROP UNUSED COLUMNS,()列的添加、删除、修改,添加列,语法,ALTER TABLE table_name,ADD(new_column_name datatypeNOT NULLDEFAULT value);,示例,ALTER TABLE employee,ADD(phone VARCHAR2(11),hiredate DATE DEFAULT SYSDATE NOT NULL);,修改列类型,语法,ALTER TABLE table_name MODIFY column_name new_datatype;,修改表中列类型时,必须满足下列条件:,可以增大字符类型列的长度和数值类型列的精度;,如果字符类型列、数值类型列中数据满足新的长度、精度,则可以缩小类型的长度、精度;,如果不改变字符串的长度,可以将,VARCHAR2,类型和,CAHR,类型转换;,如果更改数据类型为另一种非同系列类型,则列中数据必须为,NULL,。,示例,ALTER TABLE employee MODIFY ename CHAR(20);,ALTER TABLE employee MODIFY phone NUMBER;,修改列名,语法,ALTER TABLE table_name RENAME COLUMN oldname TO newname;,示例,ALTER TABLE employee RENAME COLUMN ename TO employee_name,;,删除列,直接删除列语法,ALTER TABLE table_name,DROP COLUMN column_name|,(column1_name,column2_name,),CASCADE CONSTRAINTS;,直接删除列示例,ALTER TABLE sc DROP COLUMN sno CASCADE,CONSTRAINTS;,ALTER TABLE employee DROP(phone,hiredate);,将列标记为,UNUSED,,然后进行删除。,ALTER TABLE table_name,SET UNUSED COLUMN column_name|,(column1_name,column2_name,),CASCADE CONSTRAINTS;,示例,ALTER TABLE player SET UNUSED COLUMN sage;,ALTER TABLE player SET UNUSED(sname,resume);,ALTER TABLE player DROP UNUSED COLUMNS;,如果数据库表空间处于字典管理方式,可以对表的参数进行修改,包括存储参数、存储位置、数据块设置等。,ALTER TABLE employee,PCTFREE 30 PCTUSED 60 STORAGE(NEXT 512K PCTINCREASE 11);,注意,表创建后不能对,INITIAL,、,MINEXTENTS,两个参数进行修改。,()表参数修改,将一个非分区的表移动到一个新的数据段中,或者移动到其他的表空间中,通过这种操作可以重建表的存储结构,称为表结构重组。,如果发现表的数据段具有不合理的区分配方式,但是又不能通过别的方法来进行调整(改变存储参数不会影响到已经分配的区),可以考虑将表移动到一个新的数据段中。此外,如果频繁地对表进行,DML,操作,会产生大量空间碎片和行迁移、行连接,可以考虑进行表结构重组。,()表结构重组,语法,ALTER TABLE tbname MOVE TABLESPACE tbs_name,注意,直到表被完全移动到新的数据段中之后,,Oracle,才会删除原来的数据段;,表结构重组后,表中每个记录的,ROWID,会发生变化,因此该表的所有索引失效,需要重新建立索引;,如果表中包含,LOB,列,则默认情况下不移动,LOB,列数据和,LOB,索引段。,语法,ALTER TABLE old_name RENAME TO new_name;,RENAME old_name TO new_name;,说明,表重命名后,,Oracle,会自动将旧表上的对象权限、约束条件等转换到新表上,但是所有与旧表相关联的对象都会失效,需要重新编译,。,()表重命名,为表添加注释,COMMENT ON TALBE table_name IS,;,为列添加注释,COMMENT ON COLUMN table_name.column_name IS,注释可以通过以下数据字典来查看,.,ALL_COL_COMMENTS,USER_COL_COMMENTS,ALL_TAB_COMMENTS,USER_TAB_COMMENTS,()为表和列添加注释,语法,DROP TABLE table_name,CASCADE CONSTRAINTSPURGE,删除一个表同时,,Oracle,将执行下列操作:,删除该表中所有记录;,从数据字典中删除该表定义;,删除与该表相关的所有索引和触发器;,回收为该表分配的存储空间;,依赖于该表的数据库对象处于,INVALID,状态。,9.2.5,删除表,注意,在,Oracle 10g,中,使用,DROP TABLE,语句删除一个表时,并不立即回收该表的空间,而只是将表及其关联对象的信息写入一个称为,“,回收站,”,(,RECYCLEBIN,)的逻辑容器中,从而可以实现闪回删除表操作。如果要回收该表空间,可以采用清空,“,回收站,”,(,PURGE RECYCLEBIN,)或在,DROP TABLE,语句中使用,PURGE,语句。,9.2.6,利用,OEM,管理表,创建表,删除表,修改表,查询表,(,1,)创建表,(,2,)表的其他管理,9.3,索引,索引概述,索引管理,利用,OEM,管理索引,9.3.1,索引概述,索引概念及作用,索引是为了加速对表中元组的检索而创建的一种分散存储结构;,是对表而建立的,由除存放表的数据页面以外的索引页面组成,独立于被索引的表;,通过使用索引加速行的检索,但减慢更新的速度;,快速定位数据,减少磁盘,I/O,;,Oracle,自动使用、维护索引,索引分类,惟一性索引与非惟一性索引,平衡树索引与位图索引,单列索引与复合索引,函数索引,聚簇索引,全局索引与本地索引,索引使用原则,导入数据后再创建索引,在适当的表和字段上创建索引,经常查询的记录数目少于表中所有记录总数的,5%,时就应当创建索引;,经常进行连接查询表时,在连接列上建立索引能够显著提高查询的速度;,对于取值范围很大的列应当创建,B,树索引;,对于取值范围很小的列应当创建位图索引;,不能在,LONG,,,LONG RAW,,,LOB,数据类型的列上创建索引;,Oracle,会自动在,PRIMARY KEY,和,UNIQUE,约束的列上创建唯一性索引。,合理设置复合索引中的字段顺序,限制表中索引的数目,表中索引数目越多,查询速度越快,但表的更新速度越慢。因为索引越多,维护索引所需开销越大,当更新表时,需要同时更新与表相关的所有索引。,为索引设置合适的,PCTFREE,参数,选择存储索引的表空间,默认情况下,索引与表存储在同一表空间中。索引与表存储在同一表空间中,有利于数据库维护操作,具有较高的可用性;反之,若索引与表存储在不同的表空间中,则可提高系统的存取性能,减少硬盘,I/O,冲突,但是表与索引可用状态可能出现不一致,如一个处于联机状态,另一个处于脱机状态。,9.3.2,管理索引,创建索引,修改索引,监视索引,删除索引,索引的查询,语法,CREATE UNIQUE|BITMAP INDEX index_name,ON table_name(column_nameASC|DESC,|,expression),REVERSE,parameter_list,;,说明,UNIQUE,表示建立惟一性索引;,BITMAP,表示建立位图索引;,ASC/DESC,用于指定索引值的排列顺序,,ASC,表示按升序排序,,DESC,表示按降序排序,缺省值为,ASC,;,REVERSE,表示建立反键索引;,parameter_list,用于指定索引的存放位置、存储空间分配和数据块参数设置。,(,1,)创建索引,创建非惟一性索引,CREATE INDEX employee_ename ON employee(ename)TABLESPACE users STORAGE(INITIAL 20K NEXT 20k PCTINCREASE 75)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服