欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » Oracle数据库应用教程 » 正文

Oracle基础教程:同义词与序列

创建时间:2012年03月28日 22:14  阅读次数:(7399)
分享到:

一、同义词


同义词是现有对象(表、视图、序列、过程、函数、包等)的别名
作用:
简化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;
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 57+28=? 的结果(结果是:85)
结  果: