欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > SQL关键字三分钟入门:JOIN 联表查询不再难

SQL关键字三分钟入门:JOIN 联表查询不再难

2025/6/21 1:31:07 来源:https://blog.csdn.net/Landcc/article/details/148631603  浏览:    关键词:SQL关键字三分钟入门:JOIN 联表查询不再难

在实际业务中,数据往往分布在多个表中。例如,用户信息可能在 users 表里,订单信息在 orders 表里。

那么,我们怎么把这两张表的数据“连起来”进行查询呢?这就轮到 SQL 中非常重要的关键字了 —— JOIN


一、么是 JOIN?

JOIN 是 SQL 中用于连接两个或多个表的关键字。它通过一个共同的字段(如主键和外键)将不同表中的数据关联在一起。

你可以把它理解为:“根据某个条件,把两张或多张表合并成一张大表来查询”。


二、常见的 JOIN 类型

JOIN 类型含义说明
INNER JOIN只返回两个表中匹配的行
LEFT JOIN返回左表所有行,即使右表没有匹配项(用 NULL 填充)
RIGHT JOIN返回右表所有行,即使左表没有匹配项
FULL OUTER JOIN返回两个表的所有行,不管有没有匹配(部分数据库不支持)

⚠️ 注意:MySQL 不支持 FULL OUTER JOIN,但可以通过 UNION 实现。


三、示例讲解

假设我们有两个表:

表1:users(用户表)

idname
1张三
2李四
3王五

表2:orders(订单表)

order_iduser_idproduct
1011手机
1021耳机
1032鼠标

示例1:INNER JOIN(内连接)

SELECT users.name, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;
结果:
nameproduct
张三手机
张三耳机
李四鼠标

 只有 id 在两个表中都存在的记录才会被显示。


 示例2:LEFT JOIN(左连接)

SELECT users.name, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
结果:
nameproduct
张三手机
张三耳机
李四鼠标
王五NULL

 左表(users)所有记录都会显示,右表没有对应记录时用 NULL 填充。


 示例3:RIGHT JOIN(右连接)

SELECT users.name, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;
结果:
nameproduct
张三手机
张三耳机
李四鼠标

 和 LEFT JOIN 相反,保留的是右表的所有记录。


注意:

  • JOIN 的核心是找到两个表之间的关联关系,通常是主键与外键的关系。

  • 如果你不确定应该用哪种 JOIN,先尝试画出两个表的结构图,再决定需要保留哪些数据。

  • 多个表也可以一起连接,比如:

    SELECT u.name, o.product, a.address
    FROM users u
    LEFT JOIN orders o ON u.id = o.user_id
    LEFT JOIN addresses a ON u.id = a.user_id;

四、 总结对比表

JOIN类型是否保留左表全部是否保留右表全部匹配方式
INNER JOIN仅返回匹配项
LEFT JOIN左表全保留
RIGHT JOIN右表全保留
FULL JOIN两边都保留

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词