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

oracle_序列、索引、同義詞

編輯:Oracle教程

oracle_序列、索引、同義詞





①序列
1.序列: 可供多個用戶用來產生唯一數值的數據庫對象
自動提供唯一的數值
共享對象
主要用於提供主鍵值
將序列值裝入內存可以提高訪問效率

2.CREATE SEQUENCE 語句
CREATE SEQUENCE sequence
[INCREMENT BY n] --每次增長的數值
[START WITH n] --從哪個值開始
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}] --是否需要循環
[{CACHE n | NOCACHE}]; --是否緩存登錄
3.查詢序列
查詢數據字典視圖 USER_SEQUENCES 獲取序列定義信息
SELECT sequence_name, min_value, max_value,
increment_by, last_number
FROM user_sequences;
如果指定NOCACHE 選項,則列LAST_NUMBER 顯示序列中下一個有效的值

4.NEXTVAL 和 CURRVAL 偽列
NEXTVAL 返回序列中下一個有效的值,任何用戶都可以引用
CURRVAL 中存放序列的當前值
NEXTVAL 應在 CURRVAL 之前指定 ,否則會報CURRVAL 尚未在此會話中定義的錯誤。

5.使用序列
將序列值裝入內存可提高訪問效率
序列在下列情況下出現裂縫:
回滾
系統異常
多個表同時使用同一序列
如果不將序列的值裝入內存(NOCACHE), 可使用表 USER_SEQUENCES 查看序列當前的有效值

6.修改序列
修改序列的增量, 最大值, 最小值, 循環選項, 或是否裝入內存
ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE;
修改序列的注意事項
必須是序列的擁有者或對序列有 ALTER 權限
只有將來的序列值會被改變
改變序列的初始值只能通過刪除序列之後重建序列的方法實現

7.刪除序列
使用 DROP SEQUENCE 語句刪除序列
刪除之後,序列不能再次被引用

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

2.創建索引
自動創建: 在定義 PRIMARY KEY 或 UNIQUE 約束後系統自動在相應的列上創建唯一性索引
手動創建: 用戶可以在其它列上創建非唯一的索引,以加速查詢

CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>
ON <schema>.<table_name>
(<column_name> | <expression> ASC | DESC,
<column_name> | <expression> ASC | DESC,...)
TABLESPACE <tablespace_name>
STORAGE <storage_settings>
LOGGING | NOLOGGING
COMPUTE STATISTICS
NOCOMPRESS | COMPRESS<nn>
NOSORT | REVERSE
PARTITION | GLOBAL PARTITION<partition_setting>

相關說明
1)UNIQUE | BITMAP:指定UNIQUE為唯一值索引,BITMAP為位圖索引,省略為B-Tree索引。
2)<column_name> | <expression> ASC | DESC:可以對多列進行聯合索引,當為expression時即“基於函數的索引”
3)TABLESPACE:指定存放索引的表空間(索引和原表不在一個表空間時效率更高)
4)STORAGE:可進一步設置表空間的存儲參數
5)LOGGING | NOLOGGING:是否對索引產生重做日志(對大表盡量使用NOLOGGING來減少占用空間並提高效率)
6)COMPUTE STATISTICS:創建新索引時收集統計信息
7)NOCOMPRESS | COMPRESS<nn>:是否使用“鍵壓縮”(使用鍵壓縮可以刪除一個鍵列中出現的重復值)
8)NOSORT | REVERSE:NOSORT表示與表中相同的順序創建索引,REVERSE表示相反順序存儲索引值
9)PARTITION | NOPARTITION:可以在分區表和未分區表上對創建的索引進行分區

3.什麼時候創建索引
以下情況可以創建索引:
列中數據值分布范圍很廣
列經常在 WHERE 子句或連接條件中出現
表經常被訪問而且數據量很大 ,訪問的數據大概占數據總量的2%到4%

4.什麼時候不要創建索引
下列情況不要創建索引:
表很小
列不經常作為連接條件或出現在WHERE子句中
查詢的數據大於2%到4%
表經常更新

注:索引不需要用,只是說我們在用name進行查詢的時候,速度會更快。當然查的速度快了,插入的速度就會慢。因為插入數據的同時,還需要維護一個索引。

5.查詢索引
可以使用數據字典視圖 USER_INDEXES 和 USER_IND_COLUMNS 查看索引的信息
SELECT ic.index_name, ic.column_name,
ic.column_position col_pos,ix.uniqueness
FROM user_indexes ix, user_ind_columns ic
WHERE ic.index_name = ix.index_name
AND ic.table_name = 'EMPLOYEES';

6.刪除索引
使用DROP INDEX 命令刪除索引
DROP INDEX index;
只有索引的擁有者或擁有DROP ANY INDEX 權限的用戶才可以刪除索引
刪除操作是不可回滾的

③同義詞-synonym
使用同義詞訪問相同的對象:
方便訪問其它用戶的對象
縮短對象名字的長度
CREATE [PUBLIC] SYNONYM synonym
FOR object;

1.創建和刪除同義詞
為視圖DEPT_SUM_VU 創建同義詞
CREATE SYNONYM d_sum
FOR dept_sum_vu;

2.刪除同義詞
DROP SYNONYM d_sum;

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