1. 程式人生 > >sql中sequence的用法

sql中sequence的用法


insert into PRODUCT (你建的序列.NEXTVAL,PRD_DESCRIPTION) values (id,description)
在每次插入資料的時候,id都會按你建的序列的增量自動增加。

sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按

序列號排序的地方。

1、 create sequence

你首先要有create sequence或者create any sequence許可權,

create sequence emp_sequence

INCREMENT BY 1 -- 每次加幾個

START WITH 1 -- 從1開始計數

NOMAXVALUE -- 不設定最大值

NOCYCLE -- 一直累加,不迴圈

CACHE 10;

一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVAL

CURRVAL=返回sequence的當前值

NEXTVAL=增加sequence的值,然後返回sequence值

比如:

emp_sequence.CURRVAL

emp_sequence.NEXTVAL

可以使用sequence的地方:

- 不包含子查詢、snapshot、VIEW的 SELECT 語句

- INSERT語句的子查詢中

- NSERT語句的VALUES中

- UPDATE 的 SET中

可以看如下例子:

INSERT INTO emp VALUES

(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

SELECT empseq.currval FROM DUAL;

但是要注意的是:

- 第一次NEXTVAL返回的是初始值;隨後的NEXTVAL會自動增加你定義的INCREMENT BY值,

然後返回增加後的值。CURRVAL 總是返回當前sequence的值,但是在第一次NEXTVAL

初始化之後才能使用CURRVAL,否則會出錯。一次NEXTVAL會增加一次sequence的值,

所以如果你在同一個語句裡面使用多個NEXTVAL,其值就是不一樣的。明白?

- 如果指定CACHE值,oracle就可以預先在記憶體裡面放置一些sequence,這樣存取的快

些。

cache裡面的取完後,oracle自動再取一組到cache。 使用cache或許會跳號, 比如

資料庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失. 所以可

以在create sequence的時候用nocache防止這種情況。

2、 Alter sequence

你或者是該sequence的owner,或者有ALTER ANY sequence許可權才能改動sequence。 可

以alter除start值之外的所有sequence引數。如果想要改變start值,必須drop sequence

再re-create。例子:

ALTER sequence emp_sequence

INCREMENT BY 10

MAXVALUE 10000

CYCLE -- 到10000後從頭開始

NOCACHE;

影響sequence的初始化引數:

sequence_CACHE_ENTRIES =

設定能同時被cache的sequence數目。

可以很簡單的Drop sequence

DROP sequence order_seq;

相關推薦

sqlsequence用法

insert into PRODUCT (你建的序列.NEXTVAL,PRD_DESCRIPTION) values (id,description) 在每次插入資料的時候,id都會按你建的序列的增量自動增加。 sequence就是所謂的序列號,每次取的時候它會自動增加,一

SqlCAST用法介紹

1、cast用法簡介: CAST (expression AS data_type)引數說明:expression:任何有效的SQServer表示式。AS:用於分隔兩個引數,在AS之前的是要處理的資料,在AS之後是要轉換的資料型別。data_type:目標系統所提供的資料型別,包括bigint和

SQL”IsNull“用法

在機房收費系統種中遇見了IsNull,但不知道它具體是做什麼的,所以就從網上查,查完之後就明白了他的作用。現在分享給還對它的使用不明白的同志。 使用指定的替換值替換 NULL。 語法 ISNU

PL/SQLJOB用法小結

一、設定初始化引數 job_queue_processes   sql> alter system set job_queue_processes=n;(n>0)   job_queue_processes最大值為1000   檢視job queue

sqlreplace的用法

pda user spa nbsp 字段 修改 字段名 fun 大寫 update 表名 set 字段名=REPLACE (字段名,‘原來的值‘,‘要修改的值‘) 如:將tbl_user表的user_name字段中的大寫的A替換成小寫的a update tbl_stude

SQL 的 distinct 和 row_number() over() 的區別及用法

表示 第一個 字段值 格式 這樣的 操作數 col 例如 from   1 前言    在咱們編寫 SQL 語句操作數據庫中的數據的時候,有可能會遇到一些不太爽的問題,例如對於同一字段擁有相同名稱的記錄,我們只需要顯示一條,但實際上數據庫中可能含有多條擁有相同名稱的記錄,從

SQLMINUS的用法與UNION的用法

保留 所有 一個 出現 但是 列數 sql date store 一:MINUS指令 其是運用在兩個 SQL 語句上。它先找出第一個 SQL 語句所產生的結果,然後看這些結果有沒有在第二個 SQL語句的結果中。如果有的話,那第一個SQL結果數據就被去除,而不會在最後的結果中

【語法】SQL的case when then else end用法-解決一個字段根據條件取不同值

where 運行 pos 功能 enter cnblogs logs wro img Case具有兩種格式。簡單Case函數和Case搜索函數。 --簡單Case函數 CASE sex WHEN ‘1‘ THEN ‘男‘ WHEN

sql的 IF 條件語句的用法

expr book blank OS body strcmp subst stat literal IF 表達式 IF( expr1 , expr2 , expr3 ) expr1 的值為 TRUE,則返回值為 expr2 expr2 的值為FALSE,則返回值為 ex

SQL的ALL,ANY,SOME的用法

alt span AC 準備 結果 子查詢 all strong select 準備兩個表: --T1(2,3)--T2(1,2,3,4) --ALL,ANY,SOME 的子查詢-- >ALL 父查詢中的結果集大於子查詢中每一個結果集中的值,則為真SELECT * F

SQL比較好的For xml 用法實例

log ice AR dbo ID orm transport cat 商品 --包裹單號 入庫時間 交易號 商品分類 商品名稱 實付款SELECT a.DeliveryCode AS ‘包裹單號‘,a.DomesticWarehouseInTime AS ‘入庫時間‘,a

SQL的declare用法

msdn 問題 備註 int32 技術 作用域 幫助 還在 sof 平時寫SQL查詢、存儲過程都是憑著感覺來,沒有探究過SQL的具體語法,一直都是按c#那一套往SQL上模仿,前幾天項目中碰到一個問題引起了我對declare定義變量的作用域的興趣。 大家都知道c#中的

SQLTruncate的用法

ora 依賴 trunc cat 事務日誌 delete 其中 事務復制 信息 本文導讀:刪除表中的數據的方法有delete,truncate, 其中TRUNCATE TABLE用於刪除表中的所有行,而不記錄單個行刪除操作。TRUNCATE TABLE 與沒有 WHERE

SQLEXISTS的用法

根據 win put ear 數據庫 int 關鍵字 ber tab 比如在Northwind數據庫中有一個查詢為SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM

SQL的條件判斷語句(case when zhen if,ifnull)用法

簡介: case具有兩種格式。簡單case函式和case搜尋函式。這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case部分將會被自動忽略。

SQL排序函式的用法

SQL中的排序函式有三:1、row_number() over();2、rank() over();3、dense_rank() over(),具體用法如下: 1.row_number() over(partition by 列名 order by 列名 [desc]) 其中,partition by 是分組

SQL排序函數的用法

函數 partition row mysql part order 兩個 無法使用 重復 SQL中的排序函數有三:1、row_number() over();2、rank() over();3、dense_rank() over(),具體用法如下: 1.row_number

T-SQL的APPLY用法

原文出處:http://www.sqlservercentral.com/articles/Stairway+Series/121318/   從SQL Server 2005開始,微軟添加了一個新的運算子用於關聯一個帶有函式的結果集,並把函式應用於表/檢視中的每一個限定行中。這個運算子就是AP

oracle sql 遊標的簡單用法(tip:sql兩個單引號表示一個單引號)

--遊標遍歷某個欄位 (打印出來) declare            res_sql varchar2(2000); cursor cur is            select f_

SQLINNER、LEFT、RIGHT JOIN的區別和用法詳解

相信很多人在剛開始使用資料庫的INNER JOIN、LEFT JOIN和RIGHT JOIN時,都不太能明確區分和正確使用這三種JOIN操作,本文通過一個簡單的例子通俗易懂的講解這三者的區別,希望對大家能帶來幫助。 首先,我們建立示例資料庫和表。同時也要明確一個概念:A INN