外键约束
创建两个表:
表news:
-- 创建新闻表
CREATE TABLE IF NOT EXISTS news(
id INT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',
title VARCHAR(100) NOT NULL UNIQUE COMMENT '新闻标题',
content VARCHAR(100) NOT NULL COMMENT '新闻内容',
cateId TINYINT NOT NULL COMMENT '新闻所属分类编号'
)ENGINE=INNODB;
表news_cate:
-- 创建新闻分类表
CREATE TABLE IF NOT EXISTS news_cate(
id TINYINT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',
cateName VARCHAR(50) NOT NULL UNIQUE COMMENT '分类名称',
cateDesc VARCHAR(100) NOT NULL DEFAULT '' COMMENT '分类描述'
)ENGINE=INNODB;
-
只有InnoDB存储引擎支持外键。
-
创建外键
1.建表时指定外键:[CONSTRAINT 外键名称] FOREIGN KEY(字段名称) REFERENCES 主表(字段名称)在表news和表news_cate中,表news_cate为主表,在news中指定外键,重新创建表news:
-- 创建新闻表
CREATE TABLE IF NOT EXISTS news(
id INT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',
title VARCHAR(100) NOT NULL UNIQUE COMMENT '新闻标题',
content VARCHAR(100) NOT NULL COMMENT '新闻内容',
cateId TINYINT UNSIGNED NOT NULL COMMENT '新闻所属分类编号',
FOREIGN KEY(cateId) REFERENCES news_cate(id)
)ENGINE=INNODB;
子表的外键字段和主表的主键字段类型要相似;如果是数值型要求一致,并且无符号也要一致;如果是字符型要求类型一致,长度可以不同。