在oracle中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 的例子
ALTER SEQUENCE emp_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000從頭開始
NOCACHE ;
影響Sequence的初始化參數:
SEQUENCE_CACHE_ENTRIES =設置能同時被cache的sequence數目。
可以很簡單的Drop Sequence
DROP SEQUENCE order_seq;
From: http://fanqiang.chinaunix.net/a2/b2/20010514/10150052_b.html
本網誌主要是記錄筆者在使用電腦上疑難解決方法。希望藉著此平台跟大家分享交流。
This blog is used for sharing how to troubleshoot my computer problem. I would like to share them to each other through this platform.
2013-07-25
2013-07-18
SQL四種語言:DDL,DML,DCL,TCL
1.DDL(Data Definition Language)數據庫定義語言statements are used to define the database
structure or schema.
DDL是SQL語言的四大功能之一。
用於定義數據庫的三級結構,包括外模式、概念模式、內模式及其相互之間的映像,定義數據的完整性、安全控制等約束
DDL不需要commit.
CREATE
ALTER
DROP
TRUNCATE
COMMENT
RENAME
2.DML(Data Manipulation Language)數據操縱語言statements are used for managing data
within schema objects.
由DBMS提供,用於讓用戶或程序員使用,實現對數據庫中數據的操作。
DML分成交互型DML和嵌入型DML兩類。
依據語言的級別,DML又可分成過程性DML和非過程性DML兩種。
需要commit.
SELECT
INSERT
UPDATE
DELETE
MERGE
CALL
EXPLAIN
PLAN
LOCK
TABLE
3.DCL(Data Control Language)數據庫控制語言授權,角色控制等
GRANT
授權
REVOKE
取消授權
4.TCL(Transaction Control Language)事務控制語言
SAVEPOINT
設置保存點
ROLLBACK
回滾
SET
TRANSACTION
SQL主要分成四部分:
(1)數據定義。 (SQL DDL)用於定義SQL模式、基本表、視圖和索引的創建和撤消操作。
(2)數據操縱。 (SQL DML)數據操縱分成數據查詢和數據更新兩類。數據更新又分成插入、刪除、和修改三種操作。
(3)數據控制。包括對基本表和視圖的授權,完整性規則的描述,事務控制等內容。
(4)嵌入式SQL的使用規定。涉及到SQL語句嵌入在宿主語言程序中使用的規則。
訂閱:
文章 (Atom)
Review Who is Connected to Windows Shared Folder
1. Open Computer Management Console Windows Key + R -> compmgmt.msc 2. Expand System Tools -> Shared Folder -> Sessions ...
-
Copy / Transfer Putty Configuration File / Profile 首先,你必需有權限執行登錄檔編輯程式。 First of all, You may have both computers administrative right to ...
-
Start Chrome with Incognito (Private) Browsing Mode Firstly, right click "Chrome" shortcut --> click "Properties" ...