MySQL联表查询是一种在多个表中查询数据的方法,它可以帮助我们轻松实现多表关联操作,联表查询主要有以下几种类型:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN),下面将详细讲解这些类型的用法。
1、内连接(INNER JOIN)
内连接是最常用的连接类型,它返回两个表中满足连接条件的所有记录,如果某个记录在另一个表中没有匹配的记录,则不会显示该记录。
语法:
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
示例:
假设有两个表,一个是学生表(student),一个是成绩表(score):
学生表(student):
id | name |
1 | 小明 |
2 | 小红 |
3 | 小刚 |
成绩表(score):
id | student_id | subject | score |
1 | 1 | 语文 | 80 |
2 | 1 | 数学 | 90 |
3 | 2 | 语文 | 85 |
4 | 2 | 数学 | 95 |
查询学生姓名和他们的语文成绩:
SELECT student.name, score.subject, score.score FROM student INNER JOIN score ON student.id = score.student_id WHERE score.subject = '语文';
结果:
name | subject | score |
小明 | 语文 | 80 |
小红 | 语文 | 85 |
2、左连接(LEFT JOIN)
左连接返回左表中的所有记录,以及右表中满足连接条件的记录,如果在右表中没有匹配的记录,则显示为NULL。
语法:
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
示例:
查询所有学生的姓名和他们的数学成绩(如果没有数学成绩,则显示为NULL):
SELECT student.name, score.subject, score.score FROM student LEFT JOIN score ON student.id = score.student_id WHERE score.subject = '数学';
结果:
name | subject | score |
小明 | 数学 | 90 |
小红 | 数学 | 95 |
小刚 | NULL | NULL |
3、右连接(RIGHT JOIN)
右连接返回右表中的所有记录,以及左表中满足连接条件的记录,如果在左表中没有匹配的记录,则显示为NULL。
语法:
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
4、全连接(FULL JOIN)
全连接返回两个表中满足连接条件的所有记录,如果某个记录在另一个表中没有匹配的记录,则显示为NULL。
语法:
SELECT column_name(s) FROM table1 FULL JOIN table2 ON table1.column_name = table2.column_name;
MySQL联表查询可以帮助我们轻松实现多表关联操作,通过使用不同类型的连接,我们可以根据需要获取所需的数据,在实际使用中,还可以结合其他SQL语句,如分组、排序等,以实现更复杂的查询需求。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/517746.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复