第九章:Oracle的其他数据库对象

目录

一、Oracle的数据库对象—序列

1、什么是序列?

2、创建序列:

3、使用序列

4、查询序列:查询数据字典视图user_sequences获取序列定义信息。

5、注意事项:

6、修改序列:alter sequence(注意:序列的初始值不能修改)

7、删除序列:drop sequence

二、Oracle的数据库对象—索引

1、什么是索引?

2、索引的分类:

3、创建索引:

4、什么时候可以创建索引?什么时候不能创建索引?

5、查询索引

6、删除索引

三、Oracle的数据库对象—同义词

1、什么是同义词?

2、同义词的作用

3、同义词的分类

4、创建同义词

6、查看同义词

7、删除同义词


一、Oracle的数据库对象—序列

1、什么是序列?

一种用于自动生成唯一数字的数据库对象。主要用于提供主键值

2、创建序列:

create sequence deptno_seq
start with 50
increment by 10
maxvalue 70
cache 3;

3、使用序列

必须通过伪列nextval和currval来引用序列。(nextval用于引用返回下一个序列值,currval用于引用返回当前序列值。)

create table deptnew
as
select * from dept;

insert into deptnew(deptno,dname,loc)values(deptno_seq.nextval,'test_dname','text_loc');
select * from deptnew;

select deptno_seq.currval from dual;

4、查询序列:查询数据字典视图user_sequences获取序列定义信息。

select sequence_name,min_value,max_value,increment_by,cycle_flag,cache_size,last_number
from user_sequences;

5、注意事项:

  • 如果指定cache值,可以提高访问效率,但使用cache也会出现跳号的可能。(序列不连续)
  • 序列再下列情况下会出现序列缺口(裂缝):
  1. 回滚
  2. 系统异常
  3. 多个表同时使用同一序列

6、修改序列:alter sequence(注意:序列的初始值不能修改

alter sequence deptno_seq
maxvalue 90;

7、删除序列:drop sequence

drop sequence deptno_seq;

二、Oracle的数据库对象—索引

1、什么是索引?

索引是为了加速对表中数据行的检索而创建的一种存储结构。

2、索引的分类:

  • 按索引列的个数:
  1. 单列索引:基于单个列建立的索引。
  2. 复合索引:基于两列或多列建立的索引。
  • 按索引列值的唯一性:
  1. 唯一索引:索引的列值不能重复。(当建立主键约束或唯一约束的时候,会自动的在相应的列上建立唯一索引
  2. 非唯一索引:索引的列值可以重复。

3、创建索引:

在一个或多个列上创建索引:

--创建单列索引
create index idx_name on emp(ename);

--创建复合索引
create index idx_deptno_job on emp(deptno,job);

--创建唯一索引
create unique index idx_dname on dept(dname);

--创建非唯一索引
create index idx_job on emp(job);

4、什么时候可以创建索引?什么时候不能创建索引?

以下情况可以创建索引:

  • where子句经常引用的表列上
  • 为了提高多表连接的性能,应该在连接列上建立索引
  • 经常排序的列上创建索引,可以加快数据排序的速度。

下列情况不要创建索引:

  • 表很小
  • 列不经常作为连接条件或出现在where子句中
  • 表经常更新

5、查询索引

可以使用数据字典视图user_indexes和user_ind_columns查看索引的信息。

select uic.index_name, uic.column_name, uic.column_position, ui.uniqueness
from user_indexes ui, user_ind_columns uic
where uic.index_name = ui.index_name and ui.table_name='EMP';

6、删除索引

drop index idx_dname; 

三、Oracle的数据库对象—同义词

1、什么是同义词?

同义词是数据库方案对象的一个别名

  1. 方案对象:表、索引、视图、触发器、序列、同义词、存储过程等。
  2. 非方案对象:表空间、用于、角色等。

2、同义词的作用

  • 简化对象访问。
  • 提供对象访问的安全性:多用户协同开发中,可以通过同义词屏蔽对象的名字及其持有者。

3、同义词的分类

  • 公共同义词:是指数据库中所有的用户都可以使用。(公共同义词往往用来标识一些比较普通的数据库对象,这些对象往往需要引用)
  • 私有同义词:只能被创建它的用户所拥有,其他用户在引用时必须带有方案名。

4、创建同义词

--创建同义词的用户必须要有创建同义词的权限
grant create public synonym to scott;
grant create synonym to scott;
--创建公共同义词
create public  synonym dn for scott.deptnew;

--使用同义词
select * from dn;

--创建私有同义词
create synonym en for scott.empnew;

select * from en;

--在(其它)用户system下访问私有同义词,必须带上方案名;公共同义词可以直接访问
select * from scott.en;
select * from dn;

6、查看同义词

Oracle对下列数据字典视图提供的同义词:

当建立同义词时,Oracle会将同义词的信息存放到数据字典中。通过查询数据字典视图user_synonyms,可以显示当前用户所有同义词的详细信息。

--查看私有同义词
select synonym_name,table_owner,table_name
from syn
where synonym_name = 'EN';

--查看公共同义词
select synonym_name,table_owner,table_name
from all_synonyms
where synonym_name = 'DN';

7、删除同义词

--删除公共同义词(必须具有删除公共同义词的权限)
grant drop public synonym to scott;--system用户下
drop public synonym dn;

--删除私有同义词(可以直接删除)
drop synonym en;
发布了26 篇原创文章 · 获赞 27 · 访问量 5462

猜你喜欢

转载自blog.csdn.net/weixin_44337241/article/details/104711369