1. 程式人生 > 其它 >1.9 Oracle資料庫學習教程 -其他資料庫物件

1.9 Oracle資料庫學習教程 -其他資料庫物件

Oracle資料庫學習教程

其他資料庫物件

檢視

從表中抽出的邏輯上相關的資料集合。
所以:1. 檢視基於表。2. 檢視是邏輯概念。3. 檢視本身沒有資料。
檢視的目的,就是簡化查詢,不要通過檢視做insert,update,delete操作

檢視建立和刪除和表類似:只需把table-->view
一般是將表的查詢結果分配給檢視.
需要先授權scott建立檢視的許可權

create/replace view view_name AS select * from emp;

檢視的優點:

  1. 簡化複雜查詢:原來分組、多表、子查詢等可以用一條select * from xxxview代替。檢視可以看做是表的複雜的SQL一種封裝。
  2. 限制資料訪問:只看檢視的結構和資料是無法清楚檢視是怎樣得來的。可以限制資料的訪問。例如:銀行專案,所謂的各個“表”都是“檢視”,並有可能只是“只讀檢視”
    注意: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}];

其中:

  1. INCREMENT BY用於定義序列的步長,如果省略,則預設為1,如果出現負值,則代表Oracle序列的值是按照此步長遞減的。
  2. START WITH 定義序列的初始值(即產生的第一個值),預設為1。
  3. MAXVALUE 定義序列生成器能產生的最大值。選項NOMAXVALUE是預設選項,代表沒有最大值定義,這時對於遞增Oracle序列,系統能夠產生的最大值是10的27次方;對於遞減序列,最大值是-1。
  4. MINVALUE定義序列生成器能產生的最小值。選項NOMAXVALUE是預設選項,代表沒有最小值定義,這時對於遞減序列,系統能夠產生的最小值是?10的26次方;對於遞增序列,最小值是1。
  5. CYCLE和NOCYCLE 表示當序列生成器的值達到限制值後是否迴圈。CYCLE代表迴圈,NOCYCLE代表不迴圈。如果迴圈,則當遞增序列達到最大值時,迴圈到最小值;對於遞減序列達到最小值時,迴圈到最大值。如果不迴圈,達到限制值後,繼續產生新值就會發生錯誤。
  6. CACHE(緩衝)定義存放序列的記憶體塊的大小,預設為20。NOCACHE表示不對序列進行記憶體緩衝。對序列進行記憶體緩衝,可以改善序列的效能。
    大量語句發生請求,申請序列時,為了避免序列在運用層實現序列而引起的效能瓶頸。Oracle序列允許將序列提前生成 cache x個先存入記憶體,在發生大量申請序列語句時,可直接到執行最快的記憶體中去得到序列。但cache個數也不能設定太大,因為在資料庫重啟時,會清空記憶體資訊,預存在記憶體中的序列會丟失,當資料庫再次啟動後,序列從上次記憶體中最大的序列號+1 開始存入cache x個。這種情況也能會在資料庫關閉時也會導致序號不連續。
  7. NEXTVAL 返回序列中下一個有效的值,任何使用者都可以引用。
  8. CURRVAL 中存放序列的當前值,NEXTVAL 應在 CURRVAL 之前指定 ,二者應同時有效。

例子:create sequence t1_seq increment by 1 start with 1;

使用:t1_seq.nextval返回當前序列,產生下一個序列號,t1_seq.currval僅僅返回序列的當前值.

2.查詢序列

  1. 通過資料字典USER_OBJECTS可以檢視使用者擁有的序列。
  2. 通過資料字典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

喜歡請點關注❤️ ❤️ ❤️