oracle中序列,同義詞的建立
序列
序列是用來生成唯一,連續的整數的資料庫物件.序列通常用來自動生成主機那或唯一鍵的值.序列可以按升序排序,
也可以按降序排序.例如,銷售流水錶中的流水號可以使用序列自動生成.
建立序列語法:
create sequence sequence_name
[START WITH integer]
[INCREMENT BY integer]
[MAXVALUE integer|NOMAXVALUE ]
[MINVALUE integer|]NOMAXVALUE ]
[CYCLE|NOCYCLE]
[CACHE integer|NOCACHE]
- START WITH: 指定要生成的第一 一個序列號。對於升序序列其預設值為序列的最小值,對於降序序列,其預設值為序列的最大值。
- INCREMENT BY: 用於指定序列號之間的間隔,其預設值為1. 如果為正值,則生成的序列將按升序排列:如果n為負值,則生成的序列將按降序排列。
- MAXVALUE:指定序列可以生成的最大值。
- NOMAXVALUE: 如果指定了NOMAXVALUE. Oracle 將升序序列的最大值設為10的27次方,將降序序列的最大值設為-1。這是預設選項。
- MINVALUE:指定序列的最小值。MINVALUE 必須小於或等於START WITH的值,並且必須小於MAXVALUE。
- NOMINVALUE:如果指定了NOMINVALUE. Oracle 將升序序列的最小值設為1.將降序序列的最小值設為-10的26次方。這是預設選項。
- CYCLE:指定序列在達到最大值或最小值後.將繼續從頭開始生成值。
- NOCYCLE:指定序列在達到最大值或最小值後,將不能再繼續生成值。這是預設選項。
- CACHE:使用CACHE選項可以預先分配一組序列號,並將其保留在記憶體中.這樣可以更快地訪問序列號。當用完快取中的所有序列號時, Oracle 將生成另一組數值,並將其保留在快取中。
- NOCACHE:使用NOCACHE選項,則不會為加快訪問速度而預先分配序列號。如果在建立序列時忽略了CACHE和NOCACHE選項,Orale將預設快取20個序列號。
建立序列
create sequence seq1 start with 1 increment by 1 maxvalue 300 nocycle cache 10;
建立序列之後,可以通過nextval和currval偽列來訪問該序列的值.可以偽列中選擇值,但是不能操縱他們的值
- nextval:建立序列後第一次使用nextval時,將返回該序列的初始值.以後再引用nextval時,將使用increment by子句來增加序列值,並返回這個新值
- currval:返回序列的當前值,即最後一次引用nextval時返回的值
更改序列
alter sequence 命令用於修改序列的定義,如果執行下列操作,則會修改序列
- 設定或刪除minvalue或maxvalue
- 修改增量值
- 修改快取中序列號的數目
修改語法如下
alter sequence [schema.]sequence_name
[INCREMENT BY integer]
[MAXVALUE integer|NOMAXVALUE ]
[MINVALUE integer|]NOMAXVALUE ]
[CYCLE|NOCYCLE]
[CACHE integer|NOCACHE]
刪除序列
刪除語法:drop sequence [schema.]sequence_name
用於從資料庫刪除: drop sequence sequence_name
同義詞
同義詞就有點像應用分身,可以把一張表複製一份,不過需要使用者有許可權才能去建立,而且可以限定使用範圍
注意:建立的時候它不會管表存不存在,只有當使用的時候才會去呼叫
作用
- 簡化SQL語句語句
- 隱藏物件的名稱和所有
- 為分散式資料庫的遠端物件提供了位置透明性
- 提供對物件的公共訪問
私有同義詞
私有同義詞只能被當前模式的使用者訪問,且私有同義詞名稱不可與當前模式物件名稱相同,要在當前模式下建立私有同義詞,使用者必須
擁有create sysnonym系統許可權.要在其他使用者模式下建立私有同義詞,使用者必須擁有create any synonym系統許可權
建立私有同義詞的語法:
create [or replace] sysnonym [schema.] sysnonym_name
for [schema.]object_name;
create synonym system.empTow for scott.emp
在語法中:
- or replace:表示在同義詞存在的情況下替換該同義詞
- synonym_name:表示要建立的同一詞的名稱
- object_name: 指定要為之建立同義詞的物件的名稱
- schema:當前使用者名稱
公有同義詞
公有同義詞可被所有的資料庫使用者訪問.公有同義詞可以隱藏資料庫物件的所有作者和名稱,並降低SQL語句的複雜性.要建立
公有同義詞,使用者必須擁有craete public synonym系統許可權
語法:
create [or replace] public synonym
for [schema.]object_name;
create or replace public synonym empTow for scott.emp
刪除同義詞
語法: drop synonym [schema.]object_name;
drop public synonym empTow
刪除也需要許可權否則不允許刪除
該命令只會刪除同義詞,不會刪除對應的物件.