外键
创建方式一:创建表时加入外键
-- 创建grade表
CREATE TABLE `grade`(
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
`grandename` VARCHAR(50) NOT NULL COMMENT '年级名称',
PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 创建student表
CREATE TABLE `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`gradeid` INT(10) NOT NULL COMMENT '学生年级', -- student表的gradeid,引用grade表的gradeid
PRIMARY KEY (`id`),
KEY `FK_gradeid` (`gradeid`),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES grade (`gradeid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
注意:在删除有外键的表时应先删除引用表(从表),然后删除被引用的表(主表)。(上面应先删除student表,之后在删除grade表)若先删除主表会报错:Cannot delete or update a parent row: a foreign key constraint fails
创建方式二:创建表后,再添加外键约束
-- 创建grade表
CREATE TABLE `grade` (
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级',
`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 创建student表
CREATE TABLE `student` (
`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '学生id',
`name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '学生姓名',
`gradeid` INT(10) NOT NULL COMMENT '学生年级',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
-- 建立外键:ALTER TABLE 从表 ADD CONSTRAINT 约束名 FOREIGN KEY(外键的列名) REFERENCES 主表 (哪个字段);
ALTER TABLE student
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES grade (`gradeid`);