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;
相關推薦
sql中sequence的用法
insert into PRODUCT (你建的序列.NEXTVAL,PRD_DESCRIPTION) values (id,description) 在每次插入資料的時候,id都會按你建的序列的增量自動增加。 sequence就是所謂的序列號,每次取的時候它會自動增加,一
Sql中CAST用法介紹
1、cast用法簡介: CAST (expression AS data_type)引數說明:expression:任何有效的SQServer表示式。AS:用於分隔兩個引數,在AS之前的是要處理的資料,在AS之後是要轉換的資料型別。data_type:目標系統所提供的資料型別,包括bigint和
SQL中”IsNull“用法
在機房收費系統種中遇見了IsNull,但不知道它具體是做什麼的,所以就從網上查,查完之後就明白了他的作用。現在分享給還對它的使用不明白的同志。 使用指定的替換值替換 NULL。 語法 ISNU
PL/SQL中JOB用法小結
一、設定初始化引數 job_queue_processes sql> alter system set job_queue_processes=n;(n>0) job_queue_processes最大值為1000 檢視job queue
sql中replace的用法
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 語句操作數據庫中的數據的時候,有可能會遇到一些不太爽的問題,例如對於同一字段擁有相同名稱的記錄,我們只需要顯示一條,但實際上數據庫中可能含有多條擁有相同名稱的記錄,從
SQL中MINUS的用法與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#中的
SQL中Truncate的用法
ora 依賴 trunc cat 事務日誌 delete 其中 事務復制 信息 本文導讀:刪除表中的數據的方法有delete,truncate, 其中TRUNCATE TABLE用於刪除表中的所有行,而不記錄單個行刪除操作。TRUNCATE TABLE 與沒有 WHERE
SQL中EXISTS的用法
根據 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_
SQL中INNER、LEFT、RIGHT JOIN的區別和用法詳解
相信很多人在剛開始使用資料庫的INNER JOIN、LEFT JOIN和RIGHT JOIN時,都不太能明確區分和正確使用這三種JOIN操作,本文通過一個簡單的例子通俗易懂的講解這三者的區別,希望對大家能帶來幫助。 首先,我們建立示例資料庫和表。同時也要明確一個概念:A INN