思維導圖:
?
筆記:5.4 完整性約束命名子句
定義:
- 完整性約束是在
CREATE TABLE
語句中定義的。 - SQL為
CREATE TABLE
語句提供了CONSTRAINT
子句,用于對完整性約束進行命名。 - 命名的目的是方便增加或刪除約束。
基本結(jié)構(gòu):
CONSTRAINT <完整性約束名稱> <完整性約束條件>
其中,完整性約束條件可以是NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK等。
示例:
- 學生登記表 Student: 要求:
- 學號在 90000~99999 之間
- 姓名不為空
- 年齡小于 30
- 性別只能是 “男” 或 “女”
CREATE TABLE Student(
Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
Sname CHAR(20) CONSTRAINT C2 NOT NULL,
Sage NUMERIC(3) CONSTRAINT C3 CHECK(Sage<30),
Ssex CHAR(2) CONSTRAINT C4 CHECK(Ssex IN('男', '女')),
CONSTRAINT StudentKey PRIMARY KEY(Sno)
);
- 教師表 TEACHER: 要求:
- 每位教師的應發(fā)工資 (工資 Sal + 扣除項 Deduct) 不低于 3000 元。
CREATE TABLE TEACHER(
Eno NUMERIC(4) PRIMARY KEY,
Ename CHAR(10),
Job CHAR(8),
Sal NUMERIC(7,2),
Deduct NUMERIC(7,2),
Deptno NUMERIC(2),
CONSTRAINT TEACHERFKey FOREIGN KEY (Deptno) REFERENCES DEPT(Deptno),
CONSTRAINT C1 CHECK(Sal + Deduct >= 3000)
);
修改表中的完整性約束:
可以使用ALTER TABLE
語句修改表中的完整性約束。
示例:
- 移除學生表 Student 對性別的約束:
ALTER TABLE Student DROP CONSTRAINT C4;
- 修改學生表 Student 的約束條件: 要求將學號的范圍從 90000~99999 改為 900000~999999,并將年齡從小于30改為小于40。
ALTER TABLE Student DROP CONSTRAINT C1;
ALTER TABLE Student ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999);
ALTER TABLE Student DROP CONSTRAINT C3;
ALTER TABLE Student ADD CONSTRAINT C3 CHECK (Sage < 40);
完整性約束命名子句 - 重點、難點與易錯點總結(jié)
重點:
-
定義與用途:
- 完整性約束命名子句用于為
CREATE TABLE
語句中的完整性約束賦予名稱,以便于后續(xù)操作(如增加、刪除)。
- 完整性約束命名子句用于為
-
基本結(jié)構(gòu):
CONSTRAINT <完整性約束名稱> <完整性約束條件>
-
完整性約束條件類型:
-
NOT NULL
: 字段值不可為空 -
UNIQUE
: 字段值必須唯一 -
PRIMARY KEY
: 定義表的主鍵 -
FOREIGN KEY
: 外鍵約束,確保字段的值在另一個表中存在 -
CHECK
: 對字段值施加特定條件
-
難點:
-
外鍵約束的理解與應用:
- 外鍵是連接兩張表的一種手段,它確保一張表中的字段值在另一張表的特定列中存在。正確實現(xiàn)外鍵約束需要對兩張表都有深入了解。
-
復雜的CHECK約束:
- 創(chuàng)建復雜的條件(如,工資與扣除之和的限制)需要對邏輯表達式有很好的理解。
易錯點:
-
命名重復:
- 為完整性約束命名時,要確保名稱在整個數(shù)據(jù)庫中是唯一的。重復的命名會導致錯誤。
-
錯誤的數(shù)據(jù)類型匹配:
- 在應用完整性約束時,要確保約束條件與字段的數(shù)據(jù)類型相匹配。例如,不應該在字符型字段上設置數(shù)值范圍。
-
遺漏或誤用單引號:
- 在CHECK約束中,特定的值(如
'男'
或'女'
)需要使用單引號。遺漏或誤用會導致語法錯誤。
- 在CHECK約束中,特定的值(如
-
不恰當?shù)貏h除約束:
- 在修改表結(jié)構(gòu)時,可能需要刪除并重新添加某些約束。如果不小心刪除了錯誤的約束,可能會導致數(shù)據(jù)完整性問題。
-
外鍵參照的表和字段存在性:文章來源:http://www.zghlxwxcb.cn/news/detail-737277.html
- 在設置外鍵約束時,必須確保引用的表和字段真實存在,否則會導致錯誤。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-737277.html
到了這里,關(guān)于5.4 完整性約束命名子句的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!