背景

  • 在一次面试的时候,面试官让我说一下这三者的使用场景和区别,当时瞬间懵逼,哈哈。回来赶快看一看,记下来。

详解

  • inner join

    • 等值查询:返回两张表中,联结字段值相等的组合记录
    • 举例:所有学生参加考试,学生考试结果查询
      • 表如下

        表Student(学生表)记录如下:
        t_id  name
        1     龙
        2     情
        3     风
        4     月
        5     度 表Score(分数表)记录如下:
        c_id   num t_id
        1     50 1
        2     88 2
        3     90 3
        4     62 4
        5     0 5
      • 查询语句:select s.t_id,s.name,c.num from Student s inner join Score c on s.t_id=c.t_id;
      • 查询结果
        t_id        name        num
        1      龙 50
        2      情 88
        3      风 90
        4      月 62
        5      度 0
  • left join

    • 左外关联查询:返回包括左表中的所有记录和右表中联结字段有关的组合记录。如果左表中数据多于右表,查询结果中右表的数据为null。
    • 举例:一个学生没有参加考试,查询考试结果
      • 表如下

        表Student(学生表)记录如下:
        t_id  name
        1     龙
        2     情
        3     风
        4     月
        5     度
        表Score(分数表)记录如下:
        c_id   num t_id
        1     50 1
        2     88 2
        3     90 3
        4     62 4
      • 查询语句:select s.t_id,s.name,c.num from Student s left join Score c on s.t_id=c.t_id;
      • 查询结果
        t_id        name        num
        1      龙 50
        2      情 88
        3      风 90
        4      月 62
        5      度 null
  • right join
    • 右外关联查询:返回包括右表中的所有记录和左表中联结字段相等的组合记录。如果右表中数据多于左表,查询结果中左表的数据为null。
    • 举例
      • 表如下

        表Student(学生表)记录如下:
        t_id  name
        1     龙
        2     情
        3     风 表Score(分数表)记录如下:
        c_id   num t_id
        1     50 1
        2     88 2
        3     90 3
        4     62 4
      • 查询语句:select s.t_id,s.name,c.num from Student s rightjoin Score c on s.t_id=c.t_id;
      • 查询结果如下
        t_id        name        num
        1      龙 50
        2      情 88
        3      风 90
        null    null 62

Oracle SQL——inner jion;left join;right join的区别和使用场景的更多相关文章

  1. Oracle SQL Lesson (6) - 使用Join进行联合查询

    使用连接SQL 1999SELECT table1.column, table2.columnFROM table1[NATURAL JOIN table2] |[JOIN table2 USING ...

  2. Oracle SQL中join方式总结

    在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结).SQL JOIN其实是一个逻辑概念,像NEST LOOP JOIN. HASH JOIN等 ...

  3. mysql inner join,full outer join,left join,right jion

    https://sites.google.com/site/349624yu/courses/mysql/mysqldbgjzcx inner join,full outer join,left jo ...

  4. SQL中的Join和Where的区别

    一.sql语句中left join.inner join中的on与where的区别 0.各种join操作的概念和作用 left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录. ...

  5. SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。

    语法 join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表可 ...

  6. SQL Left Join, Right Join, Inner Join, and Natural Join 各种Join小结

    在SQL语言中,存在着各种Join,有Left Join, Right Join, Inner Join, and Natural Join等,对于初学者来说肯定一头雾水,都是神马跟神马啊,它们之间到 ...

  7. 图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  8. sql表连接left join,right join,inner join三者之间的区别

    sql表连接left join,right join,inner join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (以左表数据为基准,不足补为NULL) ...

  9. SQL内连接-外连接join,left join,right join,full join

    1.创建测试表test1及test2 SQL)); 表已创建. SQL)); 表已创建. ,'name1'); ,'name2'); ,'name3'); ,'name4'); ,'name5'); ...

随机推荐

  1. idea创建java的web项目

    2. 3. 4. 5. 6. 步骤八: 点击那个倒立的三角形,然后点击Edit Configurations; 步骤八: 步骤九:配置tocat服务器 步骤十:哎,发现,我怎么就只有一个选项呀,art ...

  2. leetCodelinked-list-cycle-ii找到链表的环

    题目 Given a linked list, return the node where the cycle begins. If there is no cycle, return null. N ...

  3. python3 TypeError: a bytes-like object is required, not 'str'

    在学习<Python web开发学习实录>时, 例11-1: # !/usr/bin/env python # coding=utf-8 import socket sock = sock ...

  4. 为什么C++函数形参默认值从最末一个赋值?

    [1]函数调用时形参的压栈顺序 1.示例代码如下(VS2010): #include <iostream> using namespace std; ); void fun(int a, ...

  5. python 什么是位置参数?

    位置参数是必选参数 ----不能不传, ----不能传一部分, ---必须按顺序传 ----必须传全部参数

  6. AI赌神称霸德扑的秘密,刚刚被《科学》“曝光”了

    AI赌神称霸德扑的秘密,刚刚被<科学>“曝光”了 称霸德州扑克赛场的赌神Libratus,是今年最瞩目的AI明星之一. 刚刚,<科学>最新发布的预印版论文,详细解读了AI赌神背 ...

  7. Jmeter压力测试和接口测试

    jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmeter是java开发的,所以运行的时候必须先要安 ...

  8. 关于spark进行实时日志解析,保存hbase与mysql

    进行地域分析 rowkey=中国_上海_201901016 value=访问次数 areaStartAmt.foreachRDD(rdd => { rdd.foreachPartition(pa ...

  9. Linux 安装 mysql 数据库

    1. 克隆虚拟机 2. 上传安装文件 1.上传文件 2.解压文件 tar -xvf 文件 3. 安装数据库 安装顺序: .debuginfo .shared .client .server 1. rp ...

  10. 从实践出发:微服务布道师告诉你Spring Cloud与Spring Boot他如何选择

    背景 随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. 系统架 ...