• SQL的四种连接(内连接,外连接)


    一,内连接(inner join)

    内连接(INNER JOIN):分显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行。(所谓的连接表就是数据库在做查询形成的中间表)。

    1.隐式的内连接

    没有INNER JOIN,形成的中间表为两个表的笛卡尔积。

    SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME
    FROM CUSTOMERS C,ORDERS O
    WHERE C.ID=O.CUSTOMER_ID;

    2.显示的内连接 一般称为内连接,有INNER JOIN,形成的中间表为两个表经过ON条件过滤后的笛卡尔积。

    SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME
    FROM CUSTOMERS C INNER JOIN ORDERS O ON C.ID=O.CUSTOMER_ID;

    二,外连接(左外,右外,全外)

    外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。

    1.左外连接(left outer join)

    左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
    
    SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
    FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;

    2.右外连接(right outer join)

    右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
    
    SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
    FROM ORDERS O RIGHT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;

    3.全外连接(full outer join)

    完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
    
    SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
    FROM ORDERS O FULL OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;

    三,联合查询(union/union all)

    union 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,union 内部的 select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 select语句中的列的顺序必须相同。

    SELECT column_name(s) FROM table_name1
    UNION
    SELECT column_name(s) FROM table_name2

    union 与 unionall区别在于是否剔除重复的查询数据

    合群是堕落的开始 优秀的开始是孤行
  • 相关阅读:
    Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
    理解 Continuation
    99种用Racket说I love you的方式
    Racket Cheat Sheet
    scheme 教程 #lang racket
    开始学习Scheme
    MIT Scheme 的基本使用
    CPS变换
    SECD machine
    scheme 之门
  • 原文地址:https://www.cnblogs.com/biaogejiushibiao/p/9458119.html
Copyright © 2020-2023  润新知