又要写一个博客了,真是讨厌啊,一直靠百度活着,sql还写错了,真是醉了让自己。
数据库表的连接:
一,内链接又叫等值连接:就是求两个表相同的部分;内连接:在每个表中找出符合条件的共有记录。[x inner join y on...]
这里用网上的数据表做解释吧:嘿嘿
二,外连接:左连接,右连接和全连接。
2,左连接的应用实例:
根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,如果找不到与左表匹配的,用null表示:

语法格式:
Select * from tableA left join tableB
On tableA.column1=tableB.column2;
编写一个 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...]
右连接语句为
“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数据库中不提供全连接,可用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;