mysql中的外键操作 建表添加外键 删除外键约束 追加外键约束 0523

关键字

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
  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

pyhui2020

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值