Oracle數據庫對象管理(實例介紹)

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

                 1.同義詞管理

 

1.1同義詞: 是指爲表,視圖和序列等對象起的另一個名字。

  

1.2同義詞分爲兩種: 私有同義詞和公有同義詞。(語法上的區別在於公有同義詞在創建時需加上public關鍵字,更加本質的區別在於使用範圍的不同,公有同義詞範圍大。)

1.3語法規則:

   create [public]synonym<synonym_name>for<object_name>;

 

1.4舉例說明:

   爲表emp創建同義詞

   create synonym employee for emp;

   下面兩條select語句是等效的

(1)       select * from emp;

(2)       select * from employee;

 

   假設表emp1不存在,同樣可以創建同義詞。但必須在創建了表emp1後,所創建的同義詞纔可以使用,否則會有錯“ORA-00980: 同義詞轉換不再有效”。

   如圖:

<?xml:namespace prefix = v /> 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.5刪除同義詞

  drop synonym<synonym_name>(私有同義詞)

  drop public synonym<synonym_name>(公有同義詞)

 

 

                        2.序列管理

 

2.1 Oracle序列是一個連續的數字生成器。序列常用於關鍵字,或給數據行排序。序列號可以被設置爲上升或者下降,可以沒有限制或重複使用直到一個限制值。

 

2.2 語法規則:

    create sequence<sequence_name>keyword

 

               2-1 create sequence個選項的含義

 

      keyword

              描述

     start with

 定義序列生成的第一個數字,默認爲1

    increment by

 定義序列號是上升還是下降,對於一個降序列increment by爲負值

    minvalue

 定義序列可以生成的最小值,這是降序序列中的限制值

    no minvalue

 沒有最小值限制

    maxvalue

 序列能生成的最大數字。這是升序序列中的限制值

    no maxvalue

 沒有最大限制值

    cycle

 設置序列值在達到限制值以後可以重複

    nocycle

 設置序列值在達到限制值以後不能重複,這是默認設置。當試圖產生maxvalue+1的值時,將會產生一個異常。

    cache

 預先產生的序列個數,默認爲20

    nocache

在每次序列號產生時強制數據字典更新,保證在序列值之間沒有間隔

 

2.3舉例說明:

   爲表cm創建序列

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在創建過程中需注意:cache默認爲20,也就是說Oracle可以預先在內存裏面放置一些sequence,數量爲20個。但是初始值100到最大值130,自動增長值爲10,那也就是隻有100,110,120,130四個,小於cache20,所以會出現圖中錯誤.

 

 

 

 

  建立的序列後,就可以使用屬性nextval取得序列的下一個值。第一次nextval返回的是初始值,隨後nextval會自動增加定義的increment by ,然後返回增加後的值。屬性currval總是返回當前sequence的值,但是,在第一次nextval初始化之後才能使用currval,否則會出錯。

 

2.4修改序列

   alter sequence  cm _seq nocache;

2.5刪除序列

   drop sequence cm_seq;

 

 

 

 

                        3.視圖管理

3.1 視圖是一個或多個表或視圖中導出的表,其結構和數據是建立在對錶的查詢的基礎上的。

 

3.2 語法規則:

    create[or replace] [force|noforce] view<view_name>

    as select語句

    [with check option constraint[constraint_name]]

    [with read only]

 

3.3創建帶錯誤的視圖(注意加上force選項)

 

 

  

 

3.4  with check option with read only選項

  

(1)    with check option 子句的作用是在視圖中不允許使用insert或者update命令來對選擇的視圖中的行進行插入和修改的操作。

如圖說明:

 

  

(2)    with read only 可以完全禁止通過視圖來修改表格資料,只需在create view句子加入with read only

如圖說明:

 

 

 

3.5 刪除視圖

   Drop view <view_name>

   例如:drop view emp_v;

 

3.6 視圖上的DML語句

 

q      在視圖上也可以使用修改數據的DML語句,如INSERTUPDATEDELETE

q      視圖上的DML語句有如下限制:

q      只能修改一個底層的基表

q      如果修改違反了基表的約束條件,則無法更新視圖

q      如果視圖包含連接操作符、DISTINCT 關鍵字、集合操作符、聚合函數或 GROUP BY 子句,則將無法更新視圖

q      如果視圖包含僞列或表達式,則將無法更新視圖

 

 

3.7 通過視圖修改數據時需注意: 只有鍵保留表的列才能被修改。

什麼是鍵保留表呢??

-----在創建視圖時如果涉及到了主從表關係,並且如果一個表中的主鍵同時也當作視圖中的主鍵。那麼這個表就上鍵保留表。

 

                 4.索引管理

 

            

4.1創建索引時需注意的幾個條件:

(1)表中重複數據不多(基數高)

(2)要是經常查詢的表

(3)數據量多

(4)建索引的列是where子句/group by/order by/的條件列

(5)主鍵(唯一索引)

(6)不頻繁進行行的增,刪,改。

 

 

4.2語法規則:

可以基於數據庫表中的單列或多列創建索引,語法如下:

create [unique] index <index_name> on<table_name>(col_name1,…….);

創建唯一索引只需在createindex間加上關鍵字unique

 

 

 

 

4.3

刪除索引

   drop  index <index_name>

   例如:  drop index emp_ename_index;

 

4.4跟索引有關的數據字典:

 

(1)    user_indexes :用戶創建的索引信息

(2)    user_ind_partitions:用戶創建的分區索引的信息

(3)    user_ind_columns:索引相關的列的信息 

 

4.5創建各種類別的索引:

 

  (1)創建標準索引:CREATE INDEX item_index ON itemfile (itemcode)

TABLESPACE index_tbs;

 

  (2)重建索引:ALTER INDEX item_index REBUILD;

 

(4)    唯一索引:CREATE UNIQUE INDEX item_index  ON itemfile (itemcode);

 

  (5)反向鍵索引:

SQL> CREATE INDEX rev_index  ON itemfile (itemcode) REVERSE;

SQL> ALTER INDEX rev_index REBUID NOREVERSE;

 

(6)位圖索引:SQL> CREATE BITMAP INDEX bit_index

                  ON order_master (orderno);

(7)索引組織表:SQL> CREATE TABLE ind_org_tab (

               vencode NUMBER(4) PRIMARY KEY,

               venname VARCHAR2(20)

                )

               ORGANIZATION INDEX;

(8)基於函數的索引:SQL> CREATE INDEX lowercase_idx

                       ON toys (LOWER(toyname));

                  SQL> SELECT toyid FROM toys

                        WHERE LOWER(toyname)='doll';

 

 

(9)組合索引:SQL> CREATE INDEX comp_index ON itemfile(p_category, itemrate);

 

 

 

 

 

 

 

 

 

 

發佈了25 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章