1.9 Oracle資料庫學習教程 -其他資料庫物件
阿新 • • 發佈:2021-10-15
Oracle資料庫學習教程
其他資料庫物件
檢視
從表中抽出的邏輯上相關的資料集合。
所以:1. 檢視基於表。2. 檢視是邏輯概念。3. 檢視本身沒有資料。
檢視的目的,就是簡化查詢,不要通過檢視做insert,update,delete操作
檢視建立和刪除和表類似:只需把table-->view
一般是將表的查詢結果分配給檢視.
需要先授權scott建立檢視的許可權
create/replace view view_name AS select * from emp;
檢視的優點:
- 簡化複雜查詢:原來分組、多表、子查詢等可以用一條select * from xxxview代替。檢視可以看做是表的複雜的SQL一種封裝。
- 限制資料訪問:只看檢視的結構和資料是無法清楚檢視是怎樣得來的。可以限制資料的訪問。例如:銀行專案,所謂的各個“表”都是“檢視”,並有可能只是“只讀檢視”
注意:1. 檢視不能提高效能 2. 不建議通過檢視對錶進行修改。
序列
序列是oracle用來生產一組等間隔的數值。序列是遞增,而且連續的。oracle主鍵沒有自增型別,所以一般使用序列產生的值作為某張表的主鍵,實現主鍵自增。序列的編號不是在插入記錄的時候自動生成的,必須呼叫序列的方法來生成(一般呼叫nextval方法)。我們也可以編寫表的insert觸發器來進自動生成。
1.建立序列:
建立序列需要CREATE SEQUENCE系統許可權。序列的建立語法如下:
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n| NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n| NOCACHE}];
其中:
- INCREMENT BY用於定義序列的步長,如果省略,則預設為1,如果出現負值,則代表Oracle序列的值是按照此步長遞減的。
- START WITH 定義序列的初始值(即產生的第一個值),預設為1。
- MAXVALUE 定義序列生成器能產生的最大值。選項NOMAXVALUE是預設選項,代表沒有最大值定義,這時對於遞增Oracle序列,系統能夠產生的最大值是10的27次方;對於遞減序列,最大值是-1。
- MINVALUE定義序列生成器能產生的最小值。選項NOMAXVALUE是預設選項,代表沒有最小值定義,這時對於遞減序列,系統能夠產生的最小值是?10的26次方;對於遞增序列,最小值是1。
- CYCLE和NOCYCLE 表示當序列生成器的值達到限制值後是否迴圈。CYCLE代表迴圈,NOCYCLE代表不迴圈。如果迴圈,則當遞增序列達到最大值時,迴圈到最小值;對於遞減序列達到最小值時,迴圈到最大值。如果不迴圈,達到限制值後,繼續產生新值就會發生錯誤。
- CACHE(緩衝)定義存放序列的記憶體塊的大小,預設為20。NOCACHE表示不對序列進行記憶體緩衝。對序列進行記憶體緩衝,可以改善序列的效能。
大量語句發生請求,申請序列時,為了避免序列在運用層實現序列而引起的效能瓶頸。Oracle序列允許將序列提前生成 cache x個先存入記憶體,在發生大量申請序列語句時,可直接到執行最快的記憶體中去得到序列。但cache個數也不能設定太大,因為在資料庫重啟時,會清空記憶體資訊,預存在記憶體中的序列會丟失,當資料庫再次啟動後,序列從上次記憶體中最大的序列號+1 開始存入cache x個。這種情況也能會在資料庫關閉時也會導致序號不連續。 - NEXTVAL 返回序列中下一個有效的值,任何使用者都可以引用。
- CURRVAL 中存放序列的當前值,NEXTVAL 應在 CURRVAL 之前指定 ,二者應同時有效。
例子:create sequence t1_seq increment by 1 start with 1;
使用:t1_seq.nextval
返回當前序列,產生下一個序列號,t1_seq.currval
僅僅返回序列的當前值.
2.查詢序列
- 通過資料字典USER_OBJECTS可以檢視使用者擁有的序列。
- 通過資料字典USER_SEQUENCES可以檢視序列的設定。
3.刪除序列用drop sequence t1_seq;
索引
相當於目錄,用於提高資料檢索速度;建立索引後,執行select語句的時候會先檢查索引.
CREATE [UNIQUE] | [BITMAP] INDEX index_name --unique表示唯一索引
ON table_name([column1 [ASC|DESC],column2 --bitmap,建立點陣圖索引
[ASC|DESC],…] | [express])
[TABLESPACE tablespace_name]
[PCTFREE n1] --指定索引在資料塊中空閒空間
[STORAGE (INITIAL n2)]
[NOLOGGING] --表示建立和重建索引時允許對錶做DML操作,預設情況下不應該使用
[NOLINE]
[NOSORT]; --表示建立索引時不進行排序,預設不適用,如果資料已經是按照該索引順序排列的可以使用
本文來自部落格園,作者:Ovins,轉載請註明原文連結:https://www.cnblogs.com/ovins/p/15412947.html
喜歡請點關注❤️ ❤️ ❤️