连接查询:inner join,left join,right join

本文详细介绍了SQL中的四种连接查询方式:内连接、左连接、右连接及全连接。通过实例演示了如何在MySQL中实现这些连接,以及它们各自的特点和应用场景。

感谢原创:https://blog.youkuaiyun.com/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的简写,它的全称是左外连接,是外连接中的一种。图中阴影部分为返回的记录。

       左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
 

  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的简写,它的全称是右外连接,是外连接中的一种。图中阴影部分为返回的记录。

        与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
    3.3例子:

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);

 

转载于:https://www.cnblogs.com/python-wen/p/10137299.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值