




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广东技术师范学院广东技术师范学院大型数据库开发训练大型数据库开发训练课程课程 Instructor: Dr. Wen Jianfeng Email: 大型数据库开发训练大型数据库开发训练 第第6讲:管理模式对象讲:管理模式对象 内容提纲内容提纲 o 模式(模式(Schemas) o 表(表(Tables) o 索引(索引(Indexes) o 约束(约束(Constraints) o 视图(视图(Views) o 序列(序列(Sequences) o 同义词(同义词(Synonyms) 2 模式模式(Schemas) 3 模式(模式(Schema) 4 模式(模式(Schema) o 模式模式
2、是表、视图、索引和其他数据库对象的集合是表、视图、索引和其他数据库对象的集合 o 可以认为可以认为“模式模式”与与“用户账户用户账户”是等同的内容是等同的内容 n 只有一点微小的区别:用户账户保存着用户所拥有的只有一点微小的区别:用户账户保存着用户所拥有的 对象,而模式则是在那里保存的对象的集合对象,而模式则是在那里保存的对象的集合 o 所有数据库对象可以划分为两大类所有数据库对象可以划分为两大类 n 模式对象模式对象:可以被用户账户所拥有的对象:可以被用户账户所拥有的对象 p 如:表、约束、索引、视图、序列、私有同义词、如:表、约束、索引、视图、序列、私有同义词、PL/SQL 包、存储过程等
3、包、存储过程等 n 非模式对象非模式对象:不能被用户账户所拥有的对象:不能被用户账户所拥有的对象 p 如:表空间、用户、角色、公有同义词等如:表空间、用户、角色、公有同义词等 5 模式(模式(Schema) o 在创建数据库时,将自动创建很多在创建数据库时,将自动创建很多用户用户及其相关及其相关 联的联的模式模式 n 用户如:用户如:SYS、SYSTEM n SYS模式:模式: p 用户用户SYS拥有数据字典,拥有数据字典,SYS模式中的这组表定义数据库及模式中的这组表定义数据库及 其内容;其内容; p SYS还拥有数百个还拥有数百个PL/SQL包,是为数据库管理员和开发人包,是为数据库管理员
4、和开发人 员提供的代码员提供的代码 n SYSTEM模式:模式: p 存储各种用于管理和监视的附加对象存储各种用于管理和监视的附加对象 6 模式(模式(Schema) o 模式与用户的关系模式与用户的关系 n 模式与用户相对应模式与用户相对应,一个模式只能被一个数据库用,一个模式只能被一个数据库用 户所拥有,并且模式的名称与这个用户的名称相同户所拥有,并且模式的名称与这个用户的名称相同 n 通常情况下,用户所创建数据库对象都通常情况下,用户所创建数据库对象都保存在与自保存在与自 己同名的模式中己同名的模式中 n 同一模式中数据库对象的同一模式中数据库对象的名称必须唯一名称必须唯一,而在不同,而
5、在不同 模式中的数据库对象可以同名模式中的数据库对象可以同名 n 默认情况下,用户引用的对象是与自己同名模式中默认情况下,用户引用的对象是与自己同名模式中 的对象,如果要引用其他模式中的对象,需要在该的对象,如果要引用其他模式中的对象,需要在该 对象名之前指明对象所属模式对象名之前指明对象所属模式 7 模式(模式(Schema) o 模式选择与切换模式选择与切换 n 如果用户以如果用户以NORMAL身份登录,则进入同名模式身份登录,则进入同名模式 n 若以若以SYSDBA身份登录,则进入身份登录,则进入SYS模式模式 n 如果以如果以SYSOPER身份登录,则进入身份登录,则进入PUBLIC模
6、式模式 p conn / as sysoper o 模式的创建模式的创建 n 创建用户时,就创建了同名的模式,不用另外创建创建用户时,就创建了同名的模式,不用另外创建 n 例如:例如: p CREATE USER gdin IDENTIFIED BY gdin;(创建用户)(创建用户) p GRANT CONNECT, RESOURCE TO gdin; (赋权限)(赋权限) 8 模式(模式(Schema) o 举例:举例:HR模式模式 9 表表(Tables) 10 创建表创建表 o CREATE TABLE语法:语法: n column_level_constraint:列级约束:列级约束
7、 n table_level_constraint:表级约束:表级约束 n parameter_list:表的参数:表的参数 11 CREATE TABLE table_name ( column_name datatype column_level_constraint , column_name datatype column_level_constraint , table_level_constraint ) parameter_list; 创建表创建表 o 举例:举例: 12 CREATE TABLE employees( employee_id NUMBER(6), first_n
8、ameVARCHAR2(20), last_name VARCHAR2(25), email VARCHAR2(25), phone_number VARCHAR2(20), hire_date DATE, job_id VARCHAR2(10), salary NUMBER(8,2), commission_pct NUMBER(2,2), manager_id NUMBER(6), department_id NUMBER(4) ); 查看表结构查看表结构 o 语法:语法: n DESCRIBE table_name n DESC table_name 13 Oracle内置数据类型内置数
9、据类型 14 CHAR(N), NCHAR(N) VARCHAR2(N), NVARCHAR2(N) NUMBER(P,S) DATE TIMESTAMP RAW(N) BLOB, CLOB, NCLOB, BFILE LONG, LONG RAW ROWID, UROWID VARRAY TABLE REF Data type Built-in(内置)(内置)User-defined Scalar(标量)(标量)Relationship(关系)(关系)Collection(集合)(集合) 字符数据类型字符数据类型 o 字符数据可以作为字符数据可以作为长度固定长度固定或或长度可变长度可变的字符
10、的字符 串存储在数据库中串存储在数据库中 o CHAR(n)、NCHAR(n) n Character的缩写的缩写 n 定长字符串,定长字符串,n的取值范围为的取值范围为12000字节字节 n 用空格填满空白内容用空格填满空白内容 o VARCHAR2(n)、NVARCHAR2(n) n Variable character的缩写的缩写 n 可变字符串,可变字符串,n取值范围为取值范围为14000字节字节 n 自动调整数据长度,仅使用存储实际列值所需要的自动调整数据长度,仅使用存储实际列值所需要的 字节数,每行的大小可以不同字节数,每行的大小可以不同 15 数字数据类型数字数据类型 o 数字始
11、终以数字始终以长度可变长度可变的数据存储,最多可以存的数据存储,最多可以存 储储38个有效数位个有效数位 o NUMBER(p, s) n 用于存储整数和实数用于存储整数和实数 n p表示数值的表示数值的总位数总位数(精度,(精度,Precision),取值范围),取值范围 为为138,默认为,默认为38 n s表示表示小数位数小数位数(Scale),若为负数则表示把数据),若为负数则表示把数据 向小数点左边舍入,默认值为向小数点左边舍入,默认值为0 n 例如:例如: p NUMBER(5, 2):当输入值为:当输入值为4.5678时,保存为时,保存为4.57 p NUMBER(5, -2):
12、当输入值为:当输入值为1056.34时,保存为时,保存为1100 16 浮点数据类型浮点数据类型 o BINARY_FLOAT o BINARY_DOUBLE o 保存的是近似值保存的是近似值 o 用于科学计算,它们的特点与用于科学计算,它们的特点与Java等编程语言等编程语言 中的中的float和和double类似类似 17 日期数据类型日期数据类型 o DATE n 存储日期和时间存储日期和时间 n 保存的域包括世纪、保存的域包括世纪、年、月、日、时、分、秒年、月、日、时、分、秒(7个个 字节)字节) n Oracle内部以数字的形式保存内部以数字的形式保存DATE类型数据类型数据 n 默
13、认日期显示格式由参数默认日期显示格式由参数NLS_DATE_FORMAT所所 定义定义 o TIMESTAMP(n) n 存储日期和时间存储日期和时间 n 表示时间戳,是表示时间戳,是DATE的扩展,允许存储小数形式的扩展,允许存储小数形式 的秒值的秒值 n n表示表示秒的小数位数秒的小数位数,取值范围为,取值范围为19,默认值为,默认值为6 18 RAW数据类型数据类型 o 可以使用此数据类型存储可以使用此数据类型存储小型二进制数据小型二进制数据 o 在网络中的计算机之间传输在网络中的计算机之间传输RAW数据时,或者数据时,或者 使用使用Oracle实用程序将实用程序将RAW数据从一个数据库
14、数据从一个数据库 移到另一个数据库时,移到另一个数据库时,Oracle服务器服务器不执行字不执行字 符集转换符集转换 o 存储实际列值所需要的字节数大小随每行大小存储实际列值所需要的字节数大小随每行大小 而异,最多为而异,最多为2000 字节字节 19 LOB数据类型(大型对象)数据类型(大型对象) o Oracle为存储为存储LOB提供六种数据类型:提供六种数据类型: n CLOB和和LONG用于存储大型的、可变长度的用于存储大型的、可变长度的字符数字符数 据据,如文本文件等,最大数据量为,如文本文件等,最大数据量为4GB n NCLOB用于存储大型的、可变长度的用于存储大型的、可变长度的国
15、家字符集数国家字符集数 据据,最大数据量为,最大数据量为4GB n BLOB和和LONG RAW用于存储大型的、非结构化的用于存储大型的、非结构化的 可变长度的可变长度的二进制数据二进制数据(如二进制文件、图片文件、(如二进制文件、图片文件、 音频和视频等非文本文件),最大数据量为音频和视频等非文本文件),最大数据量为4GB n BFILE用于存储用于存储操作系统文件操作系统文件中的非结构化数据中的非结构化数据 p 注:注:LONG和和LONG RAW已由已由CLOB和和BLOG取代取代,保留,保留 它们主要用于向后兼容,它们的最大数据量为它们主要用于向后兼容,它们的最大数据量为2G p 当数
16、据量大于当数据量大于4000字节时,字节时,LOB在表中存储一个定位器,而在表中存储一个定位器,而 将数据存储在另一位置。将数据存储在另一位置。LOB允许将数据存储在单独的段和允许将数据存储在单独的段和 表空间中,或者存储在主机文件中表空间中,或者存储在主机文件中 20 ROWID和和UROWID数据类型数据类型 o ROWID n ROWID是数据库中每行的唯一标识符是数据库中每行的唯一标识符 n ROWID并不显式地作为一个列值存储(伪列)并不显式地作为一个列值存储(伪列) n ROWID并不直接给出一行的物理地址,但它可以并不直接给出一行的物理地址,但它可以 用来定位行用来定位行 n R
17、OWID为访问表中的行提供了最快的方法为访问表中的行提供了最快的方法 n ROWID存储在索引中来指定具有一组给定的键值存储在索引中来指定具有一组给定的键值 的行的行 n ROWID类型可以作为表中某个列的数据类型类型可以作为表中某个列的数据类型 o UROWID(通用(通用ROWID) n 它支持外表(非它支持外表(非Oracle 表)的表)的ROWID,并且可存,并且可存 储各种类型的储各种类型的ROWID 21 集合数据类型集合数据类型 o VARRAY(变化数组)(变化数组) n 变化数组对于存储包含少量组成元素的列表(如客变化数组对于存储包含少量组成元素的列表(如客 户的电话号码)非
18、常有用户的电话号码)非常有用 n VARRAY具有以下特征:具有以下特征: p 数组即一组有序的数据组成元素数组即一组有序的数据组成元素 p 一个给定数组的所有组成元素的数据类型相同一个给定数组的所有组成元素的数据类型相同 p 每个组成元素都有索引,即与数组中组成元素的位置相对每个组成元素都有索引,即与数组中组成元素的位置相对 应的编号应的编号 p 数组中组成元素的数目决定了数组的大小数组中组成元素的数目决定了数组的大小 p Oracle服务器允许数组的大小可以变化,这就是它们被称服务器允许数组的大小可以变化,这就是它们被称 为为VARRAY(意为变化数组)的原因,但在声明数组类型(意为变化数
19、组)的原因,但在声明数组类型 时必须指定最大大小时必须指定最大大小 22 集合数据类型集合数据类型 o TABLE(嵌套表)(嵌套表) n 嵌套表提供一种将一个表定义为另一个表内一列的嵌套表提供一种将一个表定义为另一个表内一列的 方法。嵌套表可用来存储可能包含大量记录的集合方法。嵌套表可用来存储可能包含大量记录的集合 (比如一个订单中的若干条目)(比如一个订单中的若干条目) n 嵌套表一般具有以下特征:嵌套表一般具有以下特征: p 嵌套表是一组无次序的记录或行嵌套表是一组无次序的记录或行 p 嵌套表中的各行结构相同嵌套表中的各行结构相同 p 嵌套表中的行与父表分别存储,并且父表中的对应行有一嵌
20、套表中的行与父表分别存储,并且父表中的对应行有一 个指针个指针 p 嵌套表的存储特点可由数据库管理员来定义嵌套表的存储特点可由数据库管理员来定义 p 嵌套表没有预先确定的最大大小嵌套表没有预先确定的最大大小 23 关系数据类型关系数据类型 o REF n 关系类型在数据库内用作指针关系类型在数据库内用作指针 n 使用这些类型需要使用这些类型需要“对象对象” (Objects) 选项。(比如:选项。(比如: 订单的每一项都可以指向或引用订单的每一项都可以指向或引用PRODUCTS表中的表中的 一行,而不必存储产品代码)一行,而不必存储产品代码) 24 用户定义的数据类型用户定义的数据类型 o O
21、racle允许用户定义抽象的数据类型并在应用允许用户定义抽象的数据类型并在应用 程序内使用这些数据类型程序内使用这些数据类型 25 ROWID格式格式 o 扩展的扩展的ROWID在磁盘上需要在磁盘上需要10 个字节的存储个字节的存储 空间,并使用空间,并使用18 个字符来显示个字符来显示 o 它包含下列组成元素:它包含下列组成元素: n 数据对象编号数据对象编号:每个数据对象(如表或索引)在创:每个数据对象(如表或索引)在创 建时都分配有此编号,并且此编号在数据库中是唯建时都分配有此编号,并且此编号在数据库中是唯 一的一的 n 相关文件编号相关文件编号:此编号对于表空间中的每个文件是:此编号对
22、于表空间中的每个文件是 唯一的唯一的 n 块编号块编号:表示包含此行的块在文件中的位置:表示包含此行的块在文件中的位置 n 行编号行编号:标识块头中行目录位置的位置:标识块头中行目录位置的位置 26 OOOOOOBBBBBBFFFRRR Data object number Relative file number Row numberBlock number ROWID格式格式 o 例如:例如: n AAAS13是数据对象编号是数据对象编号 n AAE是相关文件编号是相关文件编号 n AAAACV是块编号是块编号 n AAA是员工号为是员工号为7369的行的行编号的行的行编号 27 使用使用
23、ROWID定位行定位行 o ROWID可以用来定位一个数据库中的任意行可以用来定位一个数据库中的任意行 n 因为一个段只能驻留在一个表空间中,所以,因为一个段只能驻留在一个表空间中,所以, Oracle服务器可以使用服务器可以使用数据对象编号数据对象编号来确定包含某来确定包含某 一行的表空间一行的表空间 n 表空间中的相关表空间中的相关文件编号文件编号用来定位文件,用来定位文件,块编号块编号用用 来定位包含该行的块,来定位包含该行的块,行编号行编号用来定位该行的行目用来定位该行的行目 录条目录条目 n 行目录条目可以用来定位行首行目录条目可以用来定位行首 28 使用使用ROWID定位行定位行
24、o ROWID是是伪列伪列,计算出来的,表中并没有存,计算出来的,表中并没有存 储储ROWID,每一行的,每一行的ROWID是根据该行的物是根据该行的物 理位置计算出来的,我们根据理位置计算出来的,我们根据ROWID可以获可以获 得该行的所在的物理位置得该行的所在的物理位置 29 行的结构行的结构 o 行数据作为长度可变的记录存储在数据库块中。行数据作为长度可变的记录存储在数据库块中。 通常,一个行的各列按其定义时的顺序存储,并通常,一个行的各列按其定义时的顺序存储,并 且不存储尾随的且不存储尾随的NULL列列 n 注:对于非尾随的注:对于非尾随的NULL列,列长度需占用一个字节列,列长度需占
25、用一个字节 o 表中的每行具有:表中的每行具有: n 行头:用来存储行中的列数、链接信息和行锁定状态行头:用来存储行中的列数、链接信息和行锁定状态 n 行数据:对于每一列,行数据:对于每一列,Oracle服务器存储列的长度和服务器存储列的长度和 值,列值在紧靠列长度字节后面存储值,列值在紧靠列长度字节后面存储 n 相邻的行之间不需要任何空格相邻的行之间不需要任何空格 n 块中的每一行在行目录中都有一个位置,目录位置指块中的每一行在行目录中都有一个位置,目录位置指 向行首向行首 30 行的结构行的结构 31 Database block Row header Column length Colu
26、mn value 创建表时使用的参数创建表时使用的参数 o TABLESPACE子句子句 n 指定将要在其中创建表的表空间指定将要在其中创建表的表空间 n 如果省略如果省略TABLESPACE参数,则参数,则Oracle在包含该表在包含该表 的模式的所有者的缺省表空间中创建表的模式的所有者的缺省表空间中创建表 o STORAGE子句子句 n 指定表的存储特性。若不指定,则继承表空间的存指定表的存储特性。若不指定,则继承表空间的存 储参数设置储参数设置 p INITIAL:初始分配区的大小:初始分配区的大小 p NEXT:下一个分配区的大小:下一个分配区的大小 p MINEXTENTS:分配的最
27、小区数:分配的最小区数 p MAXEXTENTS:分配的最大区数:分配的最大区数 p PCTINCREASE:NEXT区及以后的区有关区大小增长的区及以后的区有关区大小增长的 百分比百分比 p 例如:例如:STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 5) 32 利用子查询创建表利用子查询创建表 o 语法:语法: n 通过该方法创建表时,可以修改表中列的名称,但是通过该方法创建表时,可以修改表中列的名称,但是 不能修改列的数据类型和长度不能修改列的数据类型和长度 n 源表中的约束条件和列的默认值都不会复
28、制到新表中源表中的约束条件和列的默认值都不会复制到新表中 n 当子查询条件为真时,新表中包含查询到的数据;当当子查询条件为真时,新表中包含查询到的数据;当 子查询条件为假时,则创建一个空表子查询条件为假时,则创建一个空表 33 CREATE TABLE table_name (column_name column_level_constraint , column_name column_level_constraint , table_level_constraint) parameter_list AS subquery; 利用子查询创建表利用子查询创建表 o 例如:创建一个表,保存工资高
29、于例如:创建一个表,保存工资高于15000元的员元的员 工的员工号、员工姓名和部门号。工的员工号、员工姓名和部门号。 n 注:注:employees表在表在HR模式中模式中 34 修改表修改表 o 修改表的基本语法:修改表的基本语法: n SET UNUSED:标记列为:标记列为“未用未用” n DROP UNUSED COLUMNS:永久删除标记为:永久删除标记为“未未 用用”的列的列 35 ALTER TABLE table_name ADD column_name datatype column_level_constraint MODIFY column_name datatype R
30、ENAME COLUMN oldname TO newname DROP COLUMN column_name DROP (column_name1, column_name2, .) SET UNUSED COLUMN column_name SET UNUSED (column_name1, column_name2, .) DROP UNUSED COLUMNS 删除表删除表 o 语法:语法: n 删除一个表的同时,删除一个表的同时,Oracle将执行下列操作:将执行下列操作: p 删除该表中所有记录删除该表中所有记录 p 从数据字典中删除该表定义从数据字典中删除该表定义 p 删除与该表
31、相关的所有索引和触发器删除与该表相关的所有索引和触发器 p 回收为该表分配的存储空间回收为该表分配的存储空间 p 依赖于该表的数据库对象处于依赖于该表的数据库对象处于INVALID状态状态 n 如果该表是外键关系中的父表,就必须使用如果该表是外键关系中的父表,就必须使用 CASCADE CONSTRAINTS选项选项 n 使用使用PURGE选项将彻底删除表,不放入回收站选项将彻底删除表,不放入回收站 36 DROP TABLE table_name CASCADE CONSTRAINTSPURGE 截断表截断表 o 语法:语法: n 截断一个表将删除表中所有行,释放已使用的空间截断一个表将删除
32、表中所有行,释放已使用的空间 n 不会生成任何还原数据不会生成任何还原数据 n 对应的索引将被截断对应的索引将被截断 n 不能截断某个外键正在引用的表不能截断某个外键正在引用的表 n 使用此命令时不会触发删除触发器使用此命令时不会触发删除触发器 37 TRUNCATE TABLE table_name DROP | REUSE STORAGE 查询表的数据字典查询表的数据字典 o DBA_TABLES、ALL_TABLES、 USER_TABLES o DBA_TAB_COLUMNS、 ALL_TAB_COLUMNS、 USER_TAB_COLUMNS o DBA_OBJECTS、ALL_OB
33、JECTS、 USER_OBJECTS 38 索引(索引(Indexes) 39 索引索引 o 表的数据是无序的,因为数据是随机存储的,所表的数据是无序的,因为数据是随机存储的,所 以在查询的时候需要全表扫描。索引就是将无序以在查询的时候需要全表扫描。索引就是将无序 的数据有序化,这样就可以在查询数据的时候减的数据有序化,这样就可以在查询数据的时候减 少数据块的读取,实现快速定位数据少数据块的读取,实现快速定位数据 o 索引是一种允许对表中的行进行直接访问的树型索引是一种允许对表中的行进行直接访问的树型 结构结构 n B树索引(平衡树索引)(默认是树索引(平衡树索引)(默认是B树索引)树索引)
34、 n 位图索引位图索引 o 索引的作用:快速定位数据,减少磁盘索引的作用:快速定位数据,减少磁盘 I/O 40 索引索引 o Oracle自动使用和维护索引自动使用和维护索引 o 在表上执行在表上执行DML操作时,操作时,Oracle服务器将维护服务器将维护 所有的索引所有的索引 n 插入操作导致在适当的块中插入索引项插入操作导致在适当的块中插入索引项 n 删除行只导致逻辑删除索引项删除行只导致逻辑删除索引项 n 更新键列将导致逻辑删除和向索引插入项更新键列将导致逻辑删除和向索引插入项 o 索引的缺点:索引的缺点: n 占用硬盘和内存空间占用硬盘和内存空间 n 会减慢数据更新的速度会减慢数据更
35、新的速度 o 索引不能盲目建立索引不能盲目建立 41 B树索引树索引 o B树树 n 占用空间多,适合索引值基数高、重复率低的应用占用空间多,适合索引值基数高、重复率低的应用 42 Index entry header Key column length Key column value ROWID 根节点根节点 分支节点分支节点 叶节点叶节点 Index entry B树索引树索引 o 根根和和枝干枝干中存放键值范围的导引指针中存放键值范围的导引指针 o 叶子叶子中存放的是条目中存放的是条目 o 条目条目中存放的是索引的键值和该数据行的中存放的是索引的键值和该数据行的ROWID o 叶子间有
36、双重链接,有助于按键值的升序和降序叶子间有双重链接,有助于按键值的升序和降序 扫描索引扫描索引 43 位图索引位图索引 o 位图位图 n 占用空间少,适合索引值基数少、重复率高的应用占用空间少,适合索引值基数少、重复率高的应用 44 key start ROWID end ROWID bitmap(位图)(位图) Table Index Block 10 Block 11 Block 12 File 3 位图索引位图索引 o 可以将位图索引组织为可以将位图索引组织为B 树,但叶节点树,但叶节点存储每存储每 个键值的位图个键值的位图而非而非ROWID。位图中的每一位。位图中的每一位 对应一个可能
37、的对应一个可能的ROWID,如果设置了位,则,如果设置了位,则 意味着具有相应意味着具有相应ROWID的行包含键值的行包含键值 o 位图索引的结构位图索引的结构 n Start ROWID p 例如:文件号例如:文件号3、块号、块号10 、行号、行号0 n End ROWID p 例如:文件号例如:文件号3、块号、块号12 、行号、行号8 n 位图段位图段 p 由位串组成(对应的行包含键值时设置位;不包含键值时由位串组成(对应的行包含键值时设置位;不包含键值时 不设置位)不设置位) 45 B树索引树索引 vs. 位图索引位图索引 B 树树位图位图 适用于高基数列适用于低基数列 更新键列的成本相
38、对较低更新键列的成本非常高 使用OR谓词进行查询时效率较低使用OR谓词进行查询时效率较高 对OLTP很有用对数据仓库很有用 46 索引使用原则索引使用原则 o 在在大表大表上建立索引上建立索引 o 在在WHERE子句子句或或连接条件连接条件上经常使用的列上上经常使用的列上 建立索引建立索引 o 对于取值范围很大的列应当创建对于取值范围很大的列应当创建B树索引树索引 o 对于取值范围很小的列应当创建对于取值范围很小的列应当创建位图索引位图索引 o Oracle会自动在会自动在PRIMARY KEY和和UNIQUE约约 束的列上创建唯一性索引束的列上创建唯一性索引 o 限制表中索引的限制表中索引的
39、数目数目 47 创建索引创建索引 o 语法语法 n UNIQUE表示建立惟一性索引表示建立惟一性索引 n BITMAP表示建立位图索引表示建立位图索引 n ASC/DESC用于指定索引值的排列顺序,用于指定索引值的排列顺序,ASC表示按表示按 升序排序,升序排序,DESC表示按降序排序,缺省值为表示按降序排序,缺省值为ASC n REVERSE表示建立反键索引表示建立反键索引 n parameter_list用于指定索引的存放位置、存储空间分用于指定索引的存放位置、存储空间分 配和数据块参数设置配和数据块参数设置 48 CREATE UNIQUE|BITMAP INDEX index_name
40、 ON table_name(column_nameASC|DESC,| expression) REVERSE parameter_list; 隐式创建索引隐式创建索引 o 如果在一个表上创建了一个如果在一个表上创建了一个PRIMARY KEY或或 UNIQUE类型的约束,类型的约束,SQL将自动创建一个索将自动创建一个索 引来支持列上的约束引来支持列上的约束 49 显式创建索引显式创建索引 o 单列索引单列索引 n CREATE INDEX ix_inv_date ON invoices (invoice_date) o 复合索引复合索引 n CREATE INDEX ix_inv_inv
41、oice_vendor_id ON invoices (vendor_id, invoice_date) o 唯一索引唯一索引 n CREATE UNIQUE INDEX ix_emp_ssn ON employees (ssn) 50 重建索引重建索引 o 使用使用ALTER INDEX命令执行以下操作:命令执行以下操作: n 将索引移到另一个表空间中将索引移到另一个表空间中 n 通过移除已删除的项,提高空间的使用率通过移除已删除的项,提高空间的使用率 n ALTER INDEX orders_id_idx REBUILD TABLESPACE index2 51 合并索引合并索引 o 遇到
42、索引碎片时,可以重建或合并索引遇到索引碎片时,可以重建或合并索引 n ALTER INDEX orders_id_idx COALESCE 52 合并前合并前合并后合并后 检查索引及其有效性检查索引及其有效性 53 ANALYZE INDEX orders_id_idx VALIDATE STRUCTURE; INDEX_STATS 检查索引及其有效性检查索引及其有效性 n HEIGHT:索引的层数:索引的层数 n BLOCKS:索引总块数:索引总块数 n BR_BLKS:枝干块数:枝干块数 n LF_BLKS:叶子块数:叶子块数 n LF_ROWS:叶子内行数:叶子内行数 n DEL_LF_
43、ROWS:叶子中被删除的行数:叶子中被删除的行数 n 如果索引中已删除行的比例很高,请重新组织该索引如果索引中已删除行的比例很高,请重新组织该索引 p 例如:当例如:当DEL_LF_ROWS占占LF_ROWS的比率超过的比率超过30%时时 54 删除索引删除索引 o 语法:语法: o 在下面几种情况下,可以考虑删除索引在下面几种情况下,可以考虑删除索引 n 该索引不再使用该索引不再使用 n 通过一段时间监视,发现几乎没有查询或只有极少通过一段时间监视,发现几乎没有查询或只有极少 数查询会使用该索引数查询会使用该索引 n 由于索引中包含损坏的数据块或包含过多的存储碎由于索引中包含损坏的数据块或包
44、含过多的存储碎 片等,需要删除该索引,然后重建索引片等,需要删除该索引,然后重建索引 n 由于移动了表数据而导致索引失效由于移动了表数据而导致索引失效 55 DROP INDEX index_name 标识未用索引标识未用索引 o 开始监视索引的使用开始监视索引的使用 o 停止监视索引的使用停止监视索引的使用 o 查看数据字典查看数据字典V$OBJECT_USAGE 56 ALTER INDEX index_name MONITORING USAGE ALTER INDEX index_name NOMONITORING USAGE 查询索引的数据字典查询索引的数据字典 o DBA_INDEX
45、ES、ALL_INDEXES、 USER_INDEXES o DBA_ IND_COLUMNS、ALL_ IND_COLUMNS、 USER_ IND_COLUMNS o V$OBJECT_USAGE n 提供有关索引使用情况的信息提供有关索引使用情况的信息 57 约束约束(Constraints) 58 数据完整性(数据完整性(Data Integrity) 59 应用程序代码应用程序代码 Table 数据数据 完整性约束完整性约束数据库触发器数据库触发器 约束(约束(Constraint) o 约束的作用约束的作用 n 是在表中定义的用于维护数据库完整性的一些规则。是在表中定义的用于维护数
46、据库完整性的一些规则。 通过对表中列定义约束,可以防止在执行通过对表中列定义约束,可以防止在执行DML操作操作 时,将不符合要求的数据插入到表中。时,将不符合要求的数据插入到表中。 o 约束类型约束类型 n PRIMARY KEY(主键约束)(主键约束) n UNIQUE(唯一性约束)(唯一性约束) n CHECK(检查约束)(检查约束) n FOREIGN KEY (外键约束)(外键约束) n NULL/NOT NULL (空(空/非空约束)非空约束) 60 主键约束(主键约束(PRIMARY KEY) o 主键的特点主键的特点 n 起惟一标识作用,其值不能为起惟一标识作用,其值不能为NUL
47、L,也不能重复,也不能重复 n 一个表中只能定义一个主键约束一个表中只能定义一个主键约束 n 建立主键约束的同时,在该列上建立一个惟一性索引建立主键约束的同时,在该列上建立一个惟一性索引 61 UNIQUE(唯一性约束)(唯一性约束) o 唯一性约束的特点唯一性约束的特点 n 定义为惟一性约束的某一列或多个列的组合的取值定义为惟一性约束的某一列或多个列的组合的取值 必须惟一必须惟一 n 如果某一列或多个列仅定义惟一性约束,而没有定如果某一列或多个列仅定义惟一性约束,而没有定 义非空约束,则该约束列可以包含多个空值义非空约束,则该约束列可以包含多个空值 n Oracle自动在惟一性约束列上建立一
48、个惟一性索引自动在惟一性约束列上建立一个惟一性索引 62 PRIMARY KEY vs. UNIQUE o 在一个基本表中只能定义一个在一个基本表中只能定义一个PRIMARY KEY 约束,但可定义多个约束,但可定义多个UNIQUE约束约束 o 对于指定为对于指定为PRIMARY KEY的一个列或多个列的一个列或多个列 的组合,其中任何一个列都不能出现空值,而的组合,其中任何一个列都不能出现空值,而 对于对于UNIQUE所约束的唯一键,则允许为空所约束的唯一键,则允许为空 o 不能为同一个列或一组列既定义不能为同一个列或一组列既定义UNIQUE约束,约束, 又定义又定义PRIMARY KEY约
49、束约束 63 CHECK(检查约束)(检查约束) o 检查约束的特点检查约束的特点 n 检查约束用来限制列值所允许的取值范围,其表达检查约束用来限制列值所允许的取值范围,其表达 式中必须引用相应列,并且表达式的计算结果必须式中必须引用相应列,并且表达式的计算结果必须 是一个布尔值是一个布尔值 n 约束表达式中不能包含子查询,也不能包含约束表达式中不能包含子查询,也不能包含 SYSDATE、USER等等SQL函数,以及函数,以及ROWID、 ROWNUM等伪列等伪列 n 一个列可以定义多个检查约束一个列可以定义多个检查约束 64 FOREIGN KEY (外键约束)(外键约束) o 外键约束的概
50、念外键约束的概念 n FOREIGN KEY约束指定某一个列或一组列作为外约束指定某一个列或一组列作为外 部键,其中,包含外部键的表称为从表,包含外部部键,其中,包含外部键的表称为从表,包含外部 键所引用的主键或唯一键的表称主表键所引用的主键或唯一键的表称主表 n 系统保证从表在外部键上的取值要么是主表中某一系统保证从表在外部键上的取值要么是主表中某一 个主键值或唯一键值,要么取空值。以此保证两个个主键值或唯一键值,要么取空值。以此保证两个 表之间的连接,确保了实体的参照完整性表之间的连接,确保了实体的参照完整性 65 FOREIGN KEY (外键约束)(外键约束) o 外键约束的特点外键约
51、束的特点 n 定义外键约束的列的取值要么是主表参照列的值,定义外键约束的列的取值要么是主表参照列的值, 要么为空要么为空 n 外键列只能参照于主表中的主键约束列或惟一性约外键列只能参照于主表中的主键约束列或惟一性约 束列束列 n 可以在一列或多列组合上定义外键约束可以在一列或多列组合上定义外键约束 66 NULL/NOT NULL(空(空/非空约束)非空约束) o 空空/非空约束的特点非空约束的特点 n 在同一个表中可以定义多个在同一个表中可以定义多个NOT NULL约束约束 n 只能是列级约束只能是列级约束 67 DEFAULT(默认值约束)(默认值约束) o 如果用户在插入新行时没有显示为
52、列提供数据,如果用户在插入新行时没有显示为列提供数据, 系统将默认值赋给该列系统将默认值赋给该列 o 语法:语法: 68 CONSTRAINT DEFAULT 表达式表达式 定义约束定义约束 o 列级约束列级约束 n 对某一个特定列的约束,包含在列定义中,直接跟在对某一个特定列的约束,包含在列定义中,直接跟在 该列的其他定义之后,用空格分隔,不必指定列名该列的其他定义之后,用空格分隔,不必指定列名 o 定义列级约束的语法为:定义列级约束的语法为: 69 CONSTRAINT constraint_name constraint_type conditioin; 定义约束定义约束 o 表级约束表
53、级约束 n 与列定义相互独立,不包括在列定义中。通常用于与列定义相互独立,不包括在列定义中。通常用于 对多个列一起进行约束,与列定义用逗号分隔。定对多个列一起进行约束,与列定义用逗号分隔。定 义表约束时必须指出要约束的那些列的名称义表约束时必须指出要约束的那些列的名称 o 定义表级约束的语法为:定义表级约束的语法为: 70 CONSTRAINT constraint_name constraint_type(column1_name, column2_name,|condition); 定义约束定义约束 o 注意注意 n Oracle约束通过名称进行标识。在定义时可以通过约束通过名称进行标识。
54、在定义时可以通过 CONSTRAINT关键字为约束命名。如果用户没有关键字为约束命名。如果用户没有 为约束命名,为约束命名,Oracle将自动为约束命名。将自动为约束命名。 71 添加和删除约束添加和删除约束 o 添加约束语法:添加约束语法: o 删除约束语法:删除约束语法: n 可以通过直接指定约束的名称来删除约束,或指定可以通过直接指定约束的名称来删除约束,或指定 约束的内容来删除约束约束的内容来删除约束 72 ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type(column1_name,column2
55、_nam e,)condition; ALTER TABLE table_name DROP 在在CREATE TABLE中创建约束中创建约束 o 列级约束列级约束 n 在在PORT_ID列上创建列上创建PRIMARY KEY约束约束 n 在在STATUS列上创建列上创建NOT NULL约束约束 73 在在CREATE TABLE中创建约束中创建约束 o 表级约束表级约束 n 在在PORT_ID列上创建列上创建PRIMARY KEY约束约束 74 在在CREATE TABLE中创建约束中创建约束 o 例:例:UNIQUE约束约束 75 在在CREATE TABLE中创建约束中创建约束 o 例:
56、例:FOREIGN KEY约束约束 76 在在CREATE TABLE中创建约束中创建约束 o 例:例:CHECK约束约束 77 在在CREATE TABLE中创建约束中创建约束 o 例:创建表是同时声明多个约束例:创建表是同时声明多个约束 78 修改约束修改约束 o 语法:语法: 79 ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type(column1,) condition| MODIFY column NOT NULL|NULL| DROP CONSTRAINT constraint_name| PR
57、IMARY KEY|UNIQUE(column) 通过通过ALTER TABLE创建约束创建约束 o 先建表,然后修改列的声明,增加主键约束先建表,然后修改列的声明,增加主键约束 80 通过通过ALTER TABLE创建约束创建约束 o 先建表,然后为列增加主键约束先建表,然后为列增加主键约束 81 查询约束信息查询约束信息 o 通过查询以下视图获取有关约束的信息:通过查询以下视图获取有关约束的信息: n DBA_CONSTRAINTS、ALL_CONSTRAINTS、 USER_CONSTRAINTS p CONSTRAINT_TYPE列的值:如果为主键约束,则约束列的值:如果为主键约束,则
58、约束 类型为类型为P;如果为唯一性约束,则为;如果为唯一性约束,则为U;如果为外键约束,;如果为外键约束, 则为则为R;如果为检查约束,则为;如果为检查约束,则为C。NOT NULL 约束存储约束存储 为检查约束。为检查约束。 n DBA_CONS_COLUMNS、 ALL_CONS_COLUMNS、 USER_CONS_COLUMNS 82 视图(视图(Views) 83 视图视图 o 视图是从一个或多个表或视图中提取出来的数据视图是从一个或多个表或视图中提取出来的数据 的一种逻辑表现形式的一种逻辑表现形式 o 使用视图具有下列优点:使用视图具有下列优点: n 可以限制对基表数据的访问,只允
59、许用户通过视图看可以限制对基表数据的访问,只允许用户通过视图看 到表中的一部分数据到表中的一部分数据 n 可以使复杂的查询简单化可以使复杂的查询简单化 n 提供了数据的透明性,用户并不知道数据来自于何处提供了数据的透明性,用户并不知道数据来自于何处 n 提供了对相同数据的不同显示提供了对相同数据的不同显示 84 视图视图 85 HR.EMPLOYEES表表 CREATE VIEW创建视图创建视图 o 语法:语法: n FORCE:不管基表是否存在都创建视图:不管基表是否存在都创建视图 n NOFORCE:仅当基表存在时才创建视图(默认):仅当基表存在时才创建视图(默认) n subquery为
60、子查询,决定了视图中数据的来源为子查询,决定了视图中数据的来源 n WITH READ ONLY指明视图为只读视图,不能修改指明视图为只读视图,不能修改 n WITH CHECK OPTION指明在使用视图时,检查数指明在使用视图时,检查数 据是否符合子查询中的约束条件据是否符合子查询中的约束条件 n CONSTRAINT constraint为使用为使用WITH CHECK OPTION选项时指定的约束命名选项时指定的约束命名 86 CREATE OR REPLACE FORCE|NOFORCE VIEW schema.view_name(column1,column2,) AS subqu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024广西来宾市忻城文旅交通投资集团有限公司招聘1人笔试参考题库附带答案详解
- 赵飞燕:美貌是最昂贵的武器
- 第17课《壶口瀑布》文本分析及教学设计-2023-2024学年统编版语文八年级下册
- 第15课 货币的使用与世界货币体系的形成(课时教学设计)高二历史同步备课系列(统编版选择性必修一)
- 7-1《归园田居》教学设计 2024-2025学年统编版高中语文必修上册
- 第二章 第三节 第3课时长江的开发与治理教学设计-2024-2025学年人教版八年级地理上册
- 2025年湖南九嶷职业技术学院单招职业适应性测试题库学生专用
- 2024-2025学年高一语文开学第一课 教学设计
- 2024年12月中共漯河市委统战部漯河市港澳台侨和留学人员服务中心引进高层次人才1名笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2024年12月2025中国地质调查局局属单位公开招聘507人(第一批)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 五年级下册英语作文训练-外研版(三起)
- 7.2.1 圆柱(课件含动画演示)-【中职】高一数学(高教版2021基础模块下册)
- 第七节碎石路基施工方案
- 三年级数学兴趣班纲要及教案
- 记者行业现状分析及发展趋势
- 江苏省南通市海安中学2025届高一下生物期末综合测试试题含解析
- 2024年漯河食品职业学院单招职业适应性测试题库附答案
- 广东省深圳市2023年中考英语试题(含答案与解析)
- 《看看我们的地球》
- 吉林省地方教材家乡小学一年级下册家乡教案
- 苏教版数学五年级(下册)第1课时 单式折线统计图
评论
0/150
提交评论