• 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

  • 相关阅读:
    shell 的多进程
    shell 按行读取文件的内容
    2>&1的意思
    >/dev/null 2>&1
    js 变量作用域
    Premiere Pro 中的键盘快捷键
    premiere pro 2019 mac 破解
    js 空语句
    js 数组原型
    js 奇偶判断
  • 原文地址:https://www.cnblogs.com/xieqianli/p/4245480.html
Copyright © 2020-2023  润新知