当前位置:首页 >> IT/计算机 >>

9 索引、序列、同义词、数据字典


复 习

1、约束的延迟
创建约束时默认使用NOT DEFERRABLE,即约束不 创建约束时默认使用 , 可延迟。 可延迟。 关键字, 创建可延迟约束使用DEFERRABLE关键字,并且可以 指定INITIALLY IMMEDIATE或INITIALLY DEFERRED说 明可延迟约束在初始状态下是立即检查还是延迟检查, 明可延迟约束在初始状态下是立即检查还是延迟检查, 默认为立即检查。 默认为立即检查。
CREATE TABLE scott.new_dept (deptno number primary key deferrable initially immediate, dname varchar2(20) unique)

2、临时表
Oracle数据库根据临时表的性质不同,可以分为 数据库根据临时表的性质不同, 数据库根据临时表的性质不同 事务临时表与会话临时表。 事务临时表与会话临时表。
CREATE GLOBAL TEMPORARY TABLE table_name

(col_name date_type, ………..)
ON COMMIT DELETE ROWS PRESERVE ROWS

注意:一般情况下,如果在创建临时表时没有特殊指明, 注意:一般情况下,如果在创建临时表时没有特殊指明,则 该表默认为事务临时表。 该表默认为事务临时表。

3、创建视图
create [or replace][force|noforce] view v_name [(alias,……)] as subquery [with check option [constraint constraint_name]] [with read only]

with check option选项: option选项 选项:
create view scott.emp_vu10 as select * from scott.emp where deptno=10 with check option constraint chk_vu10 注: 要在此视图上执行insert语句,那么插入的值必须满足子查询中 语句, 要在此视图上执行 语句 的查询条件。 的查询条件。 要执行update语句,那只能修改除约束条件中涉及列之外的列。 语句, 要执行 语句 那只能修改除约束条件中涉及列之外的列。

可更新的连接视图
连接视图是基于连接的视图。 连接视图是基于连接的视图。一个连接视图上的 DML语句只能修改视图中的一个键值保留表 语句只能修改视图中的一个键值保留表(key语句只能修改视图中的一个键值保留表 preserved table)。 。

键值保存表
如果连接视图中的一个基础表的主键在它的视图中仍然存 并且在连接视图中仍然是主键,则称这个基表为“ 在,并且在连接视图中仍然是主键,则称这个基表为“键 值保存表” 值保存表”。 一般地,由主外键关系的 个表组成的连接视图 个表组成的连接视图, 一般地,由主外键关系的2个表组成的连接视图,外键表 子表)就是键值保存表,而主键表(父表)不是。 (子表)就是键值保存表,而主键表(父表)不是。

在连接视图上,对视图进行插入、删除、更新等操作时, 在连接视图上,对视图进行插入、删除、更新等操作时, 只能够对视图中的键值保存表的列进行更新。 只能够对视图中的键值保存表的列进行更新。

删除视图 删除视图
drop view命令 命令
drop view <view_name>

NEW





为什么要引入索引? 为什么要引入索引?
用户对数据库最频繁的操作是进行数据查询。 用户对数据库最频繁的操作是进行数据查询。 一般情况下, 一般情况下,数据库在进行查询操作时需要对整个 表进行数据搜索。当表中数据很多时,搜索数据就 表进行数据搜索。当表中数据很多时, 需要很长的时间,这就造成了服务器资源的浪费。 需要很长的时间,这就造成了服务器资源的浪费。 为了提高检索数据的能力,数据库引入了索引机制。 为了提高检索数据的能力,数据库引入了索引机制。

索引的概念
索引是一个单独的、物理的数据库结构, 索引是一个单独的、物理的数据库结构,它是表中一 列或多列值的集合和相应行所对应的rowid。 。 列或多列值的集合和相应行所对应的

索引的作用及原理
数据库中引入索引的目的是为了提高对表中数据的查询速度。 数据库中引入索引的目的是为了提高对表中数据的查询速度。 如果一个表没有创建索引, 如果一个表没有创建索引,则对该表进行查询时需要进行全表 扫描;如果对表创建了索引,在进行有条件查询时, 扫描;如果对表创建了索引,在进行有条件查询时,系统根据 查询条件中的索引值信息, 查询条件中的索引值信息,利用特定的排序算法在索引表中很 快的查询到相应的索引值及其对应rowid,根据rowid可以在 ,根据 快的查询到相应的索引值及其对应 可以在 数据库表中很快查询到符合条件的记录。 数据库表中很快查询到符合条件的记录。

注: 并不是只要使用索引就能提高检索速度, 并不是只要使用索引就能提高检索速度,例如无 条件查询时,不使用索引就比使用索引要快。 条件查询时,不使用索引就比使用索引要快。 通用规则:只用当经常查询索引列中的数据时, 通用规则:只用当经常查询索引列中的数据时, 才需要在表上创建索引。 才需要在表上创建索引。

索引的分类
Oracle的索引主要包含两类:BTree索引和位图索引。 的索引主要包含两类: 索引和 的索引主要包含两类 索引 位图索引。 默认情况下大多使用Btree索引,该索引就是通常所见 索引, 默认情况下大多使用 索引 的唯一索引、非唯一性索引、单列索引、复合索引等。 的唯一索引、非唯一性索引、单列索引、复合索引等。

索引的分类— 索引的分类—BTree索引 索引

创建索引 创建索引--- create index命令 索引--index命令
create [unique] [bitmap] index index_name on table_name (col_name1[ASC|DESC], ……) unique:建立唯一索引。 :建立唯一索引。 bitmap:建立位图索引。 :建立位图索引。 注:在默认情况下,create index命令创建的是非 在默认情况下, 命令创建的是非 唯一的B树索引。 唯一的 树索引。 树索引

例1:在emp1表中,为员工工资和奖金建立索引。 表中, 表中 为员工工资和奖金建立索引。 create index scott.sal_comm_index on scott.emp1 (sal , comm) 例2: 在emp1表中,为员工姓名建立位图索引。 表中, 表中 为员工姓名建立位图索引。 create bitmap index scott.ename_index on scott.emp1 (ename)

练习
表中, 在emp1表中,为员工号建立唯一索引。 表中 为员工号建立唯一索引。 create unique index scott.empno_index on scott.emp1 (empno)

查看索引
select * from user_indexes where table_name='表名 表名'; 表名 select * from user_ind_columns where table_name='表名 表名'; 表名

查看索引
例如:查看 表中所创建有哪些索引? 例如:查看EMP1表中所创建有哪些索引? 表中所创建有哪些索引 select index_name,index_type,table_name from user_indexes where table_name='EMP1' select * from user_ind_columns where table_name='EMP1'

删除索引---drop 删除索引---drop index 命令 索引---

drop index index_name
例如: 例如: drop index scott.sal_comm_index drop index scott.empno_index drop index scott.ename_index

序 列

序列的概念 序列的概念
序列是一个数字生成器,用于生成连续的、 序列是一个数字生成器,用于生成连续的、唯一的 数字。序列也是一种数据库对象。 数字。序列也是一种数据库对象。 当需要使用顺序递增的数字时,如果不使用序列, 当需要使用顺序递增的数字时,如果不使用序列,那 么需要编写程序生成数字值, 么需要编写程序生成数字值,使用序列可以简化这种 处理操作。例如 列数值顺序递增, 处理操作。例如employee_id列数值顺序递增,并且 列数值顺序递增 不允许重复,那么可以使用序列为其提供数据。 不允许重复,那么可以使用序列为其提供数据。

创建序列--创建序列--- create sequence命令 sequence命令
create sequence sequence_name [increment by n] [start with n] [{minvalue n |nominvalue}] [{maxvalue n |nomaxvalue}] [cycle | nocycle] [{cache n | nocache}] 见表4—6 见表

例1:创建序列 创建序列deptno_seq,开始值为 ,增 ,开始值为50, 量为10,最大值为99,占用内存块大小为10。 量为 ,最大值为 ,占用内存块大小为 。 create sequence scott.deptno_seq start with 50 increment by 10 maxvalue 99 cache 10

练习:创建序列 自动增加, 练习:创建序列emp1_seq,从1自动增加, , 自动增加 达到10000后自动从 开始。 后自动从1开始 达到 后自动从 开始。 create sequence scott.emp1_seq start with 1 increment by 1 maxvalue 10000 cycle

使用序列
当使用序列时,必须通过属性 当使用序列时,必须通过属性nextval和currval来引 和 来引 用序列,引用方法:序列名.属性 用序列,引用方法:序列名 属性 nextval:用于返回下一个序列值。即:Increment by :用于返回下一个序列值。 定义的增加值。 定义的增加值。 currval:用于返回当前序列值。 :用于返回当前序列值。 注意:当第一次引用序列时,必须使用nextval,返 注意:当第一次引用序列时,必须使用 , 回的是初始值。 回的是初始值。

使用序列
当建立序列后, 当建立序列后,如果要使用序列为顺序递增的主键 列提供数据,那么可以使用nextval。 列提供数据,那么可以使用 。

例:利用序列deptno_seq为dept1表提供部门号。 表提供部门号。 利用序列 为 表提供部门号
insert into scott.dept1(deptno,dname,loc) values (scott.deptno_seq.nextval, 'DEVELOPMENT', 'NEW YORK')

使用序列
如果要确定当前序列号,那么可以使用属性 如果要确定当前序列号,那么可以使用属性currval。 。

例:确定序列deptno_seq的当前序列号。 的当前序列号。 确定序列 的当前序列号
select scott.deptno_seq.currval from dual

练习:在表emp1中,使用 练习:在表 中 使用emp1_seq序列为其 序列为其
插入的记录自动编号。 插入的记录自动编号。

INSERT INTO emp1 VALUES (emp1_seq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20)

使用序列的注意事项: 使用序列的注意事项:
1、通过使用cache选项建立序列,可以设置在内存中 、通过使用 选项建立序列, 选项建立序列 预分配的序列号个数。该选项设置越大, 预分配的序列号个数。该选项设置越大,序列的访问 性能会越好,但也会占用更多的内存空间, 性能会越好,但也会占用更多的内存空间,并且可能 出现断号,建议设为nocache或cache 1。 出现断号,建议设为 或 。 2、当执行rollback语句取消事务操作时,会导致出现 、当执行 语句取消事务操作时, 语句取消事务操作时 序列缺口。例如,当使用序列deptno_seq为部门号提 序列缺口。例如,当使用序列 为部门号提 供数据时,如果执行rollback取消事务,那么会导致 取消事务, 供数据时,如果执行 取消事务 部门号的值不连续( 部门号的值不连续(如50,70,80等)。 , , 等

修改序列— 修改序列—alter sequence命令 sequence命令
alter sequence sequence_name [increment by n] [maxvalue n] [minvalue n] [cycle | nocycle] [{cache n | nocache}] 注:序列的初始值不能修改,即不能修改start with 。 序列的初始值不能修改,即不能修改

修改序列— 修改序列—alter sequence命令 sequence命令
例:将序列deptno_seq的最大值修改为 将序列 的最大值修改为 200,缓存值修改为 ,缓存值修改为nocache。 。 alter sequence scott.deptno_seq maxvalue 200 nocache

删除序列— 删除序列—drop sequence命令 sequence命令
drop sequence sequence_name
例如:drop sequence deptno_seq 例如: drop sequence emp1_seq

同义词

同义词的概念 同义词的概念
同义词是为表、视图和序列等对象起的另外一个名字。 同义词是为表、视图和序列等对象起的另外一个名字。

建立同义词的好处: 建立同义词的好处:
1、引用对象不需要指名对象的所有者。 、引用对象不需要指名对象的所有者。 2、引用对象不需要指出它所位于的数据库。 、引用对象不需要指出它所位于的数据库。 3、为对象提供另一个名字。 、为对象提供另一个名字。

同义词的分类 同义词的分类
公共同义词:是指所有用户都可以直接引用的同义词, 公共同义词:是指所有用户都可以直接引用的同义词, 并且这种同义词由public用户组所拥有。 要以系统管理 用户组所拥有。 并且这种同义词由 用户组所拥有 员身份登陆创建。 员身份登陆创建。 私有同义词:是指只能由其方案用户直接引用的同义词。 私有同义词:是指只能由其方案用户直接引用的同义词。 注: 1、如果数据库用户要访问公共同义词,那么可以直接 、如果数据库用户要访问公共同义词, 引用,不需要加方案名; 引用,不需要加方案名; 2、如果数据库用户要访问其他方案的私有同义词,那 、如果数据库用户要访问其他方案的私有同义词, 么必须要加方案名作为前缀(方案名.同义词名 同义词名)。 么必须要加方案名作为前缀(方案名 同义词名)。

建立公共同义词
create public synonym synomym_name for [schema.] object 例:给scott.emp表建立公共同义词 表建立公共同义词public_emp。 表建立公共同义词 。 create public synonym public_emp for scott.emp

使用公共同义词
当执行了以上语句后,会建立公共同义词 当执行了以上语句后,会建立公共同义词public_emp, , 该同义词属于public用户组,所以任何用户都可以直接引 用户组, 该同义词属于 用户组 用该同义词。 用该同义词。

例: Select ename,sal,job From public_emp Where ename='SCOTT'

建立私有同义词
create synonym synomym_name for [schema.] object 例:给scott.dept表建立私有同义词 表建立私有同义词private_dept。 表建立私有同义词 。 create synonym scott.private_dept for scott.dept

使用私有同义词
当执行了以上语句后,会建立私有同义词 当执行了以上语句后,会建立私有同义词private_emp, , 因为该同义词是私有同义词, 因为该同义词是私有同义词,所以只有当前用户可以直接 引用,而其他任何用户引用该同义词都必须加方案名。 引用,而其他任何用户引用该同义词都必须加方案名。

例: Select dname,loc From scott.private_dept

删除同义词— 删除同义词—drop synonym命令 synonym命令
drop public synonym synonym_name drop synonym synonym_name 例如: 例如: drop public synonym public_emp; drop synonym scott.private_dept;

数据字典

数据字典
数据字典( 数据字典(Data Dictionary,简称 )是以数据表和视图 ,简称DD) 为主要存在形式的。 为主要存在形式的。数据库字典描述了实际数据是如何组织 对它们可以象处理其他数据库表或视图一样进行查询, 的。对它们可以象处理其他数据库表或视图一样进行查询, 但不能进行任何修改。 但不能进行任何修改。 数据字典里存有用户信息、用户的权限信息、 数据字典里存有用户信息、用户的权限信息、所有数据对象 信息、表的约束条件、统计分析数据库的视图等。 信息、表的约束条件、统计分析数据库的视图等。当用户在 对数据库中的数据进行操作时遇到困难就可以访问数据字典 来查看详细的信息。 来查看详细的信息。 Oracle数据库字典通常是在创建和安装数据库时被创建的, 数据库字典通常是在创建和安装数据库时被创建的, 数据库字典通常是在创建和安装数据库时被创建的 Oracle数据字典是 数据字典是Oracle数据库系统工作的基础,没有数据 数据库系统工作的基础, 数据字典是 数据库系统工作的基础 字典的支持, 数据库系统就不能进行任何工作。 字典的支持,Oracle数据库系统就不能进行任何工作。 数据库系统就不能进行任何工作

数据字典的分类

静态数据字典: 静态数据字典:主要是在用户访问数据字典 时不会发生改变。 时不会发生改变。 动态数据字典:是依赖数据库运行的性能, 动态数据字典:是依赖数据库运行的性能, 反映数据库运行的一些内在信息。 反映数据库运行的一些内在信息。

数据字典的分类
数据库字典中, 在Oracle数据库字典中,许多视图都有三个不同的实例,它们 数据库字典中 许多视图都有三个不同的实例, 的前缀分别为“ 的前缀分别为“USER_”、“ALL_”、“DBA_” 、 、 “USER_”为前缀的数据库字典视图通常记录执行查询的账户所 “USER_”为前缀的数据库字典视图通常记录执行查询的账户所 拥有的对象的信息。 拥有的对象的信息。 “ALL_”为前缀的数据库字典视图通常记录包括执行查询的帐 “ALL_”为前缀的数据库字典视图通常记录包括执行查询的帐 户所拥有的对象的信息及授权至PUBLIC的帐户用户所拥有的 户所拥有的对象的信息及授权至 的帐户用户所拥有的 对象的信息。 对象的信息。 “DBA_”为前缀的数据库字典视图包含所有数据库对象的信息, “DBA_”为前缀的数据库字典视图包含所有数据库对象的信息, 为前缀的数据库字典视图包含所有数据库对象的信息 而不管其所有者。 而不管其所有者。 其他的字典视图中主要的是V$视图, 其他的字典视图中主要的是 视图,之所以这样叫是因为他 视图 们都是以V$或 开头的。 们都是以 或GV$开头的。 开头的

数据字典的分类

视图是SYS用户所拥有的,在缺省状况下,只 用户所拥有的, 注:V$视图是 视图是 用户所拥有的 在缺省状况下, 用户和拥有DBA系统权限的用户可以看到所有 有SYS用户和拥有 用户和拥有 系统权限的用户可以看到所有 的视图,没有DBA权限的用户可以看到 权限的用户可以看到USER_和 的视图,没有 权限的用户可以看到 和 ALL_视图。 视图。 视图

数据字典----静态数据字典 数据字典----静态数据字典
user_tables :该数据字典视图用于显示当前用户的所有表
信息。 信息。

conn scott/tiger@buaa108 select table_name from user_tables user_objects :该数据字典视图用于显示当前用户的所有
数据库对象。 数据库对象。

conn scott/tiger@buaa108 select object_name,object_type from user_objects

数据字典----静态数据字典 数据字典----静态数据字典
user_constraints :该数据字典视图用于显示当前用户的
所有约束信息。 所有约束信息。 select constraint_name,constraint_type from user_constraints Where table_name='EMP'

user_cons_columns :该数据字典视图用于显示当前用
户约束所对应的表列。 户约束所对应的表列。 select constraint_name,column_name from user_cons_columns

数据字典----静态数据字典 数据字典----静态数据字典
user_sequences :该数据字典视图用于显示当前用户所有序 列的详细信息。 列的详细信息。 select sequence_name,min_value,max_value,increment_by from user_sequences user_synonyms :该数据字典视图用于显示当前用户的所有 同义词的详细信息 select synonym_name,table_name from user_synonyms

用户管理
create user命令 命令

这时还不能以该身份 和密码登陆, 和密码登陆,因为还 未授权。 未授权。

create user sem identified by buaa108;

alter user命令 命令
alter user sem identified by sem;

drop user命令 命令
drop user sem;

权限管理
grant命令 命令

grant {privilege|role }[, {privilege|role,…] to {user|role }[,{ user|role}]… [with grant option] grant create session to sem; grant select on scott.emp to sem;

权限管理
revoke命令 命令

revoke {privilege}[,{privilege}] from {user|role} revoke update,delete on scott.emp;

角色管理 角色管理
create role命令 命令
create role student;

alter role命令 命令
alter role student identified by student;

set role命令 命令
set role student identified by student;

drop role命令 命令
drop role student;


相关文章:
9 索引、序列、同义词、数据字典_图文.ppt
9 索引序列同义词数据字典 - 复习 1、约束的延迟 创建约束时默认使用N
SQL 第9课 索引、序列、同义词、数据字典_图文.ppt
SQL 第9索引序列同义词数据字典 - 复习 1、约束的延迟 创建约束
实验9 索引、视图、序列和同义词_习题答案.doc
实验9 姓名:专业: 同组人: 索引、视图、序列同义词 索引、视图、序列和...第 3 页共 12 页 4.索引相关数据字典: .索引相关数据字典:实验 9-5 使用...
Oracle数据库管理第9章 视图、索引、序列、同义词.ppt
Oracle数据库管理第9章 视图、索引序列同义词_计算机软件及应用_IT/计算机_专业资料。第9 章 本章...
Oracle9i第9章 视图、序列、索引和同义词.ppt
Oracle9i第9章 视图、序列索引同义词 - 第八章 视图、序列索引同义词 建立视图 ? 视图的使用与基表类似,要有视图名及相应的列。生成一个视 图可...
序列、索引、同义词_图文.ppt
序列索引同义词_计算机软件及应用_IT/计算机_...确认索引创建结果 USER_INDEXES 数据字典视图包含...
索引、序列和同义词_图文.ppt
索引序列同义词_电子/电路_工程科技_专业资料。...同义词并不占用实际存储空间,只有 在数据字典中保存...9 索引序列同义词、... 54页 1下载券 3...
索引,视图,序列,同义词,锁.doc
实验9 索引、视图、序列和... 12页 8财富值 ORACLE...通过使用同义词,用户可以访问其它用户 模式下的数据...通过数据字典视图 USER_UPDATABLE_COLUMNS,可以确定...
实验九 视图、索引、序列和同义词.doc
实验 视图、索引序列同义词 隐藏>> 以下实验除了在实验报告中写出相关命令...然后修改该序列使其最大值为 108。 12 向 course 表插入两条数据(104,计算机...
3 数据库模式对象与数据字典.pdf
软景培训 www.dlsptraining.com 3 数据库模式对象与数据字典 3.1 3.2 3.3 ...索引序列 3.7 同义词 3.8 PL/SQL存储过 程和存储函数 3.9 触发器 3...
ORACLE数据字典_图文.doc
ORACLE 数据字典(一)数据字典概念 Oracle 数据字典是...索引、集群、同义词序列、过程、方法、包、触发器...由于 没有过程所以为空 2.2.1.9 触发器 user_...
Oracle对象管理及使用实验报告.doc
索引、视图、同义词序列操作 2. 创建索引 (1) ...9.查询同义词(1) 利用企业管理器查看同义词“qyb...“sname”字段惟一性约束, 从数据字典 DBA_...
序列同义词.ppt
查询索引 ? 可以使用数据字典视图USER_INDEXES 和 USER_IND_COLUMNS 查看索引的...9 序列同义词 28页 1下载券 第07章序列同义词 15页 免费 第4章...
第9章 序列、同义词、程序包.doc
9章 序列、同义词、程序包 章 序列、同义词、...系列唯一数字的数据库对象,序 列定义存储在数据字典...9.2 同义词同义词是方案对象如:表、索引、视图等...
索引与同义词_图文.pdf
? ? ? 查询数据字典以确认索引是否存在 构建并执行...9 索引同义词 讲述/示范创建索引(续) 例如,若...也会自动删除索引和约束条件, 但会保留视图和序列。...
Orcl5(索引、序列、同义词、簇)_图文.ppt
教程 模式对象 Oracle数据库索引序列同义词、 ...(job); 值/行 1 2 3 4 5 6 7 8 9 10 ...(序列) 相关数据字典视图: DBA_SEQUENCES USER_...
Oracle实验3:视图、序列、同义词和索引.doc
SQL 语句: Create synonym sg for salgrede; 5.写出用数据字典视图来查看已有的视图、序列同义词索引的 SELECT 语句。视图 SELECT * FROM user_views; 序列...
7. 索引-视图-序列-同义词.ppt
7. 索引-视图-序列-同义词_计算机软件及应用_IT/...查询语句所引用的表, 数据库只在数据字典中存储了...7.9 管理同义词同义词是表、索引、视图等模式对象...
3表、索引、 视图、序列、同义词.doc
如果要获取数据库中创建的配置文件的信息,可以通过查询数据字典视图 DBA_ ...索引序列同义词 54页 2下载券 实验9 索引、视图、序列... 12页 2下载...
数据字典的使用.pdf
2.数据字典中的信息包含: 数据库中所有方案对象(schema object)的定义(包括表,视图,索引,,同义词,序列,过程,函数,包,触发器等等) 数据库为一个方案对象...