序列
序列是用來生成唯一,連續的整數的數據庫對象.序列通常用來自動生成主機那或唯一鍵的值.序列可以按升序排序,
也可以按降序排序.例如,銷售流水表中的流水號可以使用序列自動生成.
創建序列語法:
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
刪除也需要權限否則不允許刪除
該命令只會刪除同義詞,不會刪除對應的對象.
