創(chuàng)建同義詞和序列

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比桐廬網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式桐廬網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋桐廬地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
1、同義詞(synonym)
同義詞是對象的備選名稱。分為公有同義詞和私有同義詞。
【創(chuàng)建公有synonym】
SQL>create public synonym emp for pb.employees@prod;
那么所有用戶只需輸入:
SQL>select * from emp;
私有同義詞是模式對象。他們要么必須在自己的模式中,要么必須用模式名限定。公有同義詞的存在于模式無關(guān)。
創(chuàng)建同義詞語法:
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; --不會拋出錯誤,基于的視圖已刪除,同義詞也處于破壞狀態(tài)
SQL>dropsynonym emp_s;
SQL>dropsynonym dept_s;
SQL>dropsynonym dsum_s;
2、序列 (sequence)
Sequence是生成唯一整數(shù)值得結(jié)構(gòu)。是用來生成主鍵的寶貴工具。序列機制與表、行鎖機制及提交或回滾過程無關(guān)。
(1)創(chuàng)建序列語法:
CREATESEQUENCE [shema.]sequencename
[INCREMENTBY number]
[STARTWITH number]
[MAXVALUEnumber | NOMAXVALUE]
[MINVALUEnumber |NOMINVALUE]
[CYCLE|NOCYCLE]
[CACHEnumber | NOCACHE]
[ORDER|NOORDER];
1、sequence_name:指定序列的名字
2、STARTWITHstart_num:指定序列從哪個整數(shù)開始,該值默認(rèn)是1
3、INCREMENTBYincrement_num:指定該序列每次增加的增量,該值默認(rèn)為1
4、MINVALUEminimum_num:指定該序列的最小整數(shù),該值必須小于等于start_num,而且必須小于maxmum_num
5、NOMINVALUE:指定升序序列的最小值為1,降序序列的最小值為-10^26
NOMINVALUE為默認(rèn)值
6、MAXVALUEmaximum_num:指定該序列的最大整數(shù),這個值必須大于等于start_num,而且必須大于minimum_num
7、NOMAXVALUE指定升序序列的最大值為10^27,降序序列的最大值為-1
NOMAXVALUE為默認(rèn)值
8、CYCLE:指定該序列即使已經(jīng)達到最大值或最小值也繼續(xù)生成整數(shù),當(dāng)升序序列達到最大值時,下一個生成的值是最小值。當(dāng)降序序列達到最小值時,下一個生成的值是最大值
9、NOCYCLE:指定該序列在達到最大值或最小值之后就不能再生成整數(shù)了,這個是默認(rèn)值
10、CACHEcache_num:指定要保留在內(nèi)存中整數(shù)的個數(shù),默認(rèn)要緩存的整數(shù)為20個,可以緩存的整數(shù)最少為2個,可以緩存的整數(shù)最多為
CELL(maximum_num-minimum_num)/ABS(increment_num)
11、NOCACHE指定不緩存任何整數(shù)
12、ORDER確保按照請求次序生成整數(shù),在使用RAC時可以使用這個選項
13、NOORDERED不確保按照請求次序生成整數(shù),這個是默認(rèn)值
SQL>createsequence seq1;
(2)使用序列
偽列NEXTVAL選擇下一個值,偽列CURRVAL選擇會話的上一個值(當(dāng)前值)。
注:序列的CURRVAL是發(fā)送給當(dāng)前會話的上一個值,不一定是發(fā)錯的上一個值。直到選擇了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');
如果分析師指出序列不能有間隔,那么必須使用另一種生成唯一值的方式。
當(dāng)前訂單可以存儲在該表中,并將它初始化為10:
Createtable current_on(order_number number);
Insertinto current_on values(10);
Commit;
然后創(chuàng)建訂單的代碼將變成:
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;
本文標(biāo)題:1Z0-051-DDL-創(chuàng)建同義詞和序列
文章起源:http://www.chinadenli.net/article36/jdhesg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、App開發(fā)、網(wǎng)站排名、域名注冊、網(wǎng)站設(shè)計、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)