MySQL 外键约束的要求解析
1、约束
a、约束保证数据的完整性和一致性
b、约束分为表级约束和列级约束
c、约束类型包括:
NOT NULL 非空约束
PRIMARY KEY 主键约束
UNIQUE KEY 唯一约束
DEFAULT 默认约束
FOREIGN KEY 外键约束
2、外键约束 FOREIGN KEY
保持数据一致性,完整性
实现一对一或一对多关系
要求:
a、父表和子表必须使用相同的存储引擎,而且禁止使用临时表
b、数据表的存储引擎只能为InnoDB
c、外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同;而字符的长度可以不同
d、外键列和参照列必须创建索引,如果外键列不存在索引,MySQL将自动创建索引
eg:
修改完毕以后 重新启动MySQL
default-storage-engine=INNODB
建表 provinces
id 主键 自动编号
pname 非空
为参照列
建表 users
id 主键 自动编号
username 非空
pid 与 provinces里的id 类型一样 无符号
FOREIGN KEY 外键约束 pid 参照provinces 里的id
为外键列
SHOW INDEXES FROM provinces\G 显示provinces表的索引 自动创建了索引
pid字段 自动创建了索引