




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Oracle数据库应用与实践数据库应用与实践.1-1Oracle数据库应用与实践数据库应用与实践.1-2复复 习习 提提 问问 回顾回顾创建表空间的方法创建表空间的方法表空间和数据文件的维护表空间和数据文件的维护引入引入Oracle数据库为什么要引入逻辑结构类?数据库为什么要引入逻辑结构类?简述表空间的基本功能。简述表空间的基本功能。了解表空间和数据文件的概念及关系了解表空间和数据文件的概念及关系。Oracle数据库应用与实践数据库应用与实践.1-3 在表空间的创建过程中,在表空间的创建过程中,Oracle 会完成以下工作:会完成以下工作: 1. 在数据字典和控制文件中记录下新创建的表空间。在
2、数据字典和控制文件中记录下新创建的表空间。 2. 在操作系统中按指定的位置和文件名创建指定大小的操作在操作系统中按指定的位置和文件名创建指定大小的操作系统文件,作为该表空间对应的数据文件。系统文件,作为该表空间对应的数据文件。 3. 在预警文件中记录下创建表空间的信息。在预警文件中记录下创建表空间的信息。 表空间和数据文件的维护表空间和数据文件的维护: 维护表空间的操作包括重命名表空间和数据文件,改变表空维护表空间的操作包括重命名表空间和数据文件,改变表空间和数据文件的状态,设置默认表空间,扩展表空间,删除表空间和数据文件的状态,设置默认表空间,扩展表空间,删除表空间及数据文件,以及查看表空间
3、和数据文件的信息等。间及数据文件,以及查看表空间和数据文件的信息等。Oracle数据库应用与实践数据库应用与实践.1-4 一、表的创建及管理方法一、表的创建及管理方法 二、表的约束的定义及使用方法二、表的约束的定义及使用方法 三、三、视图的创建及管理方法视图的创建及管理方法 四、四、索引的索引的分类、分类、创建及管理方法创建及管理方法 五、五、序列的创建、使用及管理方法序列的创建、使用及管理方法 六、六、同义词的创建及删除方法同义词的创建及删除方法主要内容主要内容Oracle数据库应用与实践数据库应用与实践.1-5一、表的创建及管理方法一、表的创建及管理方法 表是常见的一种组织数据的方式,一表
4、是常见的一种组织数据的方式,一张表一般都具有多个列,或者称为字段。张表一般都具有多个列,或者称为字段。 每个字段都具有特定的属性,这些属每个字段都具有特定的属性,这些属性在创建表时被确定。性在创建表时被确定。Oracle数据库应用与实践数据库应用与实践.1-6创建表创建表 创建表时需要使用创建表时需要使用CREATE TABLE语句语句。 此外,用户还必须在指定的表空间中具有一此外,用户还必须在指定的表空间中具有一定的配额存储空间。定的配额存储空间。Oracle数据库应用与实践数据库应用与实践.1-7创建表创建表说明:说明:表、列和其它数据库模式对象的名称,必须是合法表、列和其它数据库模式对象
5、的名称,必须是合法标识符,长度为标识符,长度为130 字节,并且以字母开头字节,并且以字母开头。在使用在使用PCTFREE和和PCTUSED子句时子句时要注意使用原要注意使用原则。则。1. 在在Oracle 11g中,除了中,除了INITIAL参数外,其余参数参数外,其余参数都会变为空值。都会变为空值。Oracle数据库应用与实践数据库应用与实践.1-8创建表创建表【例【例5-1】创建一个学生表(】创建一个学生表(student_1),表),表中包括学号(中包括学号(sno)、姓名()、姓名(sname)、性别)、性别(ssex)、出生日期()、出生日期(sbirthday)、所在系)、所在系
6、(sdept)。)。Oracle数据库应用与实践数据库应用与实践.1-9创建表创建表SQL CREATE TABLE student_1 (2sno CHAR(10),3sname VARCHAR2(30),4ssex CHAR(2),5sbirthday DATE,6sdept VARCHAR2 (30)7);表已创建。表已创建。Oracle数据库应用与实践数据库应用与实践.1-10【例5-2】利用子查询创建一个表(emp_select),表中包括职工号(emp_no)、职工姓名(emp_name)、职工所在部门号(dept_no),该表用于保存工资高于2000的员工的员工号、员工名和部门号
7、。SQL CREATE TABLE emp_select(2emp_no, emp_name, dept_no3)4AS5SELECT empno, ename, deptno FROM emp WHERE sal2000;表已创建。Oracle数据库应用与实践数据库应用与实践.1-11管理表管理表 增加字段增加字段 修改字段名称修改字段名称 管理字段管理字段 修改字段的数据类型修改字段的数据类型 删除字段删除字段管理操作管理操作 重命名表重命名表 移动表移动表 管理表管理表 截断表截断表 删除表删除表Oracle数据库应用与实践数据库应用与实践.1-121、管理字段管理字段(1)增加字段)增
8、加字段 为表增加字段的语法格式如下:为表增加字段的语法格式如下: ALTER TABLE table_name ADD(column_name1 datatype ,column_name2 datatype );(2)修改字段名称)修改字段名称 修改表中字段的名称的语法格式如下:修改表中字段的名称的语法格式如下: ALTER TABLE table_name RENAME COLUMN column_name TO new_column_nam;Oracle数据库应用与实践数据库应用与实践.1-131、管理字段管理字段(3)修改字段的数据类型)修改字段的数据类型 修改表中字段的数据类型的语法
9、格式如下:修改表中字段的数据类型的语法格式如下: ALTER TABLE table_name MODIFY column_name new_datatype;(4)删除字段)删除字段 一次删除表中一个字段的语法格式如下:一次删除表中一个字段的语法格式如下: ALTER TABLE table_name DROP COLUMN column_name; 一次删除表中多个字段的语法格式如下:一次删除表中多个字段的语法格式如下: ALTER TABLE table_name DROP (column_name1, );Oracle数据库应用与实践数据库应用与实践.1-142. 管理表管理表(1)重
10、命名表)重命名表 使用使用RENAME语句修改表名的语法格式如下:语句修改表名的语法格式如下: RENAME table_name TO new_table_name;(2)移动表)移动表 移动表的语法格式如下:移动表的语法格式如下: ALTER TABLE table_name MOVE TABLESPACE tablespace_name;Oracle数据库应用与实践数据库应用与实践.1-152. 管理表管理表(3)截断表)截断表 截断操作的语法格式如下:截断操作的语法格式如下: TRUNCATE TABLE table_name;(4)删除表)删除表 删除操作删除操作语法格式如下:语法格
11、式如下: DROP TABLE table_name CASCADE CONSTRAINTS PURGE;Oracle数据库应用与实践数据库应用与实践.1-16【例5-3】为已创建的学生表(student_1)增加新字段手机号(stelephone)、邮箱(semail)和通信地址(saddress)。SQLALTER TABLE student_12ADD (stelephone CHAR(11), semail VARCHAR2(20), saddress VARCHAR2(50);表已更改。使用DESCRIBE命令查看student表的结构,观察是否已经为该表成功添加新字段手机号(ste
12、lephone):SQLDESCRIBE student_1名称 是否为空? 类型- - -SNO CHAR(10)SNAME VARCHAR2(30)SSEX CHAR(2)SBIRTHDAY DATESDEPT VARCHAR2 (30)STELEPHONE CHAR(11)SEMAIL VARCHAR2 (20)SADDRESS VARCHAR2 (50)Oracle数据库应用与实践数据库应用与实践.1-17二、表的约束的定义及使用方法二、表的约束的定义及使用方法按照约束的用途可将表的完整性约束分为以下五类:按照约束的用途可将表的完整性约束分为以下五类: (1)NOT NULL:非空约束
13、。:非空约束。(2)UNIQUE:唯一性约束。:唯一性约束。(3)PRIMARY KEY:主键约束。:主键约束。(4)FOREIGN KEY:外键约束。:外键约束。(5)CHECK:检查约束。:检查约束。Oracle数据库应用与实践数据库应用与实践.1-18NOT NULL(非空)约束(非空)约束1. 定义定义NOT NULL约束约束 通过创建表的语法格式来实现向表中字段定义NOT NULL约束。2. 删除删除NOT NULL约束约束 如果需要删除表中已定义的NOT NULL约束,可以使用ALTER TABLE MODIFY语句来实现,语法形式如下:ALTER TABLE table_name
14、 MODIFY column_name NULL;Oracle数据库应用与实践数据库应用与实践.1-19【例5-15】创建一个学生表(student_2),表中包括学号(sno)、姓名(sname)、性别(ssex)、出生日期(sbirthday)、邮箱(semail)、所在系(sdept),要求为姓名(sname)定义NOT NULL约束。SQL CREATE TABLE student_2 (2sno CHAR(10),3sname VARCHAR2(30) CONSTRAINT sname_notnull NOT NULL,4ssex CHAR(2),5sbirthday DATE,6s
15、email VARCHAR2 (25),7sdept VARCHAR2 (30)8);表已创建。Oracle数据库应用与实践数据库应用与实践.1-20UNIQUE(唯一性)约束(唯一性)约束1. 定义单个字段的定义单个字段的UNIQUE约束约束 单个字段的UNIQUE约束定义一般应在该字段定义完毕后指定。2. 定义多个字段的定义多个字段的UNIQUE约束约束 多个字段的UNIQUE约束定义必须在所有字段定义完毕后再指定,并且必须明确指定约束名。3. 删除删除UNIQUE约束约束 如果UNIQUE约束未指定名称,删除时,可以使用ALTER TABLE DROP语句,形式如下: ALTER TAB
16、LE table_name DROP (column_name);Oracle数据库应用与实践数据库应用与实践.1-21【例5-16】创建一个学生表(student_3),表中包括学号(sno)、姓名(sname)、性别(ssex)、出生日期(sbirthday)、邮箱(semail)、所在系(sdept),要求为邮箱(semail)定义UNIQUE约束。SQL CREATE TABLE student_3 (2sno CHAR(10),3sname VARCHAR2(30),4ssex CHAR(2),5sbirthday DATE,6semail VARCHAR2 (25) CONSTRA
17、INT semail_unique UNIQUE,7sdept VARCHAR2 (30)8);表已创建。Oracle数据库应用与实践数据库应用与实践.1-22PRIMARY KEY(主键)约束(主键)约束1. 定义单个字段的定义单个字段的PRIMARY KEY约束约束 单个字段的PRIMARY KEY约束定义一般应在该字段定义完毕后指定。2. 定义多个字段的定义多个字段的PRIMARY KEY约束约束 多个字段的PRIMARY KEY约束定义必须在所有字段定义完毕后再指定,并且必须明确指定约束名。3. 删除删除PRIMARY KEY约束约束 删除字段上的PRIMARY KEY约束,可以使用A
18、LTER TABLE DROP语句,但删除时需要指定约束名,形式如下: ALTER TABLE table_name DROP CONSTRAINT constraint_name;Oracle数据库应用与实践数据库应用与实践.1-23【例5-18】创建一个学生表(student_5),表中包括学号(sno)、姓名(sname)、性别(ssex)、出生日期(sbirthday)、邮箱(semail)、所在系(sdept),要求为学号(sno)定义PRIMARY KEY约束。SQL CREATE TABLE student_5 (2sno CHAR(10) PRIMARY KEY,3sname
19、VARCHAR2(30),4ssex CHAR(2),5sbirthday DATE,6semail VARCHAR2 (25),7sdept VARCHAR2 (30)8);表已创建。Oracle数据库应用与实践数据库应用与实践.1-24FOREIGN KEY约束约束创建表时定义创建表时定义FOREIGN KEY约束格式如下:约束格式如下:CREATE TABLE schema.table_name1 ( /省略创建表的字段部分 CONSTRAINT constraint_name FOREIGN KEY ( column_name11 , column_name12, )REFERENCE
20、S schema.table_name2 ( column_name21 , column_name22, )ON DELETE CASCADE | SET NULL | NO ACTION );Oracle数据库应用与实践数据库应用与实践.1-25【例5-21】分别创建学生表(student_7)(包含学号(sno)、姓名(sname)、性别(ssex)和班级号(classid)和班级表(class)(包含班级号(classid)、班级名称(classname)和班级人数(classcount),表结构定义见表5-2和表5-3。并使用外键关联这两个表。SQL CREATE TABLE cla
21、ss (2classid NUMBER PRIMARY KEY,3classname VARCHAR2(30),4classcount NUMBER5);表已创建。SQL CREATE TABLE student_7 (2sno CHAR(10),3sname VARCHAR2(30),4ssex CHAR(2),5classid NUMBER,6CONSTRAINT student_7_class FOREIGN KEY ( classid ) 7REFERENCE class ( classid )8);Oracle数据库应用与实践数据库应用与实践.1-26禁用和激活约束禁用和激活约束1.
22、 约束的状态约束的状态 表的完整性约束可以处于如下两种状态:表的完整性约束可以处于如下两种状态: 激活状态(激活状态(ENABLE):激活状态下,约束将对表):激活状态下,约束将对表的插入或更新操作进行检查,与约束规则发生冲突的操作的插入或更新操作进行检查,与约束规则发生冲突的操作将被禁止。将被禁止。 禁用状态(禁用状态(DISABLE):禁止状态下,约束不再起):禁止状态下,约束不再起作用,与约束规则发生冲突的表的插入或更新操作也能够作用,与约束规则发生冲突的表的插入或更新操作也能够成功执行。成功执行。Oracle数据库应用与实践数据库应用与实践.1-27禁用和激活约束禁用和激活约束2. 定
23、义方法定义方法在创建表时定义约束的状态的语法格式如下:在创建表时定义约束的状态的语法格式如下:CREATE TABLE schema.table_name ( /省略创建表的字段部分 CONSTRAINT constraint_name constraint_type DISABLE | ENABLE , );Oracle数据库应用与实践数据库应用与实践.1-28约束的验证状态约束的验证状态 约束的另外两种状态决定是否对表中已有的数约束的另外两种状态决定是否对表中已有的数据进行约束限制检查。这两种状态分别是:据进行约束限制检查。这两种状态分别是: 验证状态(验证状态(VALIDATE):如果约
24、束处于验证状态,在):如果约束处于验证状态,在定义或激活约束时,定义或激活约束时,Oracle将会检查表中所有已有的记录是将会检查表中所有已有的记录是否满足约束限制。否满足约束限制。 非验证状态(非验证状态(NOVALIDATE):如果约束处于非验证):如果约束处于非验证状态,在定义或激活约束时,状态,在定义或激活约束时,Oracle不会检查表中所有已有不会检查表中所有已有的记录是否满足约束限制。的记录是否满足约束限制。Oracle数据库应用与实践数据库应用与实践.1-29约束的验证状态约束的验证状态 验证、非验证状态与激活、禁用状态结合,验证、非验证状态与激活、禁用状态结合,可组合成如下可组
25、合成如下4中约束状态:中约束状态: 1. ENABLE VALIDATE(激活验证状态)(激活验证状态) 2. ENABLE NOVALIDATE(激活非验证状态(激活非验证状态) 3. DISABLE VALIDATE(禁用验证状态(禁用验证状态) 4. DISABLE NOVALIDATE(禁用非验证状态(禁用非验证状态)Oracle数据库应用与实践数据库应用与实践.1-30【例5-23】创建学生表(student_9)(包含学号(sno)、姓名(sname)、性别(ssex)和班级号(classid)表结构定义见表5-2,并且为性别(ssex)定义CHECK约束,要求只允许该字段的数据值
26、为“男”或“女”。SQL CREATE TABLE student_9 (2sno CHAR(10),3sname VARCHAR2(30),4ssex CHAR(2),5classid NUMBER,6CONSTRAINT ssex_check CHECK ( ssex IN (男, 女 )7);表已创建。Oracle数据库应用与实践数据库应用与实践.1-31三、三、视图的创建及管理方法视图的创建及管理方法 视图是从一个或多个表或视图中提取出来的视图是从一个或多个表或视图中提取出来的数据的一种表现方式,数据的一种表现方式, 它并不存储真实的数据,不占用实际的存储它并不存储真实的数据,不占用实
27、际的存储空间,只是在数据字典中保存它的定义信息,所空间,只是在数据字典中保存它的定义信息,所以视图被认为是以视图被认为是“存储的查询存储的查询”或或“虚拟的表虚拟的表”。Oracle数据库应用与实践数据库应用与实践.1-32创建视图创建视图创建视图需要使用创建视图需要使用CREATE VIEW语句语句。其语法形式如下:其语法形式如下: CREATE OR REPLACE FORCE | NOFORCE VIEW schema. view_name alias_name , AS select语句 WITH CHECK OPTION | READ ONLY CONSTRAINT constrai
28、nt_name;Oracle数据库应用与实践数据库应用与实践.1-33创建视图创建视图1. 创建简单视图创建简单视图 所谓简单视图,指基于单个表,而且不对子查询检所谓简单视图,指基于单个表,而且不对子查询检索的字段进行函数或数学计算的视图。索的字段进行函数或数学计算的视图。 (1)先将)先将CREATE VIEW权限授予权限授予scott用户,可以在用户,可以在system用户模式下为用户模式下为scott用户授权操作如下:用户授权操作如下: SQL CONNECT system / admin; 已连接。 SQLGRANT CREATE VIEW TO scott; 授权成功。Oracle数
29、据库应用与实践数据库应用与实践.1-34创建视图创建视图 (2)使用)使用scott用户连接数据库(假设对应的口令为用户连接数据库(假设对应的口令为admin),并创建基于),并创建基于emp表的视图表的视图emp_view1: SQL CONNECT scott / admin; 已连接。 SQLCREATE VIEW emp_view1 2AS 3SELECT empno, ename, sal 4FROM emp WHERE deptno=30; 视图已创建。Oracle数据库应用与实践数据库应用与实践.1-35创建视图创建视图2. 创建复杂视图创建复杂视图 所谓复杂视图,指基于多个表,
30、或者对子查所谓复杂视图,指基于多个表,或者对子查询检索的字段进行函数或数学计算的视图,或者询检索的字段进行函数或数学计算的视图,或者对基表进行了对基表进行了DISTINCT查询查询Oracle数据库应用与实践数据库应用与实践.1-36创建视图创建视图【例【例5-27】基于表】基于表3-1,在,在scott用户下创建基于职工表(用户下创建基于职工表(emp)视图)视图emp_view2,并且对子查询中的检索的字段,并且对子查询中的检索的字段sal进行数据计算,查询工资上调进行数据计算,查询工资上调15%以后工资大于以后工资大于2000的职工编号(的职工编号(empno)、职工姓名()、职工姓名(
31、ename)和上调后)和上调后的职工工资(的职工工资(new_sal)。)。 SQLCREATE VIEW emp_view2 2 AS 3 SELECT empno, ename, sal*1.15 new_sal 4 FROM emp WHERE sal*1.152000; 视图已创建。Oracle数据库应用与实践数据库应用与实践.1-37视图的视图的DML操作操作 视图的视图的DML操作是指对视图中的字段操作是指对视图中的字段进行插入(进行插入(INSERT)、修改()、修改(UPDATE)和删除(和删除(DELETE)等的操作。)等的操作。 对视图进行对视图进行DML操作,实际上就是对
32、操作,实际上就是对视图的基表中的字段执行视图的基表中的字段执行DML操作。操作。Oracle数据库应用与实践数据库应用与实践.1-38视图的视图的DML操作操作 使用使用DESCRIBE命令了解数据字命令了解数据字user_updatable _columns的结构信息,如下:的结构信息,如下: SQLDESCRIBE user_updatable_columns 名称 是否为空?类型 OWNER NOT NULLVARCHAR2 ( 30 ) TABLE_NAME NOT NULLVARCHAR2 ( 30 ) COLUMN_NAME NOT NULLVARCHAR2 ( 30 ) UPDA
33、TABLE VARCHAR2 ( 3 ) INSERTABLE VARCHAR2 ( 3 ) DELETABLE VARCHAR2 ( 3 )Oracle数据库应用与实践数据库应用与实践.1-39视图的视图的DML操作操作【例【例5-29】查看已创建视图】查看已创建视图emp_view2中的字段中的字段是否支持是否支持DML操作。操作。SQLSELECT column_name, insertable, updatable, deletable2 FROM user_updatable_columns3 WHERE table_name = EMP_VIEW2;COLUMN_NAMEINSER
34、TABLEUPDATABLEDELETABLEEMPNO YES YES YESENAME YES YES YESNEW_SAL NO NO NOOracle数据库应用与实践数据库应用与实践.1-40修改和删除视图修改和删除视图 修改视图可直接使用修改视图可直接使用CREATE OR REPLACE VIEW语句来完成,执行该语句实际语句来完成,执行该语句实际上就是先删除原来的视图,然后再创建一个同名上就是先删除原来的视图,然后再创建一个同名的新的视图。的新的视图。 删除视图可使用删除视图可使用DROP VIEW语句,其语法语句,其语法形式如下:形式如下: DROP VIEW view_nam
35、e;Oracle数据库应用与实践数据库应用与实践.1-41四、四、索引的索引的分类、分类、创建及管理方法创建及管理方法 索引是数据库中用于存放表中每一条记录的位置索引是数据库中用于存放表中每一条记录的位置的一种对象,主要用于加快对标的查询操作。的一种对象,主要用于加快对标的查询操作。 创建索引要遵循以下原则:创建索引要遵循以下原则: 如果每次查询仅选择表中的少量行,应该建立索引。 如果在表上需要进行频繁的DML操作,不要建立索引。 尽量不要在有很多重复值的字段上建立索引。 不要在太小的表上建立索引。因为在一个小表中查询数 据时,速度可能已经足够快,如果建立索引,对查询速度不仅没有多大帮助,反而
36、需要一定的系统开销。Oracle数据库应用与实践数据库应用与实践.1-42索引分类索引分类 索引与表一样,不仅需要在数据字典中保存索引与表一样,不仅需要在数据字典中保存索引的定义,还需要在表空间中为它分配实际的索引的定义,还需要在表空间中为它分配实际的存储空间。存储空间。 当创建索引时,当创建索引时,Oracle会自动在用户的默会自动在用户的默认表空间中或指定的表空间中创建一个索引段,认表空间中或指定的表空间中创建一个索引段,为索引数据提供存储空间为索引数据提供存储空间Oracle数据库应用与实践数据库应用与实践.1-43索引分类索引分类 创建索引时,创建索引时,Oracle首先将要建立索引的
37、字首先将要建立索引的字段进行排序:段进行排序: 先对先对empno字段进行排序(默认是升序),然后将字段进行排序(默认是升序),然后将排序后的字段值和对应记录的排序后的字段值和对应记录的ROWID存储在索引中,此存储在索引中,此时称索引字段与时称索引字段与ROWID的组合为索引条目。的组合为索引条目。 从而在索引中,不仅存储了索引字段上的数据,而从而在索引中,不仅存储了索引字段上的数据,而且还存储了一个且还存储了一个ROWID值,它代表表中某条记录的标识,值,它代表表中某条记录的标识,即表中记录在存储空间的物理位置,找到符合条件的即表中记录在存储空间的物理位置,找到符合条件的empno字段值所
38、对应的字段值所对应的ROWID,然后再利用,然后再利用ROWID到到职工表(职工表(emp)中提取相应的记录。)中提取相应的记录。Oracle数据库应用与实践数据库应用与实践.1-44索引分类索引分类 在在Oracle中,可以创建多种类型的索引,中,可以创建多种类型的索引,以适应各种表的特点。常用的索引类型有:以适应各种表的特点。常用的索引类型有: B树索引、位图索引、函数索引、簇索引、散列簇索引、反序索引和位图连接索引。Oracle数据库应用与实践数据库应用与实践.1-45创建索引创建索引 用户可以在任何时候为表创建索引,索用户可以在任何时候为表创建索引,索引的创建不会影响到表中实际存储的数
39、据。引的创建不会影响到表中实际存储的数据。因此,索引是一种与表独立的模式对象。因此,索引是一种与表独立的模式对象。 索引可以自动创建,也可以手工创建。索引可以自动创建,也可以手工创建。如果在表的一个字段或几个字段上建立了主如果在表的一个字段或几个字段上建立了主键约束或者唯一约束,那么数据库服务器将键约束或者唯一约束,那么数据库服务器将自动在这些字段上建立惟一索引,这时索引自动在这些字段上建立惟一索引,这时索引的名字与约束的名字相同。的名字与约束的名字相同。Oracle数据库应用与实践数据库应用与实践.1-46创建索引创建索引手工创建索引的语法格式如下:手工创建索引的语法格式如下:CREATE
40、UNIQUE BITMAP INDEX schema. index_nameON table_name ( column_name ASC | DESC , |REVERSEINITRANS integerMAXTRANS integerPCTFREE integerSTORAGE storage-clauseTABLESPACE tablespace_name;Oracle数据库应用与实践数据库应用与实践.1-47创建索引创建索引手工创建索引的语法格式如下:手工创建索引的语法格式如下:CREATE UNIQUE BITMAP INDEX schema. index_nameON table_
41、name ( column_name ASC | DESC , |REVERSEINITRANS integerMAXTRANS integerPCTFREE integerSTORAGE storage-clauseTABLESPACE tablespace_name;Oracle数据库应用与实践数据库应用与实践.1-48创建索引创建索引以下主要介绍应用较多的三类索引:以下主要介绍应用较多的三类索引:1. 创建创建B树索引树索引 B树索引是树索引是Oracle中最常用的一种索引。在中最常用的一种索引。在使用使用 CREATE INDEX语句创建索引时,默认语句创建索引时,默认方式下将创建方式
42、下将创建B树索引。树索引。 B树索引使用平衡的树索引使用平衡的m路搜索树算法(即路搜索树算法(即B树算法)来建立索引结构。在树算法)来建立索引结构。在B树的叶子节点中树的叶子节点中存储索引字段的值与存储索引字段的值与ROWID。Oracle数据库应用与实践数据库应用与实践.1-49创建索引创建索引B树索引具有以下特点:树索引具有以下特点:1.B树索引中所有的叶子节点都具有相同的深度,因此无论 哪种类型的查询都具有基本上相同的查询速度。2.B树索引能够适应多种查询条件,包括使用等号运算符的 精确匹配与使用“LIKE”等运算符的模糊匹配。3.B树索引不会影响到插入、删除和更新的效率。4.无论对于大
43、型表还是小型表,B树索引的效率都是相同的Oracle数据库应用与实践数据库应用与实践.1-50图图5-2 B树索引的逻辑结构树索引的逻辑结构Oracle数据库应用与实践数据库应用与实践.1-51创建索引创建索引【例【例5-32】为已创建的学生表(】为已创建的学生表(student_1)的姓名(的姓名(sname)字段创建名为)字段创建名为sname_index的的B树索引。树索引。SQLCREATE INDEX sname_index2ON student_1 (sname)3TABLESPACEmyspace;索引已创建。Oracle数据库应用与实践数据库应用与实践.1-52创建索引创建索引
44、2. 创建基于函数的索引创建基于函数的索引 基于函数的索引存放的是经过函数处理后基于函数的索引存放的是经过函数处理后的数据。如果检索数据时需要对字符大小写或的数据。如果检索数据时需要对字符大小写或数据类型进行转换,则使用这种检索可以提高数据类型进行转换,则使用这种检索可以提高检索效率。检索效率。Oracle数据库应用与实践数据库应用与实践.1-53创建索引创建索引【例【例5-34】为职工表(】为职工表(emp)中姓名)中姓名(sname)字段创建名为)字段创建名为sname_lower_index的基于的基于LOWER函数的索引。函数的索引。SQLCREATE INDEX sname_lowe
45、r_index2ON student_1 (LOWER(sname)3TABLESPACEmyspace;索引已创建。Oracle数据库应用与实践数据库应用与实践.1-54创建索引创建索引3. 创建位图索引创建位图索引 位图索引与B树索引不同,使用B树索引时,通过在索引中保存排过序的索引字段的值,以及数据行的ROWID来实现快速查找。而位图索引不存储ROWID值,也不存储键值,一般在包含少量不同值的字段上创建。Oracle数据库应用与实践数据库应用与实践.1-55创建索引创建索引【例【例5-35】为已创建的学生表(】为已创建的学生表(student_1)的性别(的性别(ssex)字段创建名为)
46、字段创建名为sname_bitmap的位图索引。的位图索引。SQLCREATE BITMAP INDEX sname_index2ON student_1 (ssex)3TABLESPACEmyspace;索引已创建。Oracle数据库应用与实践数据库应用与实践.1-56创建索引创建索引3. 创建位图索引创建位图索引 位图索引与B树索引不同,使用B树索引时,通过在索引中保存排过序的索引字段的值,以及数据行的ROWID来实现快速查找。而位图索引不存储ROWID值,也不存储键值,一般在包含少量不同值的字段上创建。Oracle数据库应用与实践数据库应用与实践.1-57管理索引管理索引 对于已创建的索
47、引可以进行重命名、合并、对于已创建的索引可以进行重命名、合并、重建、监视和删除的管理操作,以下分别进行重建、监视和删除的管理操作,以下分别进行介绍。介绍。Oracle数据库应用与实践数据库应用与实践.1-58管理索引管理索引1. 重命名索引重命名索引重命名索引的语法格式如下:重命名索引的语法格式如下:ALTER INDEX index_name RENAME TO new_index_name;【例【例5-36】将【例】将【例5-33】已创建的索引名】已创建的索引名 sname_lower_index的重命名为的重命名为name_lower_index。SQL ALTER INDEX snam
48、e_lower_index RENAME TO name_lower_index;索引已更改。Oracle数据库应用与实践数据库应用与实践.1-59管理索引管理索引2. 清理索引碎片清理索引碎片 随着对表不断进行更新操作,在表的索引中将会产生越来越多的存储碎片,这将会影响索引的工作效率,这时可以用两种方式来清理这些存储碎片合并索引或重建索引。Oracle数据库应用与实践数据库应用与实践.1-60管理索引管理索引B树索引合并过程:树索引合并过程:(a)合并前的)合并前的B树索引树索引(b)合并后的)合并后的B树索引树索引Oracle数据库应用与实践数据库应用与实践.1-61管理索引管理索引(1)
49、合并索引)合并索引 合并索引可以清理索引存储碎片,可利用合并索引可以清理索引存储碎片,可利用ALTER INDEX COALESCE语句对索引进行语句对索引进行合并操作。其语法格式如下:合并操作。其语法格式如下:ALTER INDEX index_name COALESCE DEALLOCATE UNUSED ;Oracle数据库应用与实践数据库应用与实践.1-62管理索引管理索引(2)重建索引)重建索引 重建索引也可以清理索引存储碎片,不过,它在清理索引存储碎片的同时,还可以改变索引的全部存储参数设置,以及改变索引的存储表空间。表5-6给出了合并索引与重新索引的对比。Oracle数据库应用与
50、实践数据库应用与实践.1-63管理索引管理索引【例【例5-37】为已创建的学生表(】为已创建的学生表(student_1)的姓名(的姓名(sname)字段上的)字段上的B树索引树索引sname_index进行重建。进行重建。SQLALTER INDEX sname_index2REBUILD3TABLESPACEmyspace;索引已更改。Oracle数据库应用与实践数据库应用与实践.1-64管理索引管理索引3. 监视索引监视索引 已经建立的索引是否能够有效工作,取决于在查询的执行过程中是否会使用到这个索引。Oracle提供了一种比较简便的方法用来监视索引的使用情况,使用户可以查看已经建立的索
51、引的使用状态,以便决定是否需要重建其他的索引。Oracle数据库应用与实践数据库应用与实践.1-65管理索引管理索引【例【例5-38】打开学生表(】打开学生表(student_1)的姓名)的姓名(sname)字段上的)字段上的B树索引树索引sname_index的监的监视状态。视状态。SQLALTER INDEX sname_index MONITORING USAGE;索引已更改。如果要关闭以上索引的监视状态,可如下操作:如果要关闭以上索引的监视状态,可如下操作:SQLALTER INDEX sname_index NOMONITORING USAGE;索引已更改。Oracle数据库应用与实
52、践数据库应用与实践.1-66管理索引管理索引4. 删除索引删除索引用户只能删除自己模式中的索引。如果要删除其他模式中的索引,必须具有DROP ANY INDEX系统权限。通常在如下情况下可考虑删除某个索引: 1、该索引不再需要使用。 2、通过一段时间的监视,发现几乎没有查询,或者只有极少数查询会使用到这个索引。 3、由于索引中包含损坏的数据块,或者包含过多的存储碎片,需要首先删除这个索引,然后再重建它。 4、索引的删除方式与索引创建时采用的方式有关Oracle数据库应用与实践数据库应用与实践.1-67五、序列的创建、使用及管理方法五、序列的创建、使用及管理方法 序列也称为序列生成器,它能够以串
53、行方序列也称为序列生成器,它能够以串行方式生成一系列顺序整数。式生成一系列顺序整数。 序列可以在多个用户并发环境中为各个用序列可以在多个用户并发环境中为各个用户生成不会重复的顺序整数,而且不需要任何户生成不会重复的顺序整数,而且不需要任何额外的额外的I/O开销或者事务锁资源。开销或者事务锁资源。Oracle数据库应用与实践数据库应用与实践.1-68创建序列创建序列创建序列的命令为创建序列的命令为CREATE SEQUENCE语句,语句,它的完整语法格式如下:它的完整语法格式如下:CREATE SEQUENCE schema. sequence_name START WITH start_num
54、ber INCREMENT BY increment _number MINVALUE minvalue | NOMINVALUE MAXVALUE maxvalue | NOMAXVALUE CYCLE | NOCYCLE ORDER | NOORDER CACHE cache_number | NOCACHE Oracle数据库应用与实践数据库应用与实践.1-69创建序列创建序列【例【例5-40】创建一个名为】创建一个名为student_sequence的序列,要求序列号的起始值为的序列,要求序列号的起始值为2014101100,按升序每次增加按升序每次增加1,不缓存序列号,不循环生成,不
55、缓存序列号,不循环生成序列号,要求按升序生成序列号。序列号,要求按升序生成序列号。SQL CREATE SEQUENCE student_sequence2START WITH 20141011003INCREMENT BY 14NOCYCLE5 ORDER6 NOCACHE;序列已创建。Oracle数据库应用与实践数据库应用与实践.1-70使用序列使用序列在使用序列前,先介绍序列中的两个伪列在使用序列前,先介绍序列中的两个伪列nextval和和currval。 1. nextval:用于获取序列的下一个序号值。在使用序列为表中的字段自动生成序列号时,就是使用此伪列。使用形式: . nextv
56、al。 2. currval:用于获取序列的当前序号值。使用形式:. currval。使用前提:必须在使用一次nextval之后才能使用此伪列。Oracle数据库应用与实践数据库应用与实践.1-71使用序列使用序列【例【例5-41】创建一个学生表(】创建一个学生表(student_10),表中包括学号),表中包括学号(sno)、姓名()、姓名(sname)和性别()和性别(ssex),并定义以下约束:),并定义以下约束:学号(学号(sno)为主键,姓名()为主键,姓名(sname)非空,性别()非空,性别(ssex)只)只能为能为“男男”或或“女女”。SQL CREATE TABLE stud
57、ent_10 (2sno NUMBER (10) CONSTRAINT sno_primary PRIMARY KEY,3sname VARCHAR2(30) CONSTRAINT sname_notnull NOT NULL,4ssex CHAR(2) CONSTRAINT ssex_check CHECK (ssex IN ( 男, 女)5);表已创建。Oracle数据库应用与实践数据库应用与实践.1-72使用序列使用序列然后向学生表(然后向学生表(student_10)插入记录,添加记)插入记录,添加记录时应用前面创建的序列为表中的主键学号(录时应用前面创建的序列为表中的主键学号(sno
58、)自动赋值:自动赋值:SQL INSERT INTO student_10 (sno, sname, ssex)2VALUES ( student_seq.nextval, ZHANG SAN, 男);已创建1行。SQL INSERT INTO student_10 (sno, sname, ssex)2VALUES ( student_seq.nextval, LI SI, 女);已创建1行。Oracle数据库应用与实践数据库应用与实践.1-73管理序列管理序列 管理序列主要包括序列的修改和删除操作。管理序列主要包括序列的修改和删除操作。利用利用ALTER SEQUENCE语句可以对序列进行
59、语句可以对序列进行修改,语法格式除了修改,语法格式除了ALTER SEQUENCE外,外,其他与序列的创建类似。修改序列时应注意以其他与序列的创建类似。修改序列时应注意以下事项:下事项:1、不能修改序列的起始值。、不能修改序列的起始值。2、序列的最小值不得大于当前值。、序列的最小值不得大于当前值。3、序列的最大值不得小于当前值。、序列的最大值不得小于当前值。Oracle数据库应用与实践数据库应用与实践.1-74管理序列管理序列 如果要改变序列的起始值,必须删除序列如果要改变序列的起始值,必须删除序列然后再重建它。然后再重建它。类似地,用户可以删除自己模式中的序列。类似地,用户可以删除自己模式中的序列。如果要删除其他模式中的序列,用户必须具有如果要删除其他模式中的序列,用户必须具有DROP ANY SEQUENCE系统权限。删除序列系统权限。删除序列的语法格式如下:的语法格式如下:DROP SEQUENCE sequence_name;Oracle数据库应用与实践数据库应用与实践.1-75六、同义词的创建及删除方法六、同义词的创建及删除方法 同义词是表、索引、视图或者其他模式对同义词是表、索引、视图或者其他模式对象的一个别名。在使用同义词时,象的一个别名。在使用同义词
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装饰公司中秋放活动方案
- 韩国物流考试题及答案
- 光学加工考试题及答案
- 关于盐酸考试题及答案
- 狗狗培训考试题及答案
- 跟单员考试题目及答案
- 企业财务管理报表自动生成工具
- (正式版)DB15∕T 3397-2024 《西辽河灌区盐碱化耕地地力提升技术规程》
- 古籍数字化保护承诺书6篇范文
- 电焊中级考试题及答案
- 宠物经济下的宠物食品包装创新研究报告:2025年市场潜力分析
- 2025年关于广告设计合同格式范本
- 临床基于MDT平台下的“5A”护理模式在改善脑卒中后顽固性呃逆患者中应用
- 基础电工安全培训课件
- 2025年财会类资产评估师资产评估基础-资产评估基础参考题库含答案解析(5卷)
- 法律顾问合同协议书模板
- 2025年淮南市潘集区公开招聘社区“两委”后备干部10名考试参考试题及答案解析
- 河北省琢名小渔名校联考2025-2026学年高三上学期开学调研检测数学(含答案)
- (2025)防溺水知识竞赛题库含答案(完整版)
- 2025年校招:财务岗试题及答案
- 项目工程审计整改方案(3篇)
评论
0/150
提交评论