数据库——sql多表查询

        当要在两个表(或多个表)中查找对应数据时,与普通的查询略有不同。本篇博文用于介绍基本的多表查询的方法。

为方便展示,本篇建了两个数据库表“学生表”“班级表”作为例子

其中,在“学生表”中,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

结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值