MySQL中三表联查实战(mysql三表查询)
MySQL中三表联查是在MySQL中一种技术,它的作用就是从另外两张表中获取数据,并与本表的信息进行联合,查询出满足条件的结果。它在分析大型数据库时非常有用。下面我们就通过一个实战案例来体验这种技术。
首先,我们假设有一个学生表student,其中包含学生的id,name和class_id。
~~~
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键id’,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ‘姓名’,
`class_id` int(11) NOT NULL COMMENT ‘班级id’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
~~~
接下来,我们有两个表,一个是班级表class,一个是学校表school,分别保存班级和学校的信息。
~~~
CREATE TABLE `class` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键id’,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ‘班级名字’,
`school_id` int(11) NOT NULL COMMENT ‘学校id’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `school` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键id’,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ‘校名’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
~~~
接下来,就可以通过MySQL中的三表联查查询学生所在学校的名称,代码如下:
~~~
SELECT student.name, school.name
FROM student, class, school
WHERE student.class_id = class.id
AND class.school_id = school.id;
~~~
查询结果如下,是一个表格:
| name | school.name |
| —– | ———– |
| 小明 | 清华 |
| 小红 | 北大 |
| 小张 | 北航 |
总之,利用MySQL结合三表联查,可以方便快捷地把多张表联接起来,查找出所需的信息,在大型数据的分析中,非常有用。