今天的日志是關(guān)于SEQUENCE, INDEX, SYSNONYM相關(guān)知識(shí):
1. SEQUENCE:序列是一種可以用來生成一系列整數(shù)的數(shù)據(jù)庫對象.經(jīng)常用來a.生成各個(gè)記錄的唯一主鍵或 幫助進(jìn)行內(nèi)部控制.舉一個(gè)例子來說明內(nèi)部控制:企業(yè)中發(fā)票是按順序排列的,如果中間出現(xiàn)斷層,那就可以說明,有一些發(fā)票被挪為私用了.
1)CREATE SEQUENCE sequencename
[INCREMENT BY value]
[START WITH value]
[{MAXVALUE value|NOMAXVALUE}]
[{MINVALUE value|NOMINVALUE}]
[{CYCLE|NOCYCLE}]//用來確定在到達(dá)最小值或最大值后,是不是重新開始發(fā)出序列中的值
[{ORDER|NOORDER}]//主要應(yīng)用于"應(yīng)用程序機(jī)群環(huán)境中",指示是否按照接收要求的順序返回序列值
[{CACHE value|NOCACHE}];//為了加速處理用戶的請求速度,如果選用CACHE選項(xiàng),那么系統(tǒng)會(huì)事先生成一組值.但是用CACHE之后,如果系統(tǒng)崩潰了,系統(tǒng)事先生成的那一部分值將不可用,這樣會(huì)造成一定的斷層,可能會(huì)影響內(nèi)部控制.
例子:CREATE SEQUENCE orders_ordernumber
INCREMENT BY 1
START WITH 1021
NOCACHE
NOCYCLE;
用法:INSERT INTO orders VALUES(orders_ordernumber.nextval,'06-apr-03','GA');
可以通過 SELECT * FROM user_sequences;查詢 MIN_VALUE, MAX_VALUE, INCREMENT_BY, CACHE, ORDER, CACHE_SIZE, LAST_NUMBER等信息.
2)ALTER SEQUENCE sequencename
[INCREMENT BY value]
[{MAXVALUE value|NOMAXVALUE}]
[{MINVALUE value|NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{ORDER|NOORDER}]
[{CACHE value|NOCACHE}];
a.不能更改START WITH子句,要想更改,就必須刪除并重新創(chuàng)建這個(gè)序列
b.更改不能使現(xiàn)有的序列無效
2.索引 INDEX:
1)CREATE INDEX indexname
ON tablename (columnname,......);
2)以下狀況不適合創(chuàng)建索引:
a.經(jīng)常進(jìn)行更新的表
b.如果雨季出巡返回的行將超過5%,那么索引不會(huì)加快行的檢索
3)以下適合創(chuàng)建:
a.表很大,并且在WHERE子句中經(jīng)常使用特定的列
b.列通常包含大量NULL值
c.在某些情況下,索引可能適合用于基于計(jì)算值或函數(shù)的情況.
如:CREATE INDEX indexname ON tablename(retail-cost);
3.同義詞SYNONYM
CREATE [PUBLIC] SYNONYM synonymname FOR objectname;