一、同义词
同义词是现有对象(表、视图、序列、过程、函数、包等)的别名作用:
简化SQL语句
隐藏对象的名称和所有者
提供对对象的公共访问
同义词共有两种类型:
1,私有同义词-公有同义词可被所有的数据库用户访问
2,公有同义词-私有同义词只能在其模式内访问,且不能与当前模式的对象同名
语法:
CREATE [ PUBLIC ] SYNONYM [schema.]Synonym_Name FOR [schema.]Object_Name[@dblink];
示例:
私有同义词
CREATE SYNONYM emp FOR SCOTT.emp;
公有同义词
CREATE PUBLIC SYNONYM emp_syn FOR SCOTT.emp;
注:
只有被授权CREATE PUBLIC SYNONYM的用户才可以创建公共同义词。
创建或替换现有的同义词:
CREATE OR REPLACE SYNONYM emp_syn FOR SCOTT.emp;
删除同义词
SQL > DROP SYNONYM emp;
SQL > DROP PUBLIC SYNONYM emp_syn;
公用同义词的好处:多个不同的用户需要使用一个用户下的对象,可以只创建一次公用同义词
查看同义词DBA_SYNONYMS,ALL_SYNONYMS,USER_SYNONYMS视图
二、序列
序列是用于生成唯一、连续序号的对象
序列可以是升序的,也可以是降序的
使用CREATE SEQUENCE语句创建序列
示例:
SQL > CREATE SEQUENCE tID_Seq
START WITH 10
INCREMENT BY 10--指定序号之间的间隔为 10
MAXVALUE 2000--表示序列的最大值为 2000
MINVALUE 10--表示序列的最小值为 10
NOCYCLE--在达到最大值后停止生成下一个值
CACHE 10;--指定内存中预先分配的序号数
创建序列语法格式:
CREATE SEQUENCE [schema.]sequence_name
INCREMENT BY integer
START WITH integer
[MAXVALUE integer | NOMAXVALUE]
[MINVALUE integer | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
[ORDER|NOORDER];
序列优点及访问优点:
减少编写序列生成代码所需的工作量。
程序员经常用序列来简化一些程序的设计工作。
通过序列的伪列来访问序列的值
NEXTVAL 返回序列的下一个值
CURRVAL 返回序列的当前值
访问序列例:对teacher表的t_no列插入新值,使用NEXTVAL利用序列tID_Seq自动地生成t_no列的值。
SQL > INSERT INTO teacher (t_no,t_name,t_sex,t_birthday,tech_title)
VALUES
(tID_Seq.NEXTVAL,'jack','男',to_date('02-04-1978','dd-mm-yyyy'),null);
SQL > INSERT INTO teacher (t_no,t_name,t_sex,t_birthday,tech_title)
VALUES
(tID_Seq.NEXTVAL, 'peter','男',to_date('03-05-1978','dd-mm-yyyy'),null);
管理序列USER_SEQUENCES数据字典视图可查询序列的设置。
SQL > SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,
INCREMENT_BY,LAST_NUMBER
FROM USER_SEQUENCES;
修改序列语法格式:
ALTER SEQUENCE [schema.]sequence_name
INCREMENT BY integer
START WITH integer
[MAXVALUE integer | NOMAXVALUE]
[MINVALUE integer | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE];
示例:
SQL > ALTER SEQUENCE tID_Seq MAXVALUE 5000 CYCLE;
注意:
使用ALTER SEQUENCE语句修改序列,不能更改序列的START WITH参数删除序列语法格式:
DROP SEQUENCE sequence_name;
示例:使用DROP SEQUENCE语句删除序列
SQL > DROP SEQUENCE tID_Seq;