Oracle學習(二)——————————————約束

這此來學習一下約束

約束可以有兩種分類一種是等級分類,一種是類型分類

按等級分類:表級約束、列級約束。

按類型分類:主鍵約束(primary key)、非空約束(not null)、默認約束(default)、外鍵約束(foreing key)、檢查約束(check)、唯一約束(unique)

一、等級分類

列級約束:

在一個列定義後用空格隔開開始定義列約束

格式 :

create table 表名(

列名 類型 約束,

列名 類型 約束1 約束2,

);

如:

從圖中可以看到列級約束在每一列後邊用空格隔開,一行列可以有多個約束

表級約束:

在全部列定義後開始定義表級約束

格式:

create table 表名(

列名 類型 ,

列名 類型,

constraint 約束名 約束類型(列名),

constraint 約束名 約束類型(列名1,列名2)

);

5、6行表級約束,約束可以約束多列

非空和默認約束不能使用在表級約束中

列級約束和表級約束區別

  表級約束 列級約束
作用 一個列上 多個列
位置 定義在要約束列的後邊 當所有列定義完之後定義約束
類型 主鍵、外鍵、檢查、唯一

前4個+非空和默認

 

二、類型約束

現在創建一個表,這個表中創建了一個表,用到了主鍵,非空,默認,檢查,唯一

a、非空約束

非空約束只能約束列

非空約束後說明插入這條數據時該列數值不能爲空

我們剛纔創建的teacher表name加了非空約束
那我們添加兩條數據看一下

首先插入一條完整的數據,插入成功

然後我們插入一條數據不插入姓名,於是就報錯了

b.主鍵約束

可以修飾任何數據類型

被修飾後,不能重複且不能爲空

一張表只能有一個主鍵

id被primary key被修飾了,所以我們插入數據

現在已經插入了一條數據

當我們在插入一條id爲一的數據,就會報錯

c、默認約束

默認約束是當該列未輸入該數據時,此數據設置未默認的值。

比如在教師的性別默認不輸入便爲男

我們插入數據時並沒有輸入性別,可是查詢查看時候性別自動爲男

d、檢查約束

檢查約束對輸入條件進行了限制,年齡在0-120之間。

我們插入數據在120以外會如何?

可以看到當輸入不符合範圍會報錯。

e、唯一約束

一張表可以有多個外鍵

唯一約束就是在這一列中不能出現重複的數據和主鍵約束有點像

主鍵約束和唯一約束報的錯是一樣的。

但是唯一約束不能爲空,主鍵約束可以爲空

f、外鍵約束

建立在兩個表之間鏈接一列或者多列,通過外鍵將一個表中的主鍵加到另一個表中

第一個表中的主鍵便是第二個表的外鍵

第一個表

第二張表

這便兩者創建了聯繫

on delete cascade(級聯刪除):當父表中的列被刪除時,同時刪除子表中相對應的記錄

on delete set null(級聯置空):當父表中的列被刪除時,子表中相對應記錄的外鍵列置空

使用外鍵的建議:

1)當父表中沒有對應的記錄時,不要將記錄添加到子表

2)不要更改父表中的值而導致子表中的記錄孤立

3)子表存在與父表對應的記錄時,刪除父表記錄時 應該級聯刪除或級聯置空

4)刪除父表前,先刪子表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章