一,什麼是序列
序列(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 ...