【Oracle】第三章索引檢視表序列,oracle第三章視圖

來源:互聯網
上載者:User

【Oracle】第三章索引檢視表序列,oracle第三章視圖

第三章索引檢視表序列

序列是用來產生唯一,連續的整數的資料庫物件。序列是用來自動產生主鍵或唯一鍵的值。

CREATE SEQUENCE  sequence_name

START WITH  integer

INCREMENT BY  integer

MAXVALUE   integer|nomaxvalue

MINVALUE    integer|nominvalue

CYCLE|NOCYCLE

CACHE  integer|nocache;

START WITH     指要產生的第一個序號,對於升序,其預設值為最小值。對於降序其預設值為最大值。

INCREMENT BY : 用於指定序號之間的間隔。其預設值為1。 如果為正值,則產生的序列按升序排列,如果為負值,則產生的序列按降序排列

MAXVALUE    :指定序列可產生的最大值

NOMAXVALUE :如果指定了NOMAXVALUE,Oracle將升序序列的最大值設定為10的27次方,將降序序列的的最大值設為-1.

MINVALUE    : 指定序列的最小值。MINVALUE必須小於或等於START WITH 的值,並且必須小於MAXVALUE。

NOMINVALUE  :如果指定了NOMINVALUE ,Oracle將升序序列的最小值設定為1,或者將降序的最小值設定為-10 的26次方。

CYCLE        :指定序列在達到最大值或最小值後,將繼續從頭開始產生值

NOCYCLE     :指定序列在達到最大或者最小值的時候,將不能繼續產生值

CACHE        :使用CACHE選項可以預先分配一組序號,並將其儲存在記憶體中,這樣可以更快的訪問序號,當用完緩衝中的所有序號時,Oracle 將產生另外一組數值,並將其保留在記憶體中

NOCACHE     :使用NOCACHE選項,則不會加快訪問速度而預先分配序號,如果在建立序列時忽略了CACHE和NOCACHE選項,Oracle 將預設緩衝20個序號。

以下代碼建立了一個名為:emp_id的序列(序號從10開始,自動成長為1,最大值為2000)

Create sequence mytable_id start with 10 increment by 1 maxvalue 2000

以下代碼把 emp_id 序列產生的值插入到mytable表中

insert into mytable values(mytableid.nextval,'rose','beijing','rose@sdi.com',date'2007-10-10');

以下代碼修改了mytable_id 序列的資訊。重新設定了新的 maxvalue 值以及設定增量值為2

Alter sequence mytable_id increment by 2 maxvalue 5000;

********* 注意 :不能修改序列的 start with 參數。

以下代碼示範了刪除一個序列

     Drop sequence emp_id;

可以通過查詢user_sequence 字典表來擷取有關序列的資訊。

user_sequence 表中的部分列

Sequence_name

序列名

Min_value

 最小值

Max_value

 最大值

Increment_by

 序列的增量

Cycle_flag

 該序列是否迴圈,該值為Y或N

Order_flag

 該序列是否有序,該值為Y或N

Cache_size

儲存在記憶體中的序列值的個數

Last_number

該序列產生或緩衝的最後一個數字

以下查詢顯示了user_sequence表中的詳細資料

   select * from user_sequences

刪除序列:

   drop sequence  mytable_id;

建立視圖:

視圖是在一個或者多個表上的預定義查詢。

以下代碼 在order_master 表中建立order_view 視圖 

create or replace view order_view as select * from order_master where vencode='V001' 

在視圖中使用 with check option 。修改視圖後在視圖中不能顯示修改的行。使用with check option 可以防止視圖資料被修改。

-- 在order_master 表中建立order_view 視圖 ,並且加了with check option 約束,

--如果修改 視圖中 vencode 列的值將違反 with check option 約束。

create or replace view order_view as select * from order_master where vencode='V001' with check option

--由於視圖中增加了with check option 約束 

update order_view set vencode='V002' where orderno='o003'

--建立唯讀視圖

create or replace view order_viewOnly as select * from order_master where vencode='V001' with read only

select * from order_viewonly

--試圖修改以上唯讀視圖

update order_viewonly set ostatus='C' where orderno='V001'

建立帶有錯誤視圖:

下面語句建立一個基於表venmast 的視圖 ,但是在資料庫中並不存在名為“venmast”的表:

   Create  force  view  vtable  as  select  *  from  viewtable;  

使用索引

唯一索引:

唯一索引確保在定義索引的列中沒有重複值

Oracle 自動在表的主鍵列上建立唯一索引

     使用CREATE UNIQUE INDEX語句建立唯一索引

以下代碼在jobs表的name列上建立了一個名為jobnameindex 的唯一索引:

      create unique index jobnameindex on jobs(name);

alter index 語句的 rebuild 選項可以用來重建現有的索引,該語句效率高於使用drop index 和 create index 語句重新建立索引,下列語句示範如何重建jobnameindex索引:

alter  index  jobnameindex  rebuild ;

複合式索引:

複合式索引是在表的多個列上建立的索引

索引中列的順序是任意的

如果 SQL 語句的 WHERE 子句中引用了複合式索引的所有列或大多數列,則可以提高檢索速度

以下代碼在employee2 表中建立了複合式索引:   

create index comp_index on employees2(first_name,last_name);

反向鍵索引:

反向鍵索引反轉索引列鍵值的每個位元組

通常建立在值是連續增長的列上,使資料均勻地分布在整個索引上

建立索引時使用REVERSE關鍵字

以下代碼示範了建立反向鍵索引

      create index rev_inx on employees2(salary) reverse

使用noreverse關鍵字將反向鍵索引重建為標準索引:

      alter  index  rev_inx  rebuild  noreverse;

位元影像索引:

位元影像索引適合建立在低基數列上

位元影像索引不直接儲存ROWID,而是儲存位元組位到ROWID的映射

減少回應時間

節省空間的佔用

以下代碼示範了如何建立位元影像索引:

create bitmap index bit_inx  on employees2(division_id);

基於函數的索引

基於一個或多個列上的函數或運算式建立的索引 

   運算式中不能出現彙總函式  

   不能在LOB類型的列上建立 

   建立時必須具有 QUERY REWRITE 許可權

以下代碼示範了如何建立一個基於函數的索引

create index lowercase_inx on employees2(lower(job_id));

修改索引,以下代碼重新命名了索引。

Alter index vn_ind rename to c_vn_ind;

刪除索引:

   Drop index cvn_ind;

查看已建立的索引資訊

select * from user_indexes
查看索引基於的列
select * from user_ind_columns

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.