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
SQL表连接查询(inner join、full join、left join、right join)的更多相关文章
- SQL 表连接查询出现重复列,由此理清LEFT JOIN、INNER JOIN的区别
1.先创建两个临时表,并插入数据 CREATE TABLE #TEMP1( ID INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(50)) CREATE TA ...
- SQL表连接查询
SQL表连接查询(inner join.full join.left join.right join) 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和 ...
- SQL表连接查询(inner join(join)、full join、left join、right join、cross join)
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. JOIN: 如果表中有至少一个匹配,则返回行(join=inner join) LEFT JOIN: 即使右表中没有匹配,也从左表返回所有 ...
- 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,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 ...
随机推荐
- 在将 varchar 值 '' 转换成数据类型 int 时失败
我们有时候用in语句的时候,发现存在Sql注入漏洞,想参数化处理一下,遇到语句执行问题!! declare @ids varchar() set @ids='216,218' select * fro ...
- https://blog.helong.info/blog/2015/03/13/jump_consistent_hash/
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- MVC4与JSON交互的知识总结
一:jquery传递JSON给MVC4后台 1.JSON传递单个参数给Controller某个Action方法 [前台js] $(document).ready(function () { var p ...
- java字典序排序
import java.util.Comparator; import java.util.ArrayList; import java.util.Collections; public class ...
- aischool 倒计时VIEW封装
@implementation TWPaperTimeCountLabel { NSInteger miaoshu; dispatch_source_t _timer; } -(id)initWith ...
- openSUSE4.1 安装docker
安装完Leap后,通过YaST-Software Management安装docker. 安装 docker . yast2-docker. ruby2.1-rubygem-docker-api . ...
- 用SQL命令查看Mysql数据库大小
要想知道每个数据库的大小的话,步骤如下: 1.进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2.查询所有数据的大小: s ...
- android studio ndk配置和ndk开发
配置开发环境: 1:下载ndk,导入android studio中. 2:在项目中引入NDK 3:在计算机path变量中导入NDK路径,在编译.h文件的时候会用到. 一:建立java的native ...
- jquery parent() parents() closest()区别
分类: 前端开发 parent是找当前元素的第一个父节点,不管匹不匹配都不继续往下找 parents是找当前元素的所有父节点 closest() 是找当前元素的所有父节点 ,直到找到第一个匹配的父节 ...
- 15.用PHP写出显示客户端IP与服务器IP的代码,如何防止用户使用代理的情况?[添加更多详情]
打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR'); 打印服务器IP:echo gethostbyname("ww ...