您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“MySQL六種約束是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MySQL六種約束是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
作用于表上的規則,限制存儲在表中的數據
約束分類:
約束 | 描述 | 關鍵字 |
---|---|---|
非空約束 | 該字段數據不能為null | NOT NULL |
唯一約束 | 該字段數據唯一不重復 | UNIQUE |
主鍵約束 | 一行數據的唯一標識(非空且唯一) | PRIMARY KEY |
默認約束 | 未指定該字段值則使用默認值 | DEFAULT |
檢查約束(8.0.16以后) | 該字段值滿足某一條件 | CHECK |
外鍵約束 | 為兩張表建立連接(數據一致、完整) | FOREIGN KEY |
創建表示例:
CREATE TABLE info( `id` INT UNIQUE auto_increment PRIMARY KEY COMMENT'ID唯一標識', `name` VARCHAR(10) NOT NULL UNIQUE COMMENT'姓名', `age` INT CHECK(age > 0 && age < 120) COMMENT '年齡', `status` CHAR(1) DEFAULT'1' COMMENT'狀態', `gender` CHAR(1) COMMENT'性別' )COMMENT '用戶信息表';
外鍵通常用來為兩張表建立連接,兩張利用外鍵連接的表被稱為父子表。
子表當中會設定一個外鍵字段用于關聯父表的主鍵字段
即擁有外鍵的表是子表(從表),該外鍵對應另一個表的主鍵這個表稱之為父表
如果沒有設置外鍵,僅僅是將子表開了一個字段對應上了父表的主鍵字段在mysql層面是依舊沒有任何關系的。此時兩個表僅存在邏輯關系,無法保證數據的完整性和一致性
創建外鍵語法:
-- 在創建表時創建 CREATE TABLE son( ... CONSTRAINT [外鍵名稱] FOREIGN KEY(外鍵字段名) REFERENCES 主表名(主表主鍵字段名) ); -- 創建表后為表添加主鍵 ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY(外鍵字段名) REFERENCES 主表(主表主鍵字段名) -- 刪除外鍵 alter table 表名 drop foreign key 外鍵名稱;
創建示例:
# 父表 CREATE TABLE father( `id` INT auto_increment PRIMARY KEY COMMENT'父表ID', `name` VARCHAR(20) NOT NULL COMMENT'姓名', `password` VARCHAR(20) DEFAULT(0000) ); INSERT INTO father VALUES(null,'小三','1234'),(null,'小四','1234'),(null,'小五','1234'),(null,'小六','1234'); # 子表 CREATE TABLE son( `id` INT auto_increment PRIMARY KEY COMMENT'子表ID', `status` varchar(10) COMMENT '狀態', `fa_id` INT COMMENT'外鍵', CONSTRAINT fk_father_son FOREIGN KEY(fa_id) REFERENCES father(id) ); INSERT INTO son VALUES(null,'活',2),(null,'活',3),(null,'死',3),(null,'活',2);
上述示例 子表設置了外鍵,字段名為fa_id并關聯到了父表主鍵id,外鍵名稱為fk_father_son
創建完成后,我們添加幾組數據。將幾個son添加到表中,并設置外鍵字段屬性為某個father。比如(null,‘活’,3),那么此時如果我們嘗試去刪除父表id=3的這一行數據,就會提示錯誤。因為兩個表已經在mysql層面上進行了關聯
總結:
從表的外鍵通常是主表的主鍵
從表中外鍵的類型必須與主表中的主鍵類型一致
主表數據發生變化時應注意從表數據的一致性問題
讀到這里,這篇“MySQL六種約束是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。