文章詳情頁
MySQL六種約束的示例詳解
瀏覽:95日期:2023-02-18 16:43:45
目錄
- 什么是約束
- 外鍵約束
什么是約束
作用于表上的規則,限制存儲在表中的數據
約束分類:
創建表示例:
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六種約束的示例詳解的文章就介紹到這了,更多相關MySQL六種約束內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
標簽:
MySQL
相關文章:
排行榜