下面是针对“详解MySQL中的分组查询与连接查询语句”的完整攻略:
分组查询
在MySQL中,使用GROUP BY关键字可以对查询的结果集进行分组。
语法
SELECT col_name1, col_name2, ...
FROM table_name
GROUP BY col_name1, col_name2, ...;
示例说明
考虑下面这个表:
students
+----+---------+-------+
| id | name | score |
+----+---------+-------+
| 1 | Alice | 90 |
| 2 | Bob | 85 |
| 3 | Charlie | 92 |
| 4 | Alice | 87 |
| 5 | Alice | 95 |
| 6 | Charlie | 88 |
+----+---------+-------+
我们想要根据学生的名字统计每个学生的平均成绩。可以使用如下语句:
SELECT name, AVG(score) AS avg_score
FROM students
GROUP BY name;
执行后的结果如下:
+---------+-----------+
| name | avg_score |
+---------+-----------+
| Alice | 90.67 |
| Bob | 85.00 |
| Charlie | 90.00 |
+---------+-----------+
连接查询
在MySQL中,使用JOIN关键字可以进行多表连接查询。常用的连接方式有:内连接、左连接、右连接和全连接。
语法
内连接
内连接(INNER JOIN)是指在两个表中,只有在连接条件上符合条件的数据才会被检索出来。
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
左连接
左连接(LEFT JOIN)是对左边的表进行连接,即便右表中没有相匹配的值也会输出左表中的全部值。
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
右连接
右连接(RIGHT JOIN)是对右边的表进行连接,即便左表中没有相匹配的值也会输出右表中的全部值。
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
全连接
全连接(FULL OUTER JOIN)是左右两表的连接结果集合,如果左表或右表没有相匹配的数据,填充NULL值。
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name;
示例说明
考虑下面两个表:
students
+----+-----------+-------+
| id | name | score |
+----+-----------+-------+
| 1 | Alice | 90 |
| 2 | Bob | 85 |
| 3 | Charlie | 92 |
| 4 | Dave | 87 |
+----+-----------+-------+
courses
+----+---------------+
| id | course_name |
+----+---------------+
| 1 | Math |
| 2 | English |
| 3 | History |
+----+---------------+
我们想要查询每个学生选修的课程。可以使用如下语句:
SELECT students.name, courses.course_name
FROM students
LEFT JOIN courses ON students.id = courses.id;
执行后的结果如下:
+-----------+-------------+
| name | course_name |
+-----------+-------------+
| Alice | Math |
| Bob | English |
| Charlie | History |
| Dave | NULL |
+-----------+-------------+
在这个例子中,我们使用了左连接,它包含了学生表中所有的行,也包含了那些没有匹配的课程行(例如,表courses中不存在id为4的记录)。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解MySQL中的分组查询与连接查询语句 - Python技术站