/* 一、數據約束約束是一種限制,它通過對表的行或列的數據做出限制,來確保表的數據的完整性、唯一性。MySQL中,常用的幾種約束:約束類型: 主鍵 默認值 唯一 外鍵 非空關鍵字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT NULL*/ /*1.1、默認值約束(default)——在用用戶不對默認值的字段進行數據插入時,就默認地使用默認字段 特別注意:默認字段是可以為空的,也就是說當用戶插入空(NULL)或''時是被允許的。 */ CREATE TABLE student( sid int, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男') /*1.2、非空(NOT NULL) 被非空約束的列,在插入值時必須非空。 在MySQL中違反非空約束,不會報錯,只會有警告. */CREATE TABLE student( sid int NOT NULL, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男')/*1.3、唯一約束(UNIQUE)比較簡單,它規定一張表中指定的一列的值必須不能有重復值,即這一列每個值都是唯一的。 當INSERT語句新插入的數據和已有數據重復的時候,如果有UNIQUE約束,則INSERT失敗. 注意:唯一的字段是可以為空的(NULL),且NULL不受唯一約束。也就是說可以存在多條字段為NUll的數據。*/CREATE TABLE student( sid int UNIQUE, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男')/* 1.4、主鍵(PRIMARY KEY)是用于約束表中的一行,作為這一行的標識符,在一張表中通過主鍵就能準確定位到一行, 因此主鍵十分重要。主鍵要求這一行的數據不能有重復且不能為空。 還有一種特殊的主鍵——復合主鍵。主鍵不僅可以是表中的一列,也可以由表中的兩列或多列來共同標識 通常情況下,每一張表都會設置一個主鍵的字段,用于標記每一條記錄的唯一性。*/CREATE TABLE student( sid int PRIMARY KEY, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男')/*1.5、自增長(AUTO_INCREMENT) 當只增長字段有位數要求時,可以使用 ZEROFILL進行填充*/CREATE TABLE student( sid int PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(10), gender VARCHAR(2) DEFAULT '男')/*1.6、外鍵約束外鍵(FOREIGN KEY)既能確保數據完整性,也能表現表之間的關系。一個表可以有多個外鍵,每個外鍵必須REFERENCES(參考)另一個表的主鍵,被外鍵約束的列,取值必須在它參考的列中有對應值。在INSERT時,如果被外鍵約束的值沒有在參考列中有對應,比如以下命令,參考列(department表的dpt_name)中沒有dpt3,則INSERT失敗*/ CONSTRAINT `FK_kfaoihyj5oll835mvidvgsxp` FOREIGN KEY (`DEPARTMENT_ID`) REFERENCES `ssh_department` (`ID`) 關鍵字 外鍵名稱 外鍵字段 關聯表(字段)其中ssh_employee為副表,ssh_department為主表注意: (1)、當外鍵存在時,添加數據的順序:先主表后副表; (2)、當外鍵存在時,修改數據的順序:先副表后主表;/*1.7、級聯操作 當我們設置了外鍵約束后,必須先修改或者刪除副表中的所有關聯數據,才能修改或者刪除主表。 但很多時候,我們希望直接修改或刪除主表的數據,從而影響副表數據。因此就需要級聯設置來完成。 */CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE -- ON CASCADE UPDATE :級聯修改-- ON DELETE CASCADE :級聯刪除-- 注意: 級聯操作必須在外鍵基礎上使用
新聞熱點
疑難解答