多表插入 mysql_MySQL之多表操作

  • Post author:
  • Post category:mysql


前言:之前已经针对数据库的单表查询进行了详细的介绍:MySQL之增删改查,然而实际开发中业务逻辑较为复杂,需要对多张表进行操作,现在对多表操作进行介绍。

前提:为方便后面的操作,我们首先创建一个数据库 test,再在 test 里创建两个数据表:grade(班级表)和student(学生表)

创建数据库:CREATE DATABASE test;

选择要操作的数据表:USE test;

创建数据表:CREATE TABLE grade

(

id INT(4) NOT NULL PRIMARY KEY,

name varchar(36)

);

CREATE TABLE student

(

sid INT(4) NOT NULL PRIMARY KEY,

sname VARCHAR(36),

gid INT(4) NOT NULL

);

1、外键

定义:外键是指引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束,外键用于建立和加强两个表数据之间的连接。在已经建立的grade表和student表中,student表中的gid就是grade表中的id,那么gid就可以作为student表的外键。其中,被引用的表grade就是主表,引用外键的表,即student表就是从表,两个表示主从关系。

1.1 为表添加外键约束

语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段名) REFERENCES 外表表名(主键字段名);

举例:为student表添加外键约束

命令:ALTER TABLE student ADD CONSTRAINT FK_ID FOREIGN KEY (gid) REFERENCES grade(id);

注意:定义外键名时不能加引号。

使用SHOW CREATE ABLE student命令查看student表:

结果:

385a5410c1e0a822f8131fde1400bbad.png

说明名为“FK_ID”的外键已经成功添加。

注意:如果未出现此结果,需要先将 grade 表和 student 的 engine 改为 InnoDB ,命令为:ALTER TABLE grade ENGINE=InnoDB;ALTER TABLE student ENGINE=InnoDB;

1.2  删除外键约束

语法:ALTER TABLE 表名 DROP FOREIGN KEY 外键名;

举例:删除student表中的外键约束

命令:ALTER TABLE student DROP FOREIGN KEY FK_ID;

执行删除外键命令之后再使用 SHOW CREATE TABLE student;查看:

ee47dd247346e25da1c1d2e218c31b34.png

出现此结果说明外键已被成功删除。

2、操作关联表

2.1 关联关系

(1)多对一

数据表中最常见的一种关系,比如学生与班级的关系,一个班级可以有多个学生,但是一个学生不能属于多个班级。在多对一的关系中,应该将外键建在多的一方。

(2)多对多

比如学生与课程的关系,一个学生可以选择多门课程,一门课程也供多个学生选择

(2)一对一

比如一个人只有一张身份证,而一张身份证也只对应一个人。

2.2  添加数据

在表grade和表student中添加约束来建立两个表的关联关系:

ALTER TABLE student ADD CONSTRAINT FK_ID FOREIGN KEY(gid) REFERENCES grade (id);

先为主表



版权声明:本文为weixin_35902873原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。