当前位置: 首页 > news >正文

【MySQL✨】MySQL 入门之旅 · 第十一篇:MySQL 表连接(JOIN)基础

本篇文章将介绍 MySQL 中的 表连接(JOIN),帮助你掌握如何将多个表的数据通过不同的条件联合查询,以便获取更复杂的查询结果。


目录

  1. JOIN 基础概念
  2. 内连接(INNER JOIN)
  3. 左连接(LEFT JOIN)
  4. 右连接(RIGHT JOIN)
  5. 全连接(FULL JOIN)
  6. 自连接(SELF JOIN)
  7. JOIN 常见示例对照表
  8. 小结

JOIN 基础概念

在 MySQL 中,JOIN 用于将两个或更多表的数据通过特定条件联合起来,以便查询和分析多个表中的相关数据。常见的 JOIN 类型有:

  • INNER JOIN:返回两个表中匹配的数据
  • LEFT JOIN:返回左表所有数据以及匹配的右表数据
  • RIGHT JOIN:返回右表所有数据以及匹配的左表数据
  • FULL JOIN:返回两个表中所有数据
  • SELF JOIN:将表与其自身连接

内连接(INNER JOIN)

INNER JOIN 是最常用的 JOIN 类型,它返回两个表中满足匹配条件的记录。如果表中某行没有匹配项,它就不会出现在结果集中。

语法

SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

示例

在这里插入图片描述
customers表:
在这里插入图片描述
orders表:在这里插入图片描述

SELECT orders.id, customers.name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.id;

查询 orders 表和 customers 表中匹配的记录,只返回那些有匹配 customer_id 的订单。
在这里插入图片描述


左连接(LEFT JOIN)

LEFT JOIN 返回左表中的所有记录,以及右表中匹配的记录。如果右表没有匹配项,结果中会显示 NULL

语法

SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;

示例

SELECT orders.id, customers.name
FROM orders
LEFT JOIN customers
ON orders.customer_id = customers.id;

查询所有订单,并显示相应的客户姓名。如果某些订单没有客户,则显示 NULL
在这里插入图片描述


右连接(RIGHT JOIN)

RIGHT JOIN 返回右表中的所有记录,以及左表中匹配的记录。如果左表没有匹配项,结果中会显示 NULL

语法

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;

示例

SELECT orders.id, customers.name
FROM orders
RIGHT JOIN customers
ON orders.customer_id = customers.id;

查询所有客户,以及他们的订单。如果某些客户没有订单,则订单部分显示 NULL
在这里插入图片描述


全连接(FULL JOIN)

FULL JOIN 返回两个表中所有的记录。如果某个表没有匹配项,结果中会显示 NULL。但是,MySQL 本身不支持 FULL JOIN,你可以通过 UNION 来模拟 FULL JOIN

示例

SELECT orders.id, customers.name
FROM orders
LEFT JOIN customers
ON orders.customer_id = customers.id
UNION
SELECT orders.id, customers.name
FROM orders
RIGHT JOIN customers
ON orders.customer_id = customers.id;

通过 UNIONLEFT JOINRIGHT JOIN 的结果合并,模拟 FULL JOIN
在这里插入图片描述


自连接(SELF JOIN)

SELF JOIN 是将表与其自身连接。通常用于处理与自身有关系的数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

语法

SELECT columns
FROM table1 AS t1, table1 AS t2
WHERE t1.column = t2.column;

示例

SELECT e1.name AS Employee, e2.name AS Manager
FROM employees e1
INNER JOIN employees e2
ON e1.manager_id = e2.id;

查询每个员工的姓名和经理的姓名,employees 表在这里自连接,e1e2 是两个别名。
在这里插入图片描述


JOIN 常见示例对照表

操作SQL 示例说明
内连接SELECT orders.id, customers.name FROM orders INNER JOIN customers ON orders.customer_id = customers.id;返回匹配的订单和客户数据
左连接SELECT orders.id, customers.name FROM orders LEFT JOIN customers ON orders.customer_id = customers.id;返回所有订单和匹配客户,缺少匹配时返回 NULL
右连接SELECT orders.id, customers.name FROM orders RIGHT JOIN customers ON orders.customer_id = customers.id;返回所有客户和匹配订单,缺少匹配时返回 NULL
全连接SELECT orders.id, customers.name FROM orders LEFT JOIN customers ON orders.customer_id = customers.id UNION SELECT orders.id, customers.name FROM orders RIGHT JOIN customers ON orders.customer_id = customers.id;模拟返回所有客户和所有订单
自连接SELECT e1.name AS Employee, e2.name AS Manager FROM employees e1 INNER JOIN employees e2 ON e1.manager_id = e2.id;查询员工及其经理

小结

本篇文章介绍了 MySQL 中的 表连接(JOIN),包括 INNER JOINLEFT JOINRIGHT JOINFULL JOINSELF JOIN 等常见连接方式。掌握这些基本操作,你将能够更高效地处理多表查询的需求。


📘 下一篇,我们将学习 MySQL 数据库设计与规范,帮助你设计高效且易于维护的数据库架构。

http://www.dtcms.com/a/399691.html

相关文章:

  • 德州有做网站的制作表白网站
  • 公司网站做推广成化区建设局网站
  • Openssl TRNG provider demo guide
  • 建立论坛网站做自己的网站不是免费的
  • 赵艳红网站建设规划卢松松博客源码 wordpress博客模板
  • IoT水利监控系统:从需求到实现的完整技术方案
  • 小杰机器学习(seven)——贝叶斯分类
  • 名作之壁吧网站建设参与网站网站建设可判几年
  • mobaxterm里面勾选了Follow terminal folder,但是不生效
  • 培训餐饮网站建设中企动力如何
  • vector的使用和模拟
  • 织梦网站栏目无法生成网站关键字多少个
  • n8n中的postgres节点中插入数据怎么自动插入,不设置id?
  • 全钢PVC防静电地板优势与不足全解析
  • 上海魔力网站建设公司免费制作链接的软件
  • 巅云建站企业购物平台
  • UMI企业智脑:数字资产与知识管理的行业新标杆
  • 北京 旅游攻略 颐和园 圆明园(第一天下午逛) 长城最后一天早上逛 如果到北京早 也可以第一天长城
  • 孝感做网站如何做网站视频模板
  • 网站开发成本有哪些idea 做网站登录
  • 网站推广在哪好外贸网站备案不成功的原因有哪些
  • 可以做锚文本链接的网站网站做下载wordpress
  • 创新型的网站建设wordpress滑动验证码
  • elasticsearch更换为opensearch
  • 微服务和大数据在架构上的相似之处
  • 专业优化网站建设襄城县城乡建设管理局网站
  • 电子商务网站设计的基本要求如何查看网站跳出率
  • 用vio_uart_rpc协议,测试IIC接口的AT24C64
  • 杭州网站快速备案正规电商培训班
  • 台州做网站多少钱镇江佳鑫网络科技有限公司