程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle學習筆記12--序列、索引、同義詞

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

編輯:Oracle教程

數據庫的對象包括:表、視圖、序列、索引和同義詞。在前面的筆記中陸續學習了表和視圖,那麼本次筆記將學習剩

下的數據庫對象,即:序列、索引和同義詞。

序列:提供有規律的數值。可供多個用戶用來產生唯一數值的數據庫對象,主要用來提供主鍵的值。

索引:提高查詢的效率。

同義詞:給對象起別名。

在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 代替了原先需要手動設置的值,提高了效率。

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

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

修改序列

修改序列使用alter關鍵字,語法格式如下:

ALTER SEQUENCE seq_name

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

[{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] --是否需要循環 [{CACHEn | NOCACHE}];

只有序列的擁有者才能修改序列,序列修改後影響的是將來的數據,以前的數據不會受影響,序列的起始值只能通過刪除再重建序列的方式修改。

刪除序列

語法格式:

Drop sequence seq_name ;

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

索引

一種獨立於表的模式對象, 可以存儲在與表不同的磁盤或表空間中 索引被刪除或損壞, 不會對表產生影響, 其影響的只是查詢的速度 索引一旦建立, Oracle 管理系統會對其進行自動維護, 而且由 Oracle 管理系統決定何時使用索引。用戶不用在查詢語句中指定使用哪個索引在刪除一個表時,所有基於該表的索引會自動被刪除 通過指針加速 Oracle 服務器的查詢速度 通過快速定位數據的方法,減少磁盤 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 ;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved