MySQL高级进阶SQL语句总结大全
这篇文章主要介绍MySQL高级进阶SQL语句的总结大全,包括常用的高级SQL语句的使用方法和示例。
一、排序
1.1 ORDER BY
- 用法:
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ... [ASC|DESC]
- 示例:假设有一个student表,其中包含3个字段,分别为id(学生编号)、name(姓名)和age(年龄),如果要按照age从大到小的顺序和id从小到大的顺序排列,则可以这样写:
SELECT * FROM student ORDER BY age DESC, id ASC;
1.2 GROUP BY
- 用法:
GROUP BY column1, column2, ...
- 示例:假设有一个score表,其中包含3个字段,分别为id(学生编号)、subject(科目)和score(分数),如果要按照subject分组,并统计每个分组内的总分数,则可以这样写:
SELECT subject, SUM(score) AS total_score FROM score GROUP BY subject;
二、子查询
2.1 IN / NOT IN
- 用法:
SELECT column1, column2, ... FROM table_name WHERE column_name [NOT] IN (SELECT column_name FROM table_name WHERE condition)
- 示例:假设有一个score表和一个student表,其中score表包含3个字段(id、subject、score),student表包含2个字段(id、name),如果要查询所有选了数学(Math)课的学生信息,则可以这样写:
SELECT * FROM student WHERE id IN (SELECT id FROM score WHERE subject = 'Math');
2.2 EXISTS / NOT EXISTS
- 用法:
SELECT column1, column2, ... FROM table_name1 WHERE [NOT] EXISTS (SELECT column_name FROM table_name2 WHERE condition)
- 示例:假设有一个score表和一个student表,其中score表包含3个字段(id、subject、score),student表包含2个字段(id、name),如果要查询所有有成绩记录的学生信息,则可以这样写:
SELECT * FROM student WHERE EXISTS (SELECT id FROM score WHERE id = student.id);
三、连接
3.1 JOIN
- 用法:
SELECT column1, column2, ... FROM table_name1 JOIN table_name2 ON condition
- 示例:假设有一个score表和一个student表,其中score表包含3个字段(id、subject、score),student表包含2个字段(id、name),如果要查询每个学生选了哪些课以及各自的分数,则可以这样写:
SELECT student.name, score.subject, score.score
FROM student JOIN score ON student.id = score.id;
3.2 LEFT JOIN
- 用法:
SELECT column1, column2, ... FROM table_name1 LEFT JOIN table_name2 ON condition
- 示例:假设有一个student表和一个score表,其中student表包含2个字段(id、name),score表包含3个字段(id、subject、score),如果要查询所有学生的信息以及他们选的课程和成绩(如果没有成绩,则分数为0),则可以这样写:
SELECT student.name, IFNULL(score.subject, 'N/A') AS subject, IFNULL(score.score, 0) AS score
FROM student LEFT JOIN score ON student.id = score.id;
四、函数
4.1 COUNT
- 用法:
SELECT COUNT(column_name) FROM table_name WHERE condition
- 示例:假设有一个score表,其中包含3个字段,分别为id、subject和score,如果要查询选了数学课的学生人数,则可以这样写:
SELECT COUNT(DISTINCT id) FROM score WHERE subject = 'Math';
4.2 AVG
- 用法:
SELECT AVG(column_name) FROM table_name WHERE condition
- 示例:假设有一个score表,其中包含3个字段,分别为id、subject和score,如果要查询数学课的平均成绩,则可以这样写:
SELECT AVG(score) FROM score WHERE subject = 'Math';
以上就是MySQL高级进阶SQL语句的总结大全,希望能对大家的学习有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL高级进阶sql语句总结大全 - Python技术站