中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

1Z0-051-DDL-創建同義詞和序列

發布時間:2020-06-20 11:37:21 來源:網絡 閱讀:963 作者:PengChonggui 欄目:數據庫

創建同義詞和序列


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;


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤城市| 邵阳市| 光泽县| 平江县| 龙州县| 内乡县| 石景山区| 武冈市| 葫芦岛市| 竹北市| 肥城市| 健康| 宜黄县| 子长县| 广饶县| 正蓝旗| 南雄市| 轮台县| 将乐县| 内黄县| 高唐县| 五莲县| 安丘市| 青浦区| 交口县| 湘西| 兴海县| 云阳县| 大余县| 金华市| 呼图壁县| 蓝田县| 石城县| 岳普湖县| 凤凰县| 龙井市| 临夏县| 上饶县| 东乡族自治县| 龙门县| 石柱|