oracle 伪列访问序列,Oracle同义词与序列基础教程

一、同义词

同义词是现有对象(表、视图、序列、过程、函数、包等)的别名

作用:

简化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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值