外键
准备一个表,gradeid作为外键
CREATE TABLE `grade`(
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
PRIMARY KEY (`gradeid`)
) ENGINE = INNODB DEFAULT CHARSET = utf8
创建生成的表
方法一:在创建表的时候,增加约束
第一步,学生表的gradeid字段,要引用年级表的gradeid
第二步,定义外键key
第三步,给这个外键添加约束(执行引用) references 引用
CREATE TABLE IF NOT EXISTS `student`
(
`id`INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`pwd` VARCHAR(30) NOT NULL DEFAULT '***' COMMENT'密码',
`name` VARCHAR(30) NOT NULL DEFAULT '张三' COMMENT '姓名',
`sex` VARCHAR(50) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` VARCHAR (20) NOT NULL COMMENT '生日',
`address` VARCHAR(30) NOT NULL COMMENT'住址',
`emill` VARCHAR (30) NOT NULL COMMENT'邮箱',
`gradeid` INT(4) NOT NULL COMMENT '学生的年级',
PRIMARY KEY(`id`),
KEY `FK_gradeid`(`gradeid`) , -- 定义外键
CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`) -- 添加约束和引用
)ENGINE=INNODB DEFAULT CHARSET=utf8
方法二,创建表成功后添加
-- 创建表的时候没有外键关系
ALTER TABLE student
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
- ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 另一个外键的表 (另一个外键表的字段);
狂神说:最佳实践 - 数据库就是单纯的表,只能用来存数据,只有行(数据)和列(字段)
- 我们想要使用多张表的数据,想要使用外键(程序去实现)