我们所看到的查询结果可以理解为是存在一张临时表中的。
一、on和where 的区别
(1)on是在临时表生成时使用的条件,不管on中的条件是否为真,都会返回左(左连接中)/右(右连接)边表中的全部记录。
(2)where是在临时表生成后使用的条件,是对临时表进行过滤的条件,不满足条件的就会被过滤掉。
二、表连接的语法简写
全称 |
简称 |
inner join on (内连接) |
join on (连接) |
left outer join on (左外连接) |
left join on (左连接) |
right outer join on (右外连接) |
right join on (右连接) |
full outer join on (全外连接)
扫描二维码关注公众号,回复:
10920200 查看本文章
|
full join on (全连接) |
三、表连接的总结
(1)inner join(内连接):在两张表进行连接查询时,只保留两张表中完全匹配的结果集。
PS:单纯的select * from a,b是笛卡尔乘积。比如a表有3条数据,b表有3条数据,那么最后的结果有3*3=9条数据。如果对两个表进行连接查询:select * from a,b where a.id = b.id,(不推荐)相当于:select * from a inner join b on a.id = b.id。即内连接。
(2)left join(左连接):在两张表进行连接查询时,会返回左表所有的行,(即使在右表中没有匹配的记录),右表不匹配的行会以null的形式显示。
(3)right join(右连接):在两张表进行连接查询时,会返回右表所有的行(即使在左表中没有匹配的记录)左表不匹配的行会以null的形式显示。
(4)full join(全连接):在两张表进行连接查询时,不管是否匹配,都会返回左表和右表中所有的数据。相当于是left join和right join的并集。
四、图例表示表连接中的结果集
(1)内连接
(2)左连接:右表中不匹配的数据将以NUll形式显示
(3)右连接:左表中不匹配的数据将以NUll形式显示
(4)全连接