SQL表连接查询(inner join、full join、left join、right join)

转载 2016年05月31日 20:58:32

SQL表连接查询(inner join、full join、left join、right join)

SQL表连接查询(inner join、full join、left join、right join)

 

前提条件:假设有两个表,一个是学生表,一个是学生成绩表。

 

 

 

 

 

 表的数据有:

 

 

 

 

 

 

 

 

 

一、内连接-inner jion :

最常见的连接查询可能是这样,查出学生的名字和成绩:

select s.name,m.mark from student s,mark m where s.id=m.studentid

上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成:

select s.name,m.mark from student s inner join mark m on s.id=m.studentid

符合条件的只有两条结果,查出结果为:

 

二、左连接-left join:

左连接是把左边的表的元组全部选出来:

select s.name,m.mark from student s left join mark m on s.id=m.studentid

上面语句就是把左边的表,即student表中的元组全部选出,尽管有些分数表是没数据的,也选了出来,选出的结果为:

 

三、右连接-right join:

右连接就是把右边表的数据全部取出,不管左边的表是否有匹配的数据:

select s.name,m.mark from student s right join mark m on s.id=m.studentid

上面的语句就是把mark分数表的数据全部取出来,不管student表中是否有数据匹配,如下图所示:

 

四、全连接-full join:

把左右两个表的数据都取出来,不管是否匹配:

select s.name,m.mark from student s full join mark m on s.id=m.studentid

如下图所示,学生表和成绩表的数据都取了出来:

 

比较常用的是第一种,内连接,而且是用这种写法:

select s.name,m.mark from student s,mark m where s.id=m.studentid

左连接(left jion)、右连接(right jion)、内连接(inner join)性能比较

前提:数据库中一共有三个表:class,book,phone,而且每个数据库表中都有10万条数据,三个表一共有30万条数据,从大数据量的角度来检测你写的sql语句性能是如何的. 一.左连接 用sq...
  • tomorrow_C
  • tomorrow_C
  • 2017年03月23日 10:58
  • 1508

SQLite3中的三种Join方式

前一阵子设计数据库结构,有个设计是要保存所有的音、视频和图片信息的metadata到表中,并要求可以不分类型的一次全部检索出来。原来有个设计是设计一张大表,把所有的字段不分类型全都添进去,通过类型字段...
  • coroutines
  • coroutines
  • 2014年09月18日 11:44
  • 14113

SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解

相信很多人在刚开始使用数据库的INNER JOIN、LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这三者的区别,希望对大...
  • wangyuchun_799
  • wangyuchun_799
  • 2015年10月13日 14:12
  • 8594

SQL多表连接查询INNER JOIN, LEFT JOIN , RIGHT JOIN ,FULL JOIN ,CROSS JOIN

inner join,full outer join,left join,right jion 内部连接 inner join 两表都满足的组合 full outer 全连 两表相同的组合在一起,...
  • yaday
  • yaday
  • 2012年05月15日 19:11
  • 762

SQL表连接查询(inner join、full join、left join、right join)

SQL表连接查询(inner join、full join、left join、right join) SQL表连接查询(inner join、full join、left jo...
  • xn4545945
  • xn4545945
  • 2014年07月22日 23:52
  • 1677

mysql 表连接(left/right/full join)时on 和 where的结果差异

有这样的一个问题mysql查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异。    可能只看着两个关键字看不出任何的问题。那我们使用实际的例子来...
  • xjmbufan
  • xjmbufan
  • 2014年06月11日 17:59
  • 364

sql语句中left jion、 right jion、 inner join、 full join含义

先看一下left join  http://baike.baidu.com/view/4828677.htm?fr=aladdin 定义 编辑 left join:是SQL语言中的查询...
  • conganguo
  • conganguo
  • 2014年08月19日 18:01
  • 525

sql 连接查询join、inner join、left join、right join、full join

最近在看数据库链接,以下是学习心得: JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也...
  • henulwj
  • henulwj
  • 2012年08月16日 12:25
  • 433

SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解

相信很多人在刚开始使用数据库的INNER JOIN、LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这三者的区别,希望对大...
  • jx347638458
  • jx347638458
  • 2017年07月25日 15:32
  • 375

mysql多表连接查询inner join, left join , right join ,full join ,cross join

inner join,full outer join,left join,right jion内部连接 inner join 两表都满足的组合full outer 全连 两表相同的组合在一起,A表有,...
  • fengspg
  • fengspg
  • 2011年03月07日 20:56
  • 1438
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL表连接查询(inner join、full join、left join、right join)
举报原因:
原因补充:

(最多只允许输入30个字)