zoukankan      html  css  js  c++  java
  • SQL笔记-第七章,表连接

    SQL中使用JOIN 关键字来使用表连接。表连接有多种不同的类型,被主流数据库系统支持的有交叉连接(CROSS JOIN)、内连接(INNER JOIN)、外连接(OUTTER JOIN),另外在有的数据库系统中还支持联合连接(UNION JOIN)。

    一.内连接(INNER JOIN)

    SELECT FNumber,FPrice
    FROM T_Order INNER JOIN T_Customer
    ON FCustomerId= T_Customer.FId
    WHERE T_Customer.FName=’TOM’

    在这个SQL 语句中,首先列出了组成结果集所需要的列名,而后则是在FROM 关键字后指定需要的表,在INNER JOIN 关键字后指明要被连接的表,而在ON 关键字后则指定了进行连接时所使用的条件。指定列所属的表后,我们就可以很轻松的引用同名的字段了,比如下面的SQL 语句检索所有的订单以及它们对应的客户的相关信息

    SELECT T_Order.FId,T_Order.FNumber,T_Order.FPrice, T_Customer.FId,T_Customer.FName,T_Customer.FAge
    FROM T_Order INNER JOIN T_Customer
    ON T_Order.FCustomerId= T_Customer.FId

    表别名

    SELECT o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c .FAge
    FROM T_Order o JOIN T_Customer c
    ON o.FCustomerId= c.FId

     二.不等值连接

    SELECT T_Order.FNumber,T_Order.FPrice, T_Customer.FName,T_Customer.FAge
    FROM T_Order
    INNER JOIN T_Customer
    ON T_Order.FPrice< T_Customer.FAge*5
    and T_Order.FCustomerId=T_Customer.FId

    三.交叉连接

    隐式

    SELECT c.FId, c.FName, c.FAge,
    o.FId, o.FNumber, o.FPrice
    FROM T_Customer c, T_Order o

    显式

    SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice
    FROM T_Customer
    CROSS JOIN T_Order

    四.自连接

    查询具有相同的FTypeId字段值的两个不同的订单

    SELECT o1.FNumber,o1.FPrice,o1.FTypeId,o2.FNumber,o2.FPrice,o2.FTypeId
    FROM T_Order o1
    INNER JOIN T_Order o2
    ON o1.FTypeId=o2.FTypeId and o1.FId<o2.FId

    五.外部连接

    右外部连接(RIGHT OUTER JOIN)
    左外部连接(LEFT OUTER JOIN)
    和全外部连接(FULLOUTER JOIN)。

    左外部连接还返回左表中不符合连接条件的数据;
    左外部连接还返回右表中不符合连接条件的数据;
    全外部连接还返回左表中不符合连接条件的数据以及右表中不符合连接条件的数据,它其实是左外部连接和左外部连接的合集。

    1.左外部连接

    SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge
    FROM T_Order o
    LEFT OUTER JOIN T_Customer c
    ON o.FCustomerId=c.FId
    WHERE o.FPrice>=150

    2.右外部连接

    SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge
    FROM T_Order o
    RIGHT OUTER JOIN T_Customer c
    ON o.FCustomerId=c.FId

    3.全外部连接(mysql不支持)

    SELECT o.FNumber,o.FPrice,o.FCustomerId,c.FName,c.FAge
    FROM T_Order o
    FULL OUTER JOIN T_Customer c
    ON o.FCustomerId=c.FId

    for mysql

    SELECT o.FNumber,o.FPrice,o.FCustomerId,
    c.FName,c.FAge
    FROM T_Order o
    LEFT OUTER JOIN T_Customer c
    ON o.FCustomerId=c.FId
    UNION
    SELECT o.FNumber,o.FPrice,o.FCustomerId,
    c.FName,c.FAge
    FROM T_Order o
    RIGHT OUTER JOIN T_Customer c
    ON o.FCustomerId=c.FId

  • 相关阅读:
    Python入门6 —— 流程控制
    Python入门5 —— 基本运算符
    Python入门4 —— 输入与输出
    实用小工具 下载链接
    [笔记] BGP in the Data Center (O'Reilly 2017)
    数据中心网络:Spine-Leaf 架构设计综述(2016)
    Using Open vSwitch* with DPDK for Inter-VM NFV Applications
    hung_task
    TCPDUMP and IPv6 and perf trace --no-syscalls
    Go非缓冲/缓冲/双向/单向通道
  • 原文地址:https://www.cnblogs.com/xieqianli/p/4245480.html
Copyright © 2011-2022 走看看