sql语句中的 inner join 、 left join 、 right join、 full join 的区别

Easter79
• 阅读 597

简单明了地说,连接分内连接和外链接

假设有A和B两张表

内连接:inner join   表示把AB表的记录相符都显示出来,把AB表不符合条件的都排除

外连接分三种,即左连接(LEFT OUTER JOIN)、右连接(RIGHT OUTER JOIN)、全连接(FULL OUTER JOIN),下面就简单解析一下,。1.A LEFT OUTER JOIN B表示把A表的记录都显示出来,把B表符合条件的结果集显示出来,不符合条件的用NULL表示。2.A RIGHT OUTER JOIN B表示把B表的记录都显示出来,把A表符合条件的结果集显示出来,不符合条件的用NULL表示。3.A FULL OUTER JOIN B 表示把A表和B表的记录都显示出来,不符合条件的用NULL表示。

实例:

[TEST@ORA1] SQL>select * from a;

编号 姓名
---- ----------
1000 张三
2000 李四
3000 王五

[TEST@ORA1] SQL>select * from b;

编号 商品
---- ----------
1000 电视机
2000 录像机
4000 自行车

[TEST@ORA1] SQL>set null 空值--这里为了显示方面我把NULL定义成了[空值]

[TEST@ORA1] SQL>select a.*,b.* from a inner join b on a.编号=b.编号;

编号 姓名 编号 商品
---- ---------- ---- ----------
1000 张三 1000 电视机
2000 李四 2000 录像机

[TEST@ORA1] SQL>select a.*,b.* from a left join b on a.编号=b.编号;

编号 姓名 编号 商品
---- ---------- ---- ----------
1000 张三 1000 电视机
2000 李四 2000 录像机
3000 王五 空值 空值

[TEST@ORA1] SQL>select a.*,b.* from a right join b on a.编号=b.编号;

编号 姓名 编号 商品
---- ---------- ---- ----------
1000 张三 1000 电视机
2000 李四 2000 录像机
空值 空值 4000 自行车

[TEST@ORA1] SQL>select a.*,b.* from a full join b on a.编号=b.编号;

编号 姓名 编号 商品
---- ---------- ---- ----------
1000 张三 1000 电视机
2000 李四 2000 录像机
3000 王五 空值 空值
空值 空值 4000 自行车

点赞
收藏
评论区
推荐文章
kenx kenx
2年前
MySQL查询之内连接,外连接查询场景的区别与不同
前言我在写sql查询的时候,用的最多的就是where条件查询,这种查询也叫内连查询innerjoin,当然还有外连查询outerjoin,左外连接,右外连接查询,常用在多对多关系中,那他们区别和联系是什么呢?内连接innerjoin内连接最常用定义:1.连接结果仅包含符合连接条件的行组合起来作为结果集,参与连接的两个表都应该符合连接条件使用关键词:
Easter79 Easter79
2年前
sql的left join 、right join 、inner join之间的区别
sql的leftjoin、rightjoin、innerjoin之间的区别  leftjoin(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录   rightjoin(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录  innerjoin(等值连接)只返回两个表中联结字段相等的行举例如下: 
Wesley13 Wesley13
2年前
SQL JOIN 简单介绍
前言本文还是秉持之前一贯的写作风格,以简单易懂的示例帮助大家了解各种join的区别。为什么需要join为什么需要join?join中文意思为连接,连接意味着关联即将一个表和多个表之间关联起来。在处理数据库表的时候,我们经常会发现,需要从多个表中获取信息,将多个表的多个字段数据组装起来再返回给调用者。所以join的前提是这
Wesley13 Wesley13
2年前
MySQL数据库查询
MySQL数据库查询12、说明:使用外连接A、left(outer)join:左外连接(左连接):包含leftjoin左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL).。SQL:select\fromstudent(表1)leftjoincourse(表2)onstude
Wesley13 Wesley13
2年前
MySQL—关联(连接)查询(笛卡尔积、内连接、外连接、左连接、右外连接、外连接、自连接)
MySQL—关联(连接)查询知识大纲概述笛卡尔积关联条件内连接\INNERJOIN\外连接\OUTERJOIN\左连接\LEFTJOIN\右外连接\RIGHTJOIN\外连接\FULLJOIN\
Wesley13 Wesley13
2年前
MySQL教程(十四)—— 连接
1 连接的语法结构MySQL在SELECT语句、多表更新、多表删除语句中支持JOIN操作。语法结构:1table_reference//第一张表2{INNER|CROSSJOIN|{LEFT|RIGHT}OUTERJOIN}//连接选择:内连接,左外、右外连接3t
Wesley13 Wesley13
2年前
mysql学习之join从句
一、join从句共有5种类型内连接(innerjoin)全外连接(fullouterjoin)左外连接(leftouterjoin)右外连接(rightouterjoin)交叉连接(crossjoin)二、演示案例新建两张表user1表和user2表CRE
Wesley13 Wesley13
2年前
Oracle 中的join
1、概述1.1、所有的join连接,都可以加上类似wherea.id'1000'的条件,达到同样的效果。1.2、除了crossjoin不可以加on外,其它join连接都必须加上on关键字,后都可加where条件。1.3、虽然都可以加where条件,但是他们只在标准连接的结果集上查找where条件。比如左外连接的结果没有class的三
Wesley13 Wesley13
2年前
inner join(等值联接)、left join(左联接)、right join(右联接)用法及区别
innerjoin(等值连接)只返回两个表中联结字段相等的行leftjoin(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录rightjoin(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录INNERJOIN语法:INNERJOIN连接两个数据表的用法:SELECT\FROM
Wesley13 Wesley13
2年前
oracle连接种类
等连接:连接条件使用等号非等连接:连接条件使用等号以外的其它符号内连接:根据指定的连接条件进行连接查询,满足连接条件的数据才会出现在结果集外连接:在内连接的基础上,将某个连接表不符合连接条件的记录加入结果集自连接:自身表中的列关联自身表中的其它列内连接属于强连接,外连接属于弱连接左外连接【Aleftouterjoin
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k