区别
- 内连接(inner join):取出两张表中匹配到的数据,匹配不到的不保留
- 外连接(outer join):取出两张表中匹配到的数据,匹配不到的也会保留,其值为null
(1)左外连接(left outer join):以左边的表为主表,左表数据全部保留
(2)右外连接(right outer join):以右边的表为主表,右表数据全部保留
注:以某一个表为主表,进行关联查询,不管能不能关联的上,主表的数据都会保留,关联不上的以null显示
举例说明
1、inner可以省略,as是给表起别名,也可以省略
// 写法一
SELECT m.*, s.* FROM manualcase as m INNER JOIN step as s on s.manualcase_id = m.id
// 写法二
SELECT m.*, s.* FROM manualcase as m JOIN step as s on s.manualcase_id = m.id
// 写法三
SELECT m.*, s.* FROM manualcase m JOIN step s on s.manualcase_id = m.id
上述三种内连接写法等同于
SELECT * FROM manualcase m, step s WHERE s.manualcase_id = m.id
2、左外连接和右外连接
(1)左外连接(外连接与where同时使用)
SELECT m.*, s.* FROM manualcase as m LEFT JOIN step as s on s.manualcase_id = 1021 WHERE m.module_id=100
(2)右外连接
SELECT m.*, s.* FROM step as s RIGHT JOIN manualcase as m on s.manualcase_id = 1021 WHERE m.module_id=100