1. 程式人生 > >oracle中序列,同義詞的建立

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偽列來訪問該序列的值.可以偽列中選擇值,但是不能操縱他們的值

  1. nextval:建立序列後第一次使用nextval時,將返回該序列的初始值.以後再引用nextval時,將使用increment by子句來增加序列值,並返回這個新值
  2. 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

刪除也需要許可權否則不允許刪除

該命令只會刪除同義詞,不會刪除對應的物件.