(一)内连接与外连接区别
创建两张表
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