MySQL的连接查询用于将多张表的数据整合,弥补了单表查询的缺陷。具体可分为内连接和外连接。
准备工作,分别创建两个表
班级表:
CREATE TABLE `class` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`classNo` varchar(20) DEFAULT NULL COMMENT '班号',
`className` varchar(20) DEFAULT NULL COMMENT '班级名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
学生表:
CREATE TABLE `student` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`number` varchar(20) DEFAULT NULL COMMENT '学号',
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`address` varchar(255) DEFAULT NULL COMMENT '地址',
`class` varchar(20) DEFAULT NULL COMMENT '班级',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
然后分别往里插入数据,如下:
现在以学生表作为左表,班级表为右表分别进行连接操作:
1.左连接:从左表取出所有数据数据,分别与右表进行匹配,左表中所有数据会显示出来,右表中匹配不到的数据会显示为’(Null)’。
SELECT
s.*,
c.*
FROM
student s
LEFT JOIN class c ON s.class = c.classNo
2.右连接:从右表取出所有数据数据,分别与左表进行匹配,右表中所有数据会显示出来,左表中匹配不到的数据会显示为’(Null)’
SELECT
s.*,
c.*
FROM
student s
RIGHT JOIN class c ON s.class = c.classNo
3.内连接:从左表取出所有数据数据,分别与右表进行匹配,两个表匹配成功才会显示结果。
SELECT
s.*,
c.*
FROM
student s
INNER JOIN class c ON s.class = c.classNo