使用序列建立主鍵

2021-08-14 13:08:19 字數 1926 閱讀 7905

一,什麼是序列

序列(sequence)是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值(型別為數字)。其主要

的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當前值,或使序列增至下乙個值。建立序列需

要create sequence系統許可權。序列的建立語法如下:

create sequence 序列名

[increment by n]

[start with n]

; 建立乙個名稱為:sequence_paramid 的序列:

create sequence sequence_paramid

increment by 1

minvalue 100001001

maxvalue 999999999

nocycle

nocache;

increment by 用於定義序列的步長,如果省略,則預設為1,如果出現負值,則代表序列的值是按照此步長遞減的。 start with 定義序列的初始值(即產生的第乙個值),預設為1。 maxvalue 定義序列生成器能產生的最大值。選項nomaxvalue是預設選項,代表沒有最大值定義,這時對於遞增序列,系統能夠產生的最大值是10的27次方;對於遞減序列,最大值是-1。 minvalue定義序列生成器能產生的最小值 ...

在oracle資料庫中,什麼是序列呢?它的用途是什麼?序列(sequence)其實是序列號生成器,可以為表中的行自動

生成序列號,產生一組等間隔的數值(型別為數字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,也可以通

過查詢檢查當前值,或使序列增至下乙個值。

二,使用序列生成主鍵

建立乙個序列以後,如何使用這個序列,生成主鍵呢?我們獲取序列的nextval就可以了,具體還要結合使用場景。

假如我們在insert語句中使用序列生成主鍵,只需要把sequence_paramid.nextval作為值,傳遞給主鍵欄位就可以了。

假如我們想獲取這個值,在程式中使用,我們可以通過下面的語句:select sequence_paramid.nextval from dual;

和自增長的方式相比,序列具有更好的靈活性,可以根據需要設定的主鍵的長度。而使用自增長的方式,缺乏靈活

性,總是從1開始,每次遞增1,我們沒法控制。

三,實戰演示

1,建立序列

create sequence sequence_paramid

increment by 1

minvalue 100001001

maxvalue 999999999

nocycle

nocache;

2,建立資料庫表

create table yy_product(

product_id varchar(18) not null,    -- 由於是主鍵,是唯一的,因此不用再加上unique關鍵字

product_name varchar(100) not null,

primary key(product_id)             -- 把product_id 設定為主鍵

);3,資料庫插入操作

insert into yy_product(

product_id,

product_name

)values(

sequence_paramid.nextval,

'秋冬女士打**加絨加厚'

);ok,乙個簡單的應用就是這樣的,趕緊試試吧。這裡補充說明一點,很多人會問,為什麼你寫sql語句都用大寫字母呢,

因為oracle和db2資料庫,在對sql進行編譯時,會把sql轉換成大寫,我們都使用大寫,資料庫就減少了乙個轉換的

過程,這樣可以提高sql的執行效率。雖然對效率的提公升不大,但相對而言,效率是有提公升的。書寫高效的sql,必須要

從細節著手。正所謂:不積跬步無以至千里。

Oracle使用序列建立自增字段(主鍵自動增長)

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權 sql create sequence seq emp incre...

oracle 建立表 序列 注釋 主鍵

declare icount number 2 0 begin select count into icount from user sequences u where u.sequence name seq tcapitalnotify if icount 0 then 建立序列 execute ...

oracle 建立表 序列 注釋 主鍵

declare icount number 2 0 begin select count into icount from user sequences u where u.sequence name seq tcapitalnotify if icount 0 then 建立序列 execute ...