(3-1)MySQL 外鍵約束

目錄

1 約束簡介

2 FOREIGN KEY

2.1 FOREIGN KEY 功能

2.2 創建外鍵約束的要求

3 實例

3.1創建兩個數據表(父表和子表)

3.2查看索引

4參考鏈接


1 約束簡介

(1)約束保證數據的完整性和一致性。

(2)約束分爲表級約束和列級約束。

(3)約束按功能劃分包括:

    ①NOT NULL(非空約束)

    ②PRIMARY KEY(主鍵約束)

    ③UNIQUE KEY(唯一約束)

    ④DEFAULT(默認約束)

    ⑤FOREIGN KEY(外鍵約束)

2 FOREIGN KEY

2.1 FOREIGN KEY 功能

    保持數據一致性,完整性,實現數據表的一對一或者一對多關係(這就是很多數據庫被稱爲關係型數據庫的原因)。

2.2 創建外鍵約束的要求

(1)父表(子表所參照的表)和子表(具有外鍵列的表)必須具有相同的存儲引擎,而且禁止使用臨時表。

(2)數據表的存儲引擎只能是InnoDB(配置默認是InnoDB,不需要改)。

         查看配置文件:MySQL安裝目錄下的my.ini文件:default-storage-engine=INNODB;

(3)外鍵列和參照列必須具有相同的數據類型。其中數字的長度或者是否有符號位必須相同;而字符的長度則可以不同。

(4)外鍵列和參照列必須創建索引。如果外鍵列不存在索引的話,MySQL將自動創建索引。

3 實例

3.1創建兩個數據表(父表和子表)

    ①首先進入一個數據庫:

 

 USE test;

    ②創建父表

 

CREATE TABLE provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL,
);

   ③創建子表

 CREATE TABLE users(
 id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
 pid SMALLINT UNSIGNED,
 FOREIGN KEY (pid) REFERENCES provinces(id)//關鍵句:關聯到provinces的id字段
 );

3.2查看索引

查看父表是否有索引:SHOW INDEXES FROM provinces\G

查看子表是否存在索引: SHOW INDEXES FROM users\G

4參考鏈接

整理自:慕課網MySQL 外鍵約束的要求解析

 

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