关键字
foreign key
外键演练
新建老师生表,演练外键的相关操作
主表创建
CREATE DATABASE dbSchool0523 CHARACTER SET utf8
USE dbSchool0523
CREATE TABLE teacher(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(5) NOT NULL
)
INSERT INTO teacher VALUES(NULL,'自来也');
SELECT * FROM teacher;
创建子表同时定义外键
单词
建子表代码
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '编号',
NAME VARCHAR(10) NOT NULL COMMENT '学生姓名',
tid INT COMMENT '老师id',
CONSTRAINT fk_student_teacher FOREIGN KEY(tid) REFERENCES teacher(id)
);
DESC student;
核心代码
CONSTRAINT fk_student_teacher FOREIGN KEY(tid) REFERENCES teacher(id)
删除外键约束
删前查看建表语句
SHOW CREATE TABLE student;
CREATE TABLE `student` (
`id` int(11) NOT NULL auto_increment COMMENT '编号',
`name` varchar(10) NOT NULL COMMENT '学生姓名',
`tid` int(11) default NULL COMMENT '老师id',
PRIMARY KEY (`id`),
KEY `fk_student_teacher` (`tid`),
CONSTRAINT `fk_student_teacher` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
删除外键
ALTER TABLE student DROP FOREIGN KEY fk_student_teacher;
删除后查看建表语句
SHOW CREATE TABLE student;
CREATE TABLE `student` (
`id` int(11) NOT NULL auto_increment COMMENT '编号',
`name` varchar(10) NOT NULL COMMENT '学生姓名',
`tid` int(11) default NULL COMMENT '老师id',
PRIMARY KEY (`id`),
KEY `fk_student_teacher` (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
给无外键的表追加外键
代码
ALTER TABLE student ADD CONSTRAINT fk2_student_teacher FOREIGN KEY (tid) REFERENCES teacher(id);
结构图
查看建表语句
SHOW CREATE TABLE student;
CREATE TABLE `student` (
`id` int(11) NOT NULL auto_increment COMMENT '编号',
`name` varchar(10) NOT NULL COMMENT '学生姓名',
`tid` int(11) default NULL COMMENT '老师id',
PRIMARY KEY (`id`),
KEY `fk2_student_teacher` (`tid`),
CONSTRAINT `fk2_student_teacher` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8