联表查询
术语
左表 From指定的表
右表 JOIN 指定的表
临时表:数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
关键字on : on后面跟限定条件,为真则返回
联表查询理论
JOIN
- INNER JOIN:如果表中有至少一个匹配,则返回行 --可以没有限定条件 INNER JOIN 与 JOIN 是相同的。
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 --必须要有on 限定条件
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 --必须要有on 限定条件
- FULL JOIN:只要其中一个表中存在匹配,则返回行 --可以没有on限定条件
在使用 LEFT JOIN 时,on 和 where 条件的区别如下:
- 1、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回FROM 表中的记录。
- 2、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
left join、right join、full join 的特殊性,不管 on 上的条件是否为真都会返回 left 或 right 表中的记录,full 则具有 left 和 right 的特性的并集