• SQL连接查询基础知识点


    什么是连接

    连接(join)查询是基于多个表中的关联字段将数据行拼接到一起,可以同时返回多个表中的数据。

    下面以两个表为例子,举例说明一下不同的连接。

    SELECT * FROM products
    
    id name price detail vender_id
    1 苹果 3.5 花牛苹果 1
    2 蜜桃 3.5 秦安蜜桃 1
    3 香蕉 2.5 海南香蕉 2
    4 椰子 4.5 海南椰子 2
    5 火龙果 3.5 红心火龙果 NULL
    6 柚子 红柚 3.5 NULL
    SELECT * FROM vendors
    
    id name phone location
    1 秦安水果王 666999 秦安县
    2 海南水果 666888 海南岛
    3 泰国进口水果 123456 泰国
    4 菲律宾进口水果 321654 菲律宾

    SQL连接类型

    内连接(inner join)

    用于返回两个表中满足连接条件的数据行。

    SELECT 
        p.id, p.name, p.vender_id, v.id, v.name
    FROM
        products AS p
            JOIN
        vendors AS v ON p.vender_id = v.id
    
    id name vender_id id name
    1 苹果 1 1 秦安水果王
    2 蜜桃 1 1 秦安水果王
    3 香蕉 2 2 海南水果
    4 椰子 2 2 海南水果

    左外连接(left outer join)

    返回左表中所有的数据行,对于右表中的数据,如果没有匹配的值,返回空值。

    SELECT 
        p.id, p.name, p.vender_id, v.id, v.name
    FROM
        products AS p
            LEFT JOIN
        vendors AS v ON p.vender_id = v.id
    
    id name vender_id id name
    1 苹果 1 1 秦安水果王
    2 蜜桃 1 1 秦安水果王
    3 香蕉 2 2 海南水果
    4 椰子 2 2 海南水果
    5 火龙果 NULL NULL NULL
    6 柚子 NULL NULL NULL

    右外连接(right outer join)

    返回右表中所有的数据行,对于左表中的数据,如果没有匹配的值,返回空值。

    SELECT 
        p.id, p.name, p.vender_id, v.id, v.name
    FROM
        products AS p
            RIGHT JOIN
        vendors AS v ON p.vender_id = v.id
    
    id name vender_id id name
    1 苹果 1 1 秦安水果王
    2 蜜桃 1 1 秦安水果王
    3 香蕉 2 2 海南水果
    4 椰子 2 2 海南水果
    NULL NULL NULL 3 泰国进口水果
    NULL NULL NULL 4 菲律宾进口水果

    全外连接(full outer join)

    等价于左外连接加上右外连接,返回左表和右表中所有的数据行,MySQL 不支持全外连接。

    交叉连接(cross join)

    交叉连接,也称为笛卡尔积,两个表的笛卡尔积相当于一个表的所有行和另一个表的所有行两两组合,结果的数量为两个表的行数相乘。

    自连接(self join)

    是指连接操作符的两边都是同一个表,没什么特别的,可以认为是把一个表复制一份后,和它原来的表进行各种连接操作。

  • 相关阅读:
    js与asp.net后台交互
    Asp.net封装js的类
    RegisterClientScriptBlock 与 RegisterStartupScript 的区别
    Page.ClientScript.RegisterStartupScript()
    错误与修复:ASP.NET无法检测IE10,导致_doPostBack未定义JavaScript错误,恒处于FF5卷动条位置
    JS数组的操作
    拉里·埃里森和历史上最牛的演讲【转】
    SSIS 学习(9):包部署常见问题汇总【转】
    SSIS 学习(8):事务【转】
    SSIS 学习(7):包配置(下)【转】
  • 原文地址:https://www.cnblogs.com/yahuian/p/11962115.html
Copyright © 2020-2023  润新知