Mysql数据库的内连接,外连接,全连接知识点回顾

又要写一个博客了,真是讨厌啊,一直靠百度活着,sql还写错了,真是醉了让自己。

数据库表的连接:

一,内链接又叫等值连接:就是求两个表相同的部分;内连接:在每个表中找出符合条件的共有记录。[x inner join y on...]

这里用网上的数据表做解释吧:嘿嘿

二,外连接:左连接,右连接和全连接。

2,左连接的应用实例:

根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,如果找不到与左表匹配的,用null表示:

Mysql数据库的内连接,外连接,全连接知识点回顾_第1张图片

语法格式:

Select * from tableA  left join tableB
On tableA.column1=tableB.column2;

Mysql数据库的内连接,外连接,全连接知识点回顾_第2张图片

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息都需要基于上述两表提供 person 的以下信息:

FirstName, LastName, City, State

# Write your MySQL query statement below
select a.FirstName, a.LastName, b.City,b.State from
 Person as a left join Address as b
on a.PersonId=b.PersonId

所以分析,以Person表为主,都要有地址信息。规律,就是以哪个表为主就以何种方式连接。

3.右连接:根据右表的记录,在被连接的左表中找出符合条件的记录与之匹配,如果找不到匹配的,用null填充。[x right [outer] join y on...]

Mysql数据库的内连接,外连接,全连接知识点回顾_第3张图片

右连接语句为

“Select * from tableA

right  join  tableB

On tableA.column1=tableB.column2;

4.全连接:返回符合条件的所有表的记录,没有与之匹配的,用null表示(结果是左连接和右连接的并集)

第一种写法:(full join .. on ..)

三,自连接

前面介绍左连接、右连接都是必须有一张主表,另一张表是可选的,即匹配的从表中的行不一定必须存在。

在全连接中,两个表都是从表,在这种情况下,表A和表B的行匹配,则会返回表A中所有的行,即使它在表B中没有匹配的行,表B中所有的行,即使它在表A中没有匹配的行,即返回表A和表B中所有的行,不论表A或表B中的行在另一张表中是否有匹配。

Mysql数据库的内连接,外连接,全连接知识点回顾_第4张图片

MySQL数据库中不提供全连接,可用left join和right join将两张表的数据取出,再用union去重。

语法:Select * from tableA  left join tableB

Ontable A.column1 = tableB.column1

Union

Select * from tableA right join tableB

OntableA.column1 = tableB.column1;

你可能感兴趣的:(sql,数据)