实解MySQL中各种连接的区别

      在SQL标准中规划的连接大致分为以下几种:

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

SQL实例:

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

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

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

SQL实例:

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

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

SQL实例:

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

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

SQL实例:

1 select sno,name,major from students FULL JOIN majors ON students.mno=majors.mno

4.自身连接:采取别名解决问题

SQL实例:

1 select c1.cno,c1.coursename,c1.pno,c2.coursename from courses c1,courses c2where c1.pno=c2.cno

5.交叉连接(cross join):相当于做笛卡尔积

SQL实例:

1 select lastname+firstname from lastname CROSS JOIN firstname

下面贴两个具体的表来演示各连接结果:

a表:a.jpg

b表:b.jpg

 (1)内连接SQL及查询结果: inner.jpg

 (2)左(外)连接SQL及查询结果:left.jpg

 (3)右(外)连接SQL及查询结果:

转载地址:http://iecspace.ecjtu.org/posts/mysql-join


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值