一.内外连接
- 内连接:inner join。只显示各表之间与关联条件(on)相匹配的列。
- 外连接:
- left join。以左表为基础。显示左表所有 记录,不管是否与关联条件(on)相匹配;而右表只显示与关联条件相匹配的记录,不匹配的以null字符代替。如果右表多条数据关联到左表的一条数据,left join会查出多条。
- right join。以右表为基础。显示右表所有记录,不管是否与关联条件(on)相匹配;而左表只显示与关联条件相匹配的记录,不匹配的以null字符代替。
- full join。全连接。显示列表中的所有列,不匹配的以null字符代替。Mysql不支持full join,用left join union right代替。
a表 b表
a left join b
a right join b
a full join b
二. where 与 on
- on:关联条件。
- where:查询条件。
a left join b where
a right join b where
三. where 与 inner join
a inner join b
a b where
- WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。
- INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接。
- WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。