(一)内连接与外连接区别

 创建两张表

CREATE TABLE `a_table` (
  `a_id` int(11) DEFAULT NULL,
  `a_name` varchar(10) DEFAULT NULL,
  `a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `b_table` (
  `b_id` int(11) DEFAULT NULL,
  `b_name` varchar(10) DEFAULT NULL,
  `b_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

表测试数据

(一)内连接与外连接区别

一、内连接(自然连接)

只有两个表相匹配的行才能出现在结果集中,舍弃不匹配的数据,所以可能造成表中数据的丢失。

关键字:inner join on

语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;

执行结果:

(一)内连接与外连接区别

二、外连接 

外连接不仅包含符合连接条件的行,而且还包含左表(左外连接)、右表(右外连接)或两个边接表(全外连接)中的所有数据行。

①左外连接left outer join 、left join

关键字:left join on / left outer join on

语句:select * from a_table a left join b_table b on a.a_id = b.b_id;

执行结果:

(一)内连接与外连接区别

left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。

②右外连接right join、right outer join

关键字:right join on / right outer join on

语句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;

执行结果:

(一)内连接与外连接区别

③全外连接

目前mysql不支持

参考:https://blog.****.net/plg17/article/details/78758593