非空約束
非空約束就是限制必須為某個列提供值。空(null)即不存在未知的情況。
create
table books(
bookno number(4)
notnull
,--非空
bookname varchar2(30)
, isbn varchar2(30)
notnull);
--使用 later table modify 修改重新定義非空約束
alter
table books modify bookname not
null
;alter
table books modify bookname null
;
主鍵約束
主鍵約束用於唯一的標識表中的每一行記錄,最多只能由乙個主鍵約束,可以由乙個列組成也可以由兩個或兩個以上的列組成(聯合主鍵)。
create
table books(
bookno number(4)
notnull
,--非空
bookname varchar2(30)
, isbn varchar2(30)
notnull
,constraint book_pk primary
key(bookno));
create
table books(
bookno number(4)
primary
key,
bookname varchar2(30)
, isbn varchar2(30)
notnull);
--如果建立表時未建立主鍵,後續新增主鍵
alter
table books add
constraint book_pk primary
key(bookno)
;alter
table books add
primary
key(bookno)
;--刪除主鍵
alter
table books drop
constraint book_pk;
唯一性約束
唯一性約束強調所在的列不允許有相同的值,但是可以為空。
由於unique 約束可以存在重複 null 值,因此可以新增 not null 約束相當於主鍵約束
create
table books(
bookno number(4)
primary
key,
bookname varchar2(30)
, isbn varchar2(30)
notnull,
qq varchar2(20)
constraint qq_uk unique
--唯一性約束);
--新增唯一約束,如果新增多個約束,則在括號裡使用逗號分隔多個列
alter
table books add
constraint email_uk unique
(email)
;--刪除唯一約束、
alter
table books drop
constraint email_uk;
外來鍵約束
外來鍵約束會使用兩個表進行管聯或乙個表自然連線的情況。外鍵值「當前表」(外來鍵表)引用」另乙個表「(被引用表)的某個列或幾個列,而「另乙個表」中被引用的列必須具有主鍵約束或者唯一約束。在「另乙個表」中不存在的資料不能出現在「當前表」對應列中。一般情況下當刪除被引用表中的資料時,該資料也不應該存在外來鍵表的外來鍵列中。
--employees department 表 外來鍵表employees中的外來鍵列department_id 將被引用表department中的department_id列
alter
table employee add
constraint dept_fk
foreign
key(department_id)
references department(department_id)
;--建立外來鍵約束,外來鍵列為 department_id;
--如果外來鍵表的外來鍵列與被引用表的被引用列名相同
alter
table employee add
constraint dept_fk
foreign
key(department_id)
references department;
--刪除外來鍵約束
alter
table employee drop
constraint dept_fk;
1.在定義外來鍵約束時,如果使用了關鍵字 no action 那麼當刪除被引用表中被引用列的資料時將違反外來鍵約束,該操作將被禁止執行,也是外來鍵的預設引用型別。
2.在定義外來鍵約束時,如果使用了關鍵字set null 那麼當刪除被引用表中被引用列的資料時外來鍵表中的外來鍵列被設定為null 要使這個關鍵字起作用,外來鍵列必須支援null值。
3.在定義外來鍵約束時,如果使用了關鍵字cascade 那麼當刪除被引用表中被引用列的資料時外來鍵表中的外來鍵列也將被刪除,這種方式通稱「級聯刪除」,實際在開發過程中廣泛使用。
alter
table employees add
constraint dept_fk
foreign
key(department_id)
references department(department_id)
ondelete
cascade
;--級聯刪除
Oracle 資料表約束
2.2 唯一性約束 2.3 主鍵約束 2.4 外來鍵約束 3.禁用和啟用約束 資料庫不僅僅是用來儲存資料,它還必須保證所儲存資料的正確性。如果資料不準確或不一致,那麼該資料表的完整性就可能受到了破壞,從而給資料庫本身的可靠性帶來問題。為了維護資料庫中資料的完整性,在建立表時常常需要定義一些約束。約束...
MySQL約束 資料表操作
作用 保證資料的完整性 一致性。分類 表級約束 對多個資料列的約束列級約束 對乙個資料列的約束 區別 表級約束只能在列定義時宣告 列級約束可以在定義後宣告 具體 not null非空約束primary key主鍵約束 保證唯一性,自動為非空,只有乙個unique key唯一約束 保證唯一性,可以為空...
約束和修改資料表
外來鍵約束 foreign key 作用 保證資料的一致性 完整性,實現一對一或一對多關係 要求 1.父表和字表必須使用相同的儲存引擎,禁止使用臨時表 2.資料表的儲存引擎只能是innodb 3.外來鍵列和參照列必須有相似的資料型別,其中數字的長度和符號位必須相同,字元的長度可以不同 4.外來鍵列和...