MySQL中基本的多表连接查询教程
什么是多表连接查询
MySQL中,多表连接查询是指通过查询多个表的关联关系,将它们联合起来进行查询,以得到更全面的数据结果。在实际中,多表连接查询经常被使用。
多表连接查询的基本语法
多表连接查询的基本语法如下:
SELECT column_name(s)
FROM table_1
JOIN table_2 ON table_1.column = table_2.column
WHERE condition
以上语句中,要查询的列名通过SELECT语句指定,从表格table_1和table_2中联合查询。通过JOIN ON语句定义联合的条件,用WHERE语句进行筛选。
多表连接查询类型
在MySQL中,多表连接查询主要分为以下四种类型:
- 内联接查询(INNER JOIN): 只返回两个表中共有的数据。
- 左外部链接查询(LEFT JOIN):返回从左表中检索到的全部行和从右表中检索到的被匹配行。
- 右外部链接查询(RIGHT JOIN):返回从右表中检索到的全部行和从左表中检索到的被匹配行。
- 全外部链接查询(FULL OUTER JOIN):返回左、右表中全部数据。
示例一:内联接查询
假如有两个表的结构分别如下:
students表
id | name | gender | department |
---|---|---|---|
1 | Tom | male | CS |
2 | Jerry | male | EE |
3 | Alice | female | CS |
4 | Lucy | female | Math |
scores表
id | math | english | physics |
---|---|---|---|
1 | 98 | 95 | 85 |
2 | 88 | 92 | 81 |
3 | 92 | 89 | 90 |
4 | 85 | 86 | 88 |
要查询每个学生的英语成绩,可以使用内联接方式实现:
SELECT students.name,scores.english
FROM students
INNER JOIN scores ON students.id=scores.id;
以上语句中,返回了学生姓名和英语考试成绩。
示例二:右外部链接查询
假如有两个表的结构分别如下:
users表
id | name | gender |
---|---|---|
1 | Tom | male |
2 | Jerry | male |
3 | Alice | female |
4 | Lucy | female |
5 | Jack | male |
orders表
id | user_id | order_time |
---|---|---|
1 | 2 | 2022-01-01 |
2 | 3 | 2022-01-02 |
3 | 2 | 2022-01-03 |
要查询所有用户及其订单情况(如果存在的话),可以使用右外部链接查询方式:
SELECT users.name, orders.id, orders.order_time
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;
以上语句中,返回所有用户以及对应的订单情况。如果某个用户没有任何订单信息,对应结果中将会用null值填充。
结论
以上是MySQL中多表连接查询的基本语法、类型和两个示例的说明。使用多表连接查询时需要注意的是:联合查询表的关系最好是一对多或者一一对应。如果目标是以精准查询为主,建议使用内联接查询方式。如果目标是展示完整数据集为主,用户数据质量可能会比较杂乱,建议使用外部连接查询方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL中基本的多表连接查询教程 - Python技术站