| 作者肖泽凡,腾讯TEG研发管理部小小后台攻城狮一枚,负责腾讯敏捷产品研发平台TAPD的基础功能的开发和维护,热爱技术,喜欢分享,文章首次发表于SegmentFault,博客名“X先生”,欢迎与我交流~在数据库中join操作被称为连接,作用是能连接多个表的数据(通过连接条件),从多个表中获取数据合并在一起作为结果集返回给客户端。例如:
表A:
idnameage1A18
2B19
3C20
表B:
iduidgender11F
22M
通过连接可以获取到合并两个表的数据:
select A.*,B.gender from A left join B on A.id=B.uid
idnameagegender1A18F
2B19M
3C20null
连接关键字
连接两个表我们可以用两个关键字:on,using。on可以指定具体条件,using则指定相同名字和数据类型的列作为等值判断的条件,多个则通过逗号隔开。
如下:
on: select * from A join B on A.id=B.id and B.name=''
using: select * from A join B using(id,name) = select * from A join B on A.id=B.id and A.name=B.name
连接类型
一、内连接
内连接和交叉连接
1. 语法:A join | inner join | cross join B
2. 表现:A和B满足连接条件记录的交集,如果没有连接条件,则是A和B的笛卡尔积
3. 特点:在MySQL中,cross join,inner join和join所实现的功能是一样的。因此在MySQL的官方文档中,指明了三者是等价的关系。
隐式连接
1. 语法:from A,B,C
2. 表现:相当于无法使用on和using的join
3. 特点:逗号是隐式连接运算符。隐式连接是SQL92