连接查询:inner join,left join,right join
感谢原创:https://blog.csdn.net/plg17/article/details/78758593
准备工作:
1)新建两张表a_table和b_table:
create table a_table(
a_id int(10) primary key auto_increment,
a_name varchar(10) default NULL,
a_part varchar(10) default NULL)
engine=innodb character set=utf8;
create table b_table(
b_id int(10) primary key auto_increment,
b_name varchar(10) default NULL,
b_part varchar(10) default NULL)
engine=innodb character set=utf8;
2)插入数据:
insert into a_table values
(1,'老潘','总裁部'),
(2,'老王','秘书部'),
(3,'老张','设计部'),
(4,'老李','运营部');
insert into b_table values
(2,'老王','秘书部'),
(3,'老张','设计部'),
(4,'老刘','人事部'),
(5,'老黄','生产部');
1、内连接(Inner join)
又称为简单连接,或者自然连接,是一种常见的连接查询
内连接使用比较运算符,对两个表中的数据,进行比较,并列出与连接条件匹配的数据行,组合成新的记录。
在内连接查询中,只有满足条件的记录,才会出现在查询结果中。
1.1语法:SELECT 查询字段 FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段=表2.关系字段;
1.2理解:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
1.3举例:
select * from a_table inner join b_table on a_table.a_id=b_table.b_id;
2、左连接(Left join)
2.1语法:SELECT 查询字段 FROM 表1 LEFT JOIN 表2 ON 表1.关系字段=表2.关系字段;
2.2理解:left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。图中阴影部分为返回的记录。
![](https://img2018.cnblogs.com/blog/1444822/201812/1444822-20181218150151909-1249032322.jpg)
2.3举例:
select * from a_table left join b_table on a_table.a_id=b_table.b_id;
3、右连接(Right join)
3.1语法:SELECT 查询字段 FROM 表1 RIGHT JOIN 表2 ON 表1.关系字段=表2.关系字段;
3.2理解:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。图中阴影部分为返回的记录。
![](https://img2018.cnblogs.com/blog/1444822/201812/1444822-20181218150638883-2083997105.jpg)
select * from a_table right join b_table on a_table.a_id=b_table.b_id;
4、全连接
暂不支持,但是可以通过MySQL模拟。语法如下:
(select * from a_table left join b_table on a_table.a_id=b_table.b_id)
union
(select * from a_table right join b_table on a_table.a_id=b_table.b_id);