目錄
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參考鏈接