oracle數據庫初步之約束

概述

1.  約束的作用:(1)定義規則(2)確保完整性(精確性和可靠性)

2.五個重要的約束:非空約束、主鍵約束、外鍵約束、檢查約束、唯一約束。

非空約束

1.在創建表時設置非空約束
CREATE TABLE table_name(
column_name datatype NOT NULL,…
);

2.在修改表時設置非空約束
ALTER TABLE table_name
MODIFY column_name datatype NOT NULL;

3.在修改表時去除非空約束
ALTER TABLE table_name
MODIFY column_name datatype NULL;

主鍵約束

1.作用:確保表當中每一行數據的唯一性(非空唯一)
一張表只能設計一個主鍵約束
主鍵約束可以有多個字段構成(聯合主鍵或複合主鍵)

2.在創建表時設置主鍵約束
CREATE TABLE table_name(
column_name datatype PRIMARY KEY,…
);
CREATE TABLE table_name(
column_name1 datatype,…
CONSTRAINT constraint_name
PRIMARY KEY(column_name1,…);
);
查看約束名稱的數據字典user_constraints
查看約束的語句select constraint_name from user_constraintswhere table_name=’表名’;

3.在修改表時添加主鍵約束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
PRIMARY KEY(column_name1,…);

4.更改約束的名稱
ALTER TABLE table_name
RENAME CONSTRAINT old_name
TO new_name;

5.刪除主鍵約束
禁用約束與啓用約束:ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT constraint_name;
查看約束狀態:select constraint_name,status fromuser_constraints where table_name=’表名’;
刪除約束:ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
刪除約束(主鍵專用):ALTER TABLE table_name
DROP PRIMARY KEY[CASCADE]; cascade級聯

外鍵約束

1.在創建表時設置外鍵約束
在列級:CREATE TABLE table_1(從表)
(column_name datatype REFERENCES
table2(主表)(column_name),…);
注意:主從表中相應的字段必須是同一個數據類型,從表中外鍵字段的值必須來自主表中的相應字段的值,或者爲null值。
在表級:CONSTRAINT constraint_name FOREIGNKEY(column_name)REFERENCES
table_name(column_name)[ON DELETE CASCADE](級聯刪除);

2.在修改表時添加外鍵約束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name FOREIGN
KEY(column_name)REFERENCES
table_name(column_name)[ON DELETE CASCADE];

3.刪除外鍵約束
禁用|啓用約束:ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT constraint_name;
查看約束名類型和狀態:selectconstraint_name,constraint_type,status from user_constraints wheretable_name='USERINFO_F4';
刪除約束:ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

唯一約束

1.基本概念
作用:保證字段值的唯一性
唯一約束和主鍵約束的區別:主鍵字段值必須是非空的,唯一約束允許有一個空值,主鍵在每張表中只能有一個,唯一約束在每張表中可以有多個。

2.在創建表時設置唯一約束
列級:CREATE TABLE table_name
(column_name datatype UNIQUE,…);
表級:CREATE TABLE table_name
(column_name datatype,…
CONSTRAINT constraint_name
UNIQUE(column_name) );

3.在修改表時添加唯一約束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
UNIQUE(column_name);

4.刪除唯一約束
禁用|啓用約束:ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT constraint_name;
刪除唯一約束ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

檢查約束

1.基本概念
作用:表中的值更具有實際意義

2.在創建表時設置檢查約束
列級:CREATE TABLE table_name
(column_name datatype CHECK(expressions),…);
表級:CREATE TABLE table_name
(column_name datatype,…
CONSTRAINT constraint_name
CHECK(expressions));

3.在修改表時添加檢查約束
ALTER TABLET table_name
ADD CONSTRAINT constraint_name
CHECK(expressions);

4.刪除檢查約束
禁用|啓用約束:ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT constraint_name;
刪除約束:ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

總結(非空約束,主鍵約束,外鍵約束,唯一約束,檢查約束):

1.主鍵約束,每張表中只能有一個,可以由多個字段構成

2.外鍵約束,唯一一個涉及兩張表之間關係的一個約束

3.在創建表時設置約束,只有非空約束只能在列級設置,不能在表級設置,其他約束既可以在列級設置也可以在表級設置,而且非空約束是沒有名字的

4.在修改表時添加約束,唯一一個和其他約束不同的約束即非空約束,通過修改字段實現

5.更改約束的名稱,由於非空約束沒有名稱,所以不涉及更改名稱,其他都可以,數據字典(user_constraints) RENAME CONSTRIANT old_name TO new_name

6.刪除約束,非空約束特殊(修改字段,經NOT NULL改成NULL即可,MODIFY關鍵字),其他都可以通過兩種方式分別禁用和刪除約束

注意:除非空約束沒有約束名以外,其他約束都有約束名,並儘量自定義約束名便於記憶與辨識。不論是否在同一張表,約束都不允許重名,這一點跟MySQL,SQL Server不同。

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