天天看點

限制,視圖,索引,序列及觸發器的使用

1.限制及其使用

限制在Oracle中的作用與其字面意思相同,是對一個字段進行限制,分為六類(非空,主鍵,外鍵,檢查,預設,唯一)。

非空限制(not null):該字段可以在視圖建表時使用,一般為非空或not null等辨別,當勾選該選項時表示插入資料時,這條資料的該選項不能為空,必須有值。通過語句建表時,可以在字段後直接聲明not null 為該字段添加非空限制,建表後可通過(alter table 表名 modify constraint 限制名 限制類型)語句進行限制追加。

預設限制(default):預設限制與非空限制相似,當我們在建表時可以通過預設值或卻省值來進行預設值的生成。當我們在添加資料時,若是不填寫該字段,資料庫會将我們設定的預設值填入其中。通過建表語句進行建表時,我們可以在字段後直接聲明 default + 預設值的方式進行預設限制的聲明(當資料類型為字元串時,需要将加單引号'')。建表後可通過(alter table 表名 modify constraint 限制名 限制類型)語句進行限制追加

唯一限制(unique key):唯一限制是保證資料在這張表中的唯一性,也就是說,有了唯一限制的字段,在一個表中是不會存在相同的資料的。在使用時,需要我們進行單獨的限制添加,ob10中constraint選項代表限制的添加,建立限制時,我們一般按照限制名_表名_字段名 限制類型(字段)的形式進行命名,進入後将對應字段選入索引列即可。當我們通過建表語句進行添加時将語句  constraint uk_表名_字段名 限制類型(字段),寫在字段的下面。

主鍵限制(primary key):主鍵限制的作用類似于非空限制和唯一限制的結合體,當對一個字段進行主鍵限制的時候,相當與同僚滿足了非空限制和唯一限制,且一個表中隻能有一個主鍵。在使用中,我們一般将一個表的唯一辨別符進行主鍵限制,也就是說我們可以通過主鍵字段進行該表的查詢,且不會查出重複的資料。其添加方式與唯一限制類似 constraint pk_表名_字段名 限制類型(字段)

外鍵限制(foreign key):外鍵限制需要依附于另一個表中的主鍵限制存在,其存在意義是将兩個表通過外鍵和連接配接的主鍵進行連接配接,也就是我們多表查詢時使用的條件,使各個表之間有所聯系,而不是各個單獨存在的個。其命名方式與主鍵限制類似。 constraint fk_表名_字段名 限制類型(字段)。

檢查限制(check):檢查限制是将字段限制在一定的範圍内,比如說一個age字段存儲使用者年齡,那應該是0~200之間(一般情況下),而不能輸入一個負一(雖然我很想變成負一....),檢查限制就可以幫我們限制住一個字段的範圍。命名方式與主鍵限制類似。 constraint ck_表名_字段名 限制類型(字段)。

視圖

我們在進行資料查詢的時候隻顯示我們想要查詢的資料,那當我們能否将我們的查詢結果進行保留,并将其作為一個單獨的表(不是真實存在的)進行一定的操作呢?視圖就是滿足我們這個需要的存在,當我們隻想讓别人檢視一部的資料的時候,我們就可以将這部分資料做為一個視圖進行存儲,并通過視圖進行資料的查詢。但是需要注意的是,當我們對視圖進行增删改操作的時候,實際上是對原表進行操作,是以在删除或是更新的時候要格外注意。其建立格式為

CREATE OR REPLACE VIEW 視圖名

    (字段,字段)

AS

查詢語句

索引

索引的作用相當于一本書的目錄和頁碼。我們想要找到某個内容,可以快速的通過這個頁碼來找到我們想要找到的内容。這種類似于頁碼的形式,在我們的資料查找中可以很快的幫我們找到我們想要的内容,提高查找效率。其關鍵字為index。建立序列的方式如下圖

限制,視圖,索引,序列及觸發器的使用

序列

序列的建立可以幫我們自動的按一定的規律進行該列資料的填充,有人可能會覺得,我明明可以自己進行資料填充,為什麼要用序列呢。我們做這樣一個設想,當我們的java中有兩個使用者同僚都進行了添加操作,那我們是填進去兩個相同的資料嗎?肯定是不能的,這樣會導緻我們之後工作的很多麻煩,而序列會自動擷取下一個數字,就可以很好的避免這個問題,保證設有序列的這一列不會有重複的數字。其關鍵字為SEQUENCE 建立方式如下

限制,視圖,索引,序列及觸發器的使用

代碼建立方式如下

CREATE SEQUENCE 序列名

INCREMENT BY 2--序列的增量

START WITH 41--初始值(包括cache裡的20個 即 20*2)

MAXVALUE  999--最大值

MINVALUE  888 --最小值沒有最全面加no 即nominvalues

NOCYCLE --不循環 循環删no

CACHE 20 --預配置設定空間

NOORDER --順序保證

/

代碼修改/删除 将create換成alter或drop

觸發器

觸發器的使用類似于我們日常生活中的開關,或是遊戲中的隐藏boss,當我們按下開關的時候燈會亮,當我們滿足特定條件時會開啟隐藏任務一樣。觸發器的作用就是當我們在操作資料庫時,進行了特定的操作時,就會觸發觸發器中的代碼的執行。觸發器可以應用于資料備份,多表連查等操作,其中行觸發意為添加條數(目标表)根據觸發表的添加條數确定,時間選項為觸發表的操作前(後)進行語句執行。下列為觸發器中常用操作

限制,視圖,索引,序列及觸發器的使用

①添加資料的時候将相同的資料添加到備份表中

                                      insert into 表名 values (:new.字段,:new.字段);

                                      ②删除資料的同時将删除的資料添加到備份表中

                                      insert into 表名 values (:old.字段,:old.字段);

                                      ③删除表中資料并把備份表中的相應資料一起删除

                                      delete from 表名 where 字段 = :old.字段;

                                      ④自動添加流水号(序列号)