1Z0-051-DDL-创建同义词和序列
admin
2023-06-08 20:41:52
0

创建同义词和序列


1、同义词synonym

同义词是对象的备选名称。分为公有同义词和私有同义词。

【创建公有synonym

SQL>create public synonym emp for pb.employees@prod;

那么所有用户只需输入:

SQL>select * from emp;

 

私有同义词是模式对象。他们要么必须在自己的模式中,要么必须用模式名限定。公有同义词的存在于模式无关。

创建同义词语法:

CREATE  [PUBLIC] SYNONYM synonym for OBJECT;

 

删除同义词的语法:

DROP   [PUBLIC] SYNONYM synonym ;

 

与视图一样,在下次访问同义词是自动重新编译,也可以显式地完成编译:

ALTERSYNONYM synonym COMPILE;

 

【案例】

SQL>conn peenboo

SQL>createsynonym emp_s  for emp_anon_v;

SQL>createsynonym dept_s for dept_anon_v;

SQL>createsynonym dsum_s for dep_sum_v;

 

SQL>describeemp_s

SQL>describeemp_anon_v;

 

SQL>select* from emp_s;

SQL>insertinto dept_s values(99,'TEMP_DEPT',1800);

SQL>insertinto emp_s values(sysdate,'AC_MGR',10000,0,99);

SQL>updateemp_s set salary =salary *1.1;

SQL>rollback;

SQL>selectmax(salaries /staff) from dsum_s;

 

SQL>dropview emp_anon_v;

SQL>dropview dept_anon_v;

 

SQL>select* from dep_sum_v;  ---failed

 

SQL>alterview dept_sum_v compile; --failed

 

SQL>dropview dep_sum_v;

SQL>select* from dsum_s;  --failed

SQL>alter synonym emp_s compile; --不会抛出错误,基于的视图已删除,同义词也处于破坏状态

 

SQL>dropsynonym emp_s;

SQL>dropsynonym dept_s;

SQL>dropsynonym dsum_s;

 

2、序列 (sequence)

Sequence 是生成唯一整数值得结构。是用来生成主键的宝贵工具。序列机制与表、行锁机制及提交或回滚过程无关。

 

1)创建序列语法:

CREATESEQUENCE  [shema.]sequencename

[INCREMENTBY number]

[STARTWITH number]

[MAXVALUEnumber | NOMAXVALUE]

[MINVALUEnumber |NOMINVALUE]

[CYCLE|NOCYCLE]

[CACHEnumber | NOCACHE]

[ORDER|NOORDER];

 

  • 1sequence_name:指定序列的名字

  • 2STARTWITH start_num:指定序列从哪个整数开始,该值默认是1

  • 3INCREMENTBY increment_num:指定该序列每次增加的增量,该值默认为1

  • 4MINVALUEminimum_num:指定该序列的最小整数,该值必须小于等于start_num,而且必须小于maxmum_num

  • 5NOMINVALUE:指定升序序列的最小值为1,降序序列的最小值为-10^26

  •   NOMINVALUE为默认值

  • 6MAXVALUEmaximum_num:指定该序列的最大整数,这个值必须大于等于start_num,而且必须大于minimum_num

  • 7NOMAXVALUE指定升序序列的最大值为10^27,降序序列的最大值为-1

  •   NOMAXVALUE为默认值

  • 8CYCLE:指定该序列即使已经达到最大值或最小值也继续生成整数,当升序序列达到最大值时,下一个生成的值是最小值。当降序序列达到最小值时,下一个生成的值是最大值

  • 9NOCYCLE:指定该序列在达到最大值或最小值之后就不能再生成整数了,这个是默认值

  • 10CACHEcache_num:指定要保留在内存中整数的个数,默认要缓存的整数为20个,可以缓存的整数最少为2个,可以缓存的整数最多为

  • CELL(maximum_num-minimum_num)/ABS(increment_num)

  • 11NOCACHE指定不缓存任何整数

  • 12ORDER确保按照请求次序生成整数,在使用RAC时可以使用这个选项

  • 13NOORDERED不确保按照请求次序生成整数,这个是默认值

SQL>createsequence seq1;

 

2)使用序列

伪列NEXTVAL 选择下一个值,伪列CURRVAL选择会话的上一个值(当前值)。

注:序列的CURRVAL是发送给当前会话的上一个值,不一定是发错的上一个值。直到选择了NEXTVAL后才能存在CURRVAL

 

CREATESEQUENCE order_seq start with 10;

Createsequence line_seq start with 10;

 

 

Insertinto orders(order_id,order_date,customer_id)

Values(order_seq.nextval,sysdate,'1000');

Insertinto order_items(order_id,order_item_id,product_id)

Values(order_seq.currval,line_seq.nextval,'A1111');

Insertinto order_items(order_id,order_item_id,product_id)

Values(order_seq.currval,line_seq.nextval,'B111');

 

如果分析师指出序列不能有间隔,那么必须使用另一种生成唯一值的方式。

当前订单可以存储在该表中,并将它初始化为10

Createtable current_on(order_number number);

Insertinto current_on values(10);

Commit;

 

然后创建订单的代码将变成:

Updatecurrent_on set order_number=order_number + 1;

Insertinto orders(order_number,order_date,customer_number)

Values((select order_number from current_on),sysdate,'1000');

Commit;

 

修改序列的语法如下:

 

ALTERSEQUENCE  [shema.]sequencename

[INCREMENTBY number]

[STARTWITH number]

[MAXVALUEnumber | NOMAXVALUE]

[MINVALUEnumber |NOMINVALUE]

[CYCLE|NOCYCLE]

[CACHEnumber | NOCACHE]

[ORDER|NOORDER];

 

 

Altersequence order_seq cache 1000;

如果希望将该序列重置为它的起始值,唯一的方法就是删除重建。

Dropsequence order_seq;


相关内容

热门资讯

伊朗总统准备向世界保证不寻求核... 伊朗总统佩泽希齐扬5月24日在接受采访时表示,“伊朗准备向全世界保证,正如已故伊朗最高领袖阿里·哈梅...
火星上出现一摞整齐叠放的石头,... 那是谁干的? 毅力号火星车在火星上发现了一摞整齐叠放的石头。NASA / JPL-Caltech ...
八国发表联合声明,谴责以色列国... △以色列国家安全部长伊塔马尔·本-格维尔(资料图)当地时间24日,阿联酋、约旦、土耳其、埃及、印度尼...
神舟二十三号载人飞船发射升空 IT之家 5 月 24 日消息,刚刚,搭载神舟二十三号载人飞船的长征二号 F 遥二十三运载火箭在酒泉...
浙江上线“创新积分制”数智平台 来源:中国新闻网 中新网杭州5月24日电(鲍梦妮)5月24日,在2026年浙江省“全国科技活动周”上...
国内知名冷门绝学大咖齐聚深圳,... 本文转自【光明日报】; 5月22日上午,作为2026文化强国建设高峰论坛重要组成部分,首届冷门绝学传...
神舟二十三号载人飞行任务航天员... 据微信公众号“中国载人航天”消息,5月24日20时16分,神舟二十三号载人飞行任务航天员乘组出征仪式...
以总理:同特朗普一致认为须消除... 新华社耶路撒冷5月24日电(记者庞昕熠 王卓伦)以色列总理内塔尼亚胡24日在社交平台发文称,他和美国...
专家解读|秉持以人为本 统筹发... 随着大模型、生成式人工智能、智能体等技术的迭代创新,人工智能正在进入加速应用的新阶段,由此引发的社会...
原创 v... vivo在5月份的新机继续增加,比如vivo S60系列、vivo Y600 Turbo等,均在5月...