1. 程式人生 > >Oracle 學習筆記 12 -- 序列、索引、同義詞

Oracle 學習筆記 12 -- 序列、索引、同義詞

資料庫的物件包含:表、檢視、序列、索引和同義詞。在前面的筆記中陸續學習了表和檢視,那麼本次筆記將學習剩

下的資料庫物件,即:序列、索引和同義詞。

序列:提供有規律的數值。可供多個使用者用來產生唯一數值的資料庫物件,主要用來提供主鍵的值。

索引:提高查詢的效率。

同義詞:給物件起別名。

在MYSQL 和 SQL SERVER 資料庫中。主鍵的值都是設定為自己主動增長的,這樣在插入資料的時候。便不須要再顯示

的指明資料的值。

假設也想要在Oracle中也完畢自己主動增長的更能,則要依靠序列來實現。

建立語法格式:

CREATE SEQUENCE sequence
       [INCREMENT BY n]  --每次增長的數值        [START WITH n]    --從哪個值開始        [{MAXVALUE n | NOMAXVALUE}]        [{MINVALUE n | NOMINVALUE}]
       [{CYCLE | NOCYCLE}]     --是否須要迴圈        [{CACHEn | NOCACHE}];  --是否快取登入

例:建立序列

create  sequence empseq
increment by 1 --每次增長1個數
start with 1  --從十開始增長
nomaxvalue    --沒有最大值。無限制增長
cycle  --須要迴圈
nocache --不須要快取

序列建立之後,全部的自己主動增長應該由使用者自己處理,序列提供了以下的兩種操作:

nextVal:取得序列的下一個內容。

currVal:取得序列當前的內容。

注意:在使用currVal之前,應該先執行nextVal。否則回報currVal尚未在會話中定義的錯誤。

在建立empseq的時候。設定增長的速度為1。能夠通過改變increment by 後面的數值來設定新增的速度。如能夠設定為10 。20。可是主鍵的增長速度一般設定為1。

預設情況下序列的起始值為1,能夠通過start with n來設定使用者須要的數值。

例:使用序列

insert into emp(empno  , ename  ,sal ) values(empseq.nextVal ,'lisi'  , '8000' ) ;

使用empseq.nextVal 取代了原先須要手動設定的值。提高了效率。

注意:一下情況easy產生序列的裂縫。

系統回滾操作、系統異常錯誤、多個表同一時候訪問一個序列。

改動序列

改動序列使用alterkeyword,語法格式例如以下:

ALTER SEQUENCE seq_name

       [INCREMENT BY n]  --每次增長的數值

        [{MAXVALUE n | NOMAXVALUE}]        [{MINVALUE n | NOMINVALUE}]        [{CYCLE | NOCYCLE}]     --是否須要迴圈        [{CACHEn | NOCACHE}]; 

 僅僅有序列的擁有者才幹改動序列,序列改動後影響的是將來的資料。曾經的資料不會受影響,序列的起始值僅僅能通過刪除再重建序列的方式改動。

刪除序列

語法格式:

Drop  sequence  seq_name ;

序列刪除之後,不能再引用。

索引

一種獨立於表的模式物件, 能夠儲存在與表不同的磁碟或表空間中 索引被刪除或損壞, 不會對錶產生影響, 其影響的僅僅是查詢的速度 索引一旦建立, Oracle 管理系統會對其進行自己主動維護, 並且由 Oracle 管理系統決定何時使用索引。

使用者不用在查詢語句中指定使用哪個索引

在刪除一個表時,全部基於該表的索引會自己主動被刪除 通過指標加速 Oracle server的查詢速度 通過高速定位資料的方法,降低磁碟 I/O

建立語法:

CREATE INDEX index ON table (column[, column]...);

刪除索引

DROP INDEX  index_name ; 刪除索引語句。該操作不可回滾。

同義詞-synonym

在建立查詢的時候,有的表名字比較的長。這是能夠給表起一個同義詞,來縮短表的名字

CREATE SYNONYM e FOR employees; 給表employees建立了一個同義詞e 。  執行select * from e;語句的查詢結果和執行select * from employees的結果是一樣的。

 

刪除同義詞

DROP SYNONYM syn_name ;