Mysql四种连接说明及实例

 

1、内连接: 只连接匹配的行,所以可能丢失数据。[只匹配]
2、左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行。[左全右匹配]
3、右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行。[右全左匹配]
4、全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
5、交叉连接: 笛卡尔积

1.内连接(inner join):是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。将两个表中存在连接关系的字段中符合连接关系的那些记录

SQL实例:

1select fieldlist from table1 [innerjoin table2 on table1.column=table2.column

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

2.外连接(分为左连接和右连接):即除了返回符合连接条件的结果之外,还要返回左表(左连接)或者右表(右连接)中不符合连接条件的结果,相对应的使用NULL对应。

     左(外)连接(left inner):显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。

SQL实例:

1select courses.cno,max(coursename),count(sno) from courses LEFT JOIN grades ONcourses.cno=grades.cno group by courses.cno

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

     右(外)连接(right inner):显示全部右边表中的所有项目,即使其中有些项中的数据未填写完全。右外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。

SQL实例:

1select courses.cno,max(coursename),count(sno) from courses RIGHT JOIN grades ONcourses.cno=grades.cno group by courses.cno

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

3.全连接(full inner):将两个表中存在连接关系的字段的所有记录取出形成记录集的连接,两边表中的内容全部显示(因为全连接无论是否符合连接条件都将会取出查询提到了的表中的字所有字段,所以意义不大)

 

4.联合查询(union/union all)

union 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,union 内部的 select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 select语句中的列的顺序必须相同

参考博客:

https://www.cnblogs.com/assasion/p/7768931.html

https://www.csdn.net/gather_2c/MtTaEg3sNjE3MS1ibG9n.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值