SQL表连接查询(inner join(join)、full join、left join、right join、cross join)
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
- JOIN: 如果表中有至少一个匹配,则返回行(join=inner join)
 - LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
 - RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
 - FULL JOIN: 只要其中一个表中存在匹配,就返回行
 - cross join:笛卡尔积,N*M
 
前提条件:假设有两个表,一个是学生表,一个是学生成绩表。

表的数据有:

一、内连接-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
如下图所示,学生表和成绩表的数据都取了出来:

五、笛卡儿积-cross join:
select s.name,m.mark from student s cross join mark m
如下图所示,学生表和成绩表的数据都取了出来:

比较常用的是第一种,内连接,而且是用这种写法:
select s.name,m.mark from student s,mark m where s.id=m.studentid
SQL表连接查询(inner join(join)、full join、left join、right join、cross join)的更多相关文章
- SQL表连接查询(inner join、full join、left join、right join)
		
SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...
 - SQL表连接查询
		
SQL表连接查询(inner join.full join.left join.right join) 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和 ...
 - SQL表连接查询inner join  left join  right join full  join ...
		
一.最常见的连接查询 select s.name,m.mark from student s,mark m where s.id=m.studentid. 二.内连接-inner join sel ...
 - SQL 表连接查询出现重复列,由此理清LEFT JOIN、INNER JOIN的区别
		
1.先创建两个临时表,并插入数据 CREATE TABLE #TEMP1( ID INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(50)) CREATE TA ...
 - sql表连接left join,right join,inner join三者之间的区别
		
sql表连接left join,right join,inner join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (以左表数据为基准,不足补为NULL) ...
 - Hive的join表连接查询的一些注意事项
		
Hive支持的表连接查询的语法: join_table: table_reference JOIN table_factor [join_condition] | table_reference {L ...
 - oracle 多表连接查询 join(一)
		
一.简介: 多表连接查询通过表之间的关联字段,一次查询多表数据. 下面将依次介绍 多表连接中的如下方法: 1.from a,b 2.inner join 3.left outer join 4.rig ...
 - oracle 多表连接查询 join
		
转 简介: 多表连接查询通过表之间的关联字段,一次查询多表数据. 下面将依次介绍 多表连接中的如下方法: 1.from a,b 2.inner join 3.left outer join 4.rig ...
 - SQL多表连接查询(详细实例)
		
转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...
 
随机推荐
- Linux学习——shell编程之运算符
			
shell编程之运算符 一:shell中常见算术运算符号和优先级 二:算术运算符 Shell 变量:是弱类型!不能进行加减乘除!比较麻烦! 例子 :shell变量弱类型 a=11 b=22 echo ...
 - Reliability diagrams
			
Reliability diagrams (Hartmann et al. 2002) are simply graphs of the Observed frequency of an event ...
 - Ubuntu16笔记本双显卡安装NVIDIA驱动
			
blockquote { direction: ltr; color: rgb(0, 0, 0) } blockquote.western { font-family: "Liberatio ...
 - JavaWeb(五)之JSTL标签库
			
前言 前面介绍了EL表达式,其实EL表达式基本上是和JSTL核心标签库搭配一起使用才能发挥效果的.接下来让我们一起来认识一下吧! 在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行 ...
 - vue2购物车ch2-(商品列表显示)
			
1 index.html <!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...
 - C#无限分级实现,前端WEB页面接收,后台提供层级Json数据
			
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...
 - python批量修改word文件名
			
最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完毕的文件的文件名全丢了,所有的文件只有代号,如下面 ...
 - Node Inspector 代理实现
			
本文首发于 https://github.com/whxaxes/blog/issues/9 背景 平时做 node 开发的时候,通过 node inspector 来进行断点调试是一个很常用的 de ...
 - Servlet 笔记-读取表单数据
			
Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析: getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值. get ...
 - viewpager的滑动
			
在一个已经是月黑风高快下班的时刻了,我们产品突然通知我们开会,要添加一个功能,他闲来无聊随便戳了戳facebook,说点开联系人的那个横向滑动的卡片式的效果不错,让我们在我们的app里添加这个效果,我 ...