MySQL联合查询全解析:INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
31 浏览量
更新于2024-08-27
收藏 102KB PDF 举报
本文主要介绍了MySQL中两表联合查询的四种情况,包括普通的WHERE子句连接、INNER JOIN、LEFT JOIN、RIGHT JOIN以及FULL JOIN,并通过示例解释了各种连接方式的差异。
在数据库操作中,当需要从多个表中获取关联的数据时,联合查询是常用的方法。MySQL提供了多种方式来实现这个目的,主要分为以下四种:
1. 普通的WHERE子句连接:这是最基础的联接方式,通过在WHERE子句中指定两个表的关联条件,例如:
```sql
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
```
这种方式会返回Person表和Orders表中Id_P相等的记录组合。
2. INNER JOIN:INNER JOIN是另一种标准的联接方式,它只返回两个表中匹配的记录。INNER JOIN的语法更清晰,如下所示:
```sql
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
```
结果与普通的WHERE子句相同,都是返回有匹配项的记录。
3. LEFT JOIN(左连接):LEFT JOIN会返回所有左表(在本例中是Persons表)的记录,即使在右表(Orders表)中没有匹配的记录。对于右表中没有匹配的左表记录,结果将填充NULL值:
```sql
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
```
结果集中包含了所有Persons表的记录,即使某些人在Orders表中没有订单。
4. RIGHT JOIN(右连接):与LEFT JOIN相反,RIGHT JOIN返回所有右表(Orders表)的记录,即使在左表(Persons表)中没有匹配的记录。对于左表中没有匹配的右表记录,结果也会填充NULL:
```sql
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
```
结果集包含了所有Orders表的记录,即使某些订单没有对应的人。
5. FULL JOIN(全连接):FULL JOIN会返回左右两个表中所有匹配的记录,以及那些在另一个表中没有匹配的记录。在MySQL中,不直接支持FULL JOIN,但可以通过UNION ALL操作LEFT JOIN和RIGHT JOIN来达到类似的效果。
了解并熟练掌握这些联接类型对进行复杂的多表查询至关重要,它们可以帮助我们根据需求获取到完整或者部分匹配的数据。在实际应用中,应根据业务需求选择合适的联接方式,同时关注查询性能,适当使用索引和优化SQL语句,以提高查询效率。
2017-07-24 上传
123 浏览量
2023-08-16 上传
151 浏览量
2020-12-15 上传
2020-09-09 上传
2020-09-10 上传
2020-12-14 上传
2020-09-09 上传
weixin_38667581
- 粉丝: 8
- 资源: 955
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程