目录
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参考链接