MySQL的几种连接 join/inner join//left join/right join区别

发布时间:2018-11-17 13:26:49编辑:丝画阁阅读(762)

一、释义。

1、Left Join(左联接)

以左表为中心,返回左表中符合条件的所有记录以及右表中联结字段相等的记录——当右表中无相应联接记录时,返回空值。

2、Right Join(右联接)

以右表为中心,返回右表中符合条件的所有记录以及左表中联结字段相等的记录——当左表中无相应联接记录时,返回空值。

3、Inner Join(等值连接)

返回两个表中联结字段相等的行。

二、示例。

1、插入测试表(test1,test2)

create table test1 --测试表1

(id int not null,

value char(10) )

create table test2 --测试表2

(id int not null,

value char(10) )

2、插入数据

--insert into test1

insert into test1

values (1,'testaa')

insert into test1

values (2,'testaa')

insert into test1

values (3,'testaa')

--insert into test2

insert into test2

values (1,'testaa2')

insert into test2

values (2,'testaa2')

insert into test2

values (4,'testaa2')

3、查询结果比较(附图)

select * from test1 a left join test2 b on a.id = b.id

select * from test1 a right join test2 b on a.id = b.id

select * from test1 a inner join test2 b on a.id = b.id

MySQL的几种连接 join/inner join//left join/right join区别


4、删除测试表

drop table test1

drop table test2

总结:

连接:A xjoin B(主表 操作 关联表)

select过程:from->where->group by->having->order by->limit

在不使用on语法时,join、inner join、逗号、cross join结果相同,都是取2个表的笛卡尔积。逗号与其他操作符优先级不同,所以有可能产生语法错误,尽量减少用逗号

join、inner join、cross join支持on和using语法,逗号不支持on和using语法

on语法:筛选连接后的结果,两表的对应列值相同才在结果集中,可以通过and连接多个列值的匹配要求,列名可以不同

select * from tb_test1 inner join tb_student on tb_test1.id=tb_student.id;

using语法:筛选连接后的结果,两表的对应列值相同才在结果集中,括号内用多个列名要求用逗号连接,列名必须相同。

关键字