MySql基础(三)--join的用法

这篇博客主要讲join的用法,这也是数据库查询操作中比较基础且重要的知识点。

  join分为内连接(inner join)和外连接(outer join)。

    外连接分为外连接(outer join)、左连接(left join)、右连接(right join)和全连接(full join)。

  我们进行多表查询的时候通常会利用笛卡尔积进行多种表的组合。

  通过一下两张表进行举例。

Person
PersonId FirstName LastName
1 John Allan
Address
AddressId PersonId City State
1 2 new york city new york

目录

一、内连接

二、外连接


一、内连接

  内连接查询返回满足条件的所有记录,默认情况下没有指定某种连接,则为内连接。

操作语句:
select FirstName,LastName,City,State from Person inner join Address on Person.PersonId=Address.PersonId;

  查询结果为Empty set (0.00 sec)

二、外连接

  1.左连接

  左连接又称左外连接(left outer join),不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左侧表的其他行。

操作语句:
 select FirstName,LastName,City,State from Person left join Address on Person.PersonId=Address.PersonId;

  查询结果为:

FirstName LastName City State
John Allan NULL NULL

2.右连接

  右连接又称右外连接(right outer join),不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符右侧表的其他行。

操作语句:
select FirstName,LastName,City,State from Person right join Address on Person.PersonId=Address.PersonId;

查询结果为:

FirstName LastName City State
NULL NULL new york city new city

3.外连接

  外连接就是求两个集合的并集。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表和右表中剩余的记录。不过MySql是不支持outer join的,我们可以通过左连接和右连接结果的union操作来实现。

操作语句:
select FirstName,LastName,City,State from Person left join Address on Person.PersonId=Address.PersonId union select FirstName,LastName,City,State from Person right join Address on Person.PersonId=Address.PersonId;

查询结果为:

FirstName LastName City State
John Allan NULL NULL
NULL NULL new york city new york

4.全连接

  全连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的其他行。不过mysql默认不支持full join。

猜你喜欢

转载自blog.csdn.net/qq_43238335/article/details/106473966