当要在两个表(或多个表)中查找对应数据时,与普通的查询略有不同。本篇博文用于介绍基本的多表查询的方法。
为方便展示,本篇建了两个数据库表“学生表”和“班级表”作为例子
其中,在“学生表”中,cid标签表示的是学生所在班级的id
1.多表查询
通过以下语句查找两个表的全部内容(相当于将两个表拼合),我们会发现出现了随机匹配的情况
SELECT * FROM `学生表`,`班级表`
为解决这种问题,让学生和对应班级的信息匹配,我们可以通过添加条件实现,即查找出在学生表中cid与班级表中id相等的项
SELECT * FROM `学生表`,`班级表` WHERE `学生表`.cid=`班级表`.id
这样可以有效避免以上问题。
2.联表查询
方法:JOIN IN
2.1内联接
假设,有A,B两个表,join in 求的内联表即为下图示意中的黄色部分
对于本篇文章中的例子,具体SQL语句为:
SELECT * FROM `学生表`join `班级表` on `学生表`.cid=`班级表`.id
所得结果为下图:
2.2外联接
外联接又分为:左外联接和右外联接
左外联接示意图如下图红色所示:
右外联接示意图如下图红色所示:
在本文中的例子里,为了方便展示外联接,更新学生表和班级表如下:
左外联接的SQL语句 为:
SELECT * FROM `学生表` left join `班级表` on `学生表`.cid=`班级表`.id
结果如下,可见丽丽并没有对应班级,但在左外联表中仍会体现:
右外联接的SQL语句 为:
SELECT * FROM `学生表` right join `班级表` on `学生表`.cid=`班级表`.id
结果如下: