zoukankan      html  css  js  c++  java
  • 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)

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

  • 相关阅读:
    Linux中Elasticsearch集群部署
    在.net core 项目中添加swagger支持
    ASP.NET Core 类库中取读配置文件
    Redis的服务安装步骤
    Lambda表达式多表连接的左连
    Angular7 学习资料
    Docker在eShopOnContainer项目中的使用方法
    绘图工具
    万能分页存储过程(SQL Server)
    为什么程序开发人员这么累?
  • 原文地址:https://www.cnblogs.com/yahuian/p/11962115.html
Copyright © 2011-2022 走看看