序列是oracle提供的用於生成一系列唯一數字的資料庫物件,序列會自動生成順序遞增的序列號,以實現自動提供唯一的主鍵值,系列可以在多個使用者併發環境中使用,並且可以為所有使用者生成不重複的順序數字,而不需要任何額外的i/o開銷。
建立序列
序列和檢視一樣,並不占用實際的儲存空間,只是在資料字典中儲存他的定義資訊。當建立序列時必須擁有create sequence系統許可權。
語法格式:
create sequence seq_name
[start with n]
[minvalue n | nomainvalue]
[maxvalue n | nomaxvalue]
[cache n | ncache]
[cycle | nocycle]
[order | noorder];
含義:seq_name:建立的序列名。
increment :該子句是可選的,表示序列的增量。乙個正數將生成乙個遞增的序列,乙個負數將生成乙個遞減的序列。預設值為1
minvalue:可選的子句,決定序列生成的最小值。
maxvalue:可選的子句,決定序列生成的最大值。
start: 可選的子句,制定序列的開始位置。預設情況下,遞增序列的起始值為minvalue,遞減序列的起始值為maxvalue。
cache:該選項決定是否產生序列號預分配,並儲存在記憶體中。
cycle: 可選的關鍵字,當序列到達最大值(maxvalue)或者最小值(minvalue)時可復位並繼續下去。如果達到極限。生成的下乙個資料將分別是最小值或者最大值。如果使用no cycle 選項,那麼在序列達到最大值或最小值之後,如果再試圖獲取下乙個值將返回乙個錯誤。
order: 該選項可以保證生成的序列值是按順序產生的。例如:order可以保證第乙個請求得到的數為1,第二個請求得到的數為2,以此類推而noodder只保證序列的值唯一性,不保證產生列值的順序。
例子:create sequence seq_dept
maxvalue 99--序列產生產生的最大值。
start with 50 --從50開始
increment by 10--每次跳10個序列號遞增
cache 10;--在系統中預分配10個。將來生成的序列號為50,60,70,80,90
注意:使用序列時,需要用到序列的兩個偽列nexval與currval。其中nextval將返回序列生成的下乙個序列號,而偽列currval則會返回序列的當前序列號。需要注意,首次引用序列時,必須使用偽列nextval。
例如:insert into scott.dept(deptno,dname,loc) values(seq_dept.nextval,'development',default);
執行以上句子後,會為dept表插入一條資料,並且deptno列會使用序deptno_seq生成的序列號。另外,如果使用者要確定當前序列號,可以使用偽列currval。
例如: select seq_dept from dual;
上公升子串行 求和最大值
problem description 乙個只包含非負整數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列,我們可以得到一些上公升的子串行,這裡1 i1 i2 ik n。例如 對於序列,有它的一些上公升子串行,如,等等。這些子串行中序列和最大的是子串行,它的所有元素...
python獲取序列中最大值
test 1,2,3 4,5,6 7,8,9 這個就可以看做是二維陣列了,直接建立 print test print test 1 這裡會輸出 4,5,6 print test 1 這裡會輸出 4,5,6 print test 1 這裡會輸出 4,5,6 print test 1 1 這裡輸出的是5...
Oracle 分組取出最大值記錄
找出乙個固定id值不同型別檔案的最大版本號 也就是相同檔案型別的 max version 注意 重點應該在 rank over partition by order by version desc rank函式用於返回結果集的分區內每行的排名,行的排名是相關行之前的排名數加一。簡單來說rank函式就...