MySQL语法之DQL操作详解
DQL是MySQL中的数据查询语言,其目的是从数据库中获取数据。本篇文章将会详细介绍MySQL的DQL操作,包括查询语句、排序、限制、分组、聚合等内容。
查询语句
在MySQL中,最基本的查询语句是SELECT
,其语法如下:
SELECT column1, column2, ...
FROM table_name
其中column1, column2,...
为需要查询的列名,用逗号隔开;table_name
为需要操作的表名。
例如我们有一张名为students
的表,其包括id, name, gender, age
四列,我们需要查询全部的数据,可以使用如下语句:
SELECT *
FROM students
结果将会返回students
表中的所有数据。
排序
当我们查询数据时,通常需要对结果进行排序。MySQL提供了ORDER BY
语句实现排序,其语法如下:
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC
其中column1, column2,...
为需要排序的列名,用逗号隔开;ASC|DESC
为排序方式,其中ASC
为升序排列,DESC
为降序排列(默认为升序排列)。
例如我们需要查询students
表中,按照age
列升序排列的数据,可以使用如下语句:
SELECT *
FROM students
ORDER BY age ASC
结果将会返回students
表按照age
列升序排列的所有数据。
限制
当我们查询数据时,通常需要对结果进行限制。MySQL提供了LIMIT
语句实现限制,其语法如下:
SELECT column1, column2, ...
FROM table_name
LIMIT start, count
其中start
表示从第几条数据开始查询,count
表示查询的数据条数。
例如我们需要查询students
表中,按照age
列升序排列的前10条数据,可以使用如下语句:
SELECT *
FROM students
ORDER BY age ASC
LIMIT 0, 10
结果将会返回students
表按照age
列升序排列的前10条数据。
分组
当我们查询数据时,有时需要对数据进行分组。MySQL提供了GROUP BY
语句实现分组,其语法如下:
SELECT column1, column2, ...
FROM table_name
GROUP BY column1, column2, ...
其中column1, column2,...
为需要分组的列名,用逗号隔开。
例如我们有一张名为scores
的表,其包括id, student_id, subject_id, score
四列,我们需要统计每个学生的平均分,可以使用如下语句:
SELECT student_id, AVG(score) as avg_score
FROM scores
GROUP BY student_id
ORDER BY avg_score DESC
结果将会返回每个学生的平均分,按照平均分降序排列。
聚合
当我们查询数据时,有时需要对数据进行聚合操作。MySQL提供了聚合函数实现聚合,常用的聚合函数包括SUM
、AVG
、MAX
、MIN
等,其语法如下:
SELECT aggregate_function(column1), aggregate_function(column2), ...
FROM table_name
其中aggregate_function
为聚合函数,column1, column2,...
为需要聚合的列名,用逗号隔开。
例如我们需要查询scores
表中,所有学生的总分和平均分,可以使用如下语句:
SELECT SUM(score) as total_score, AVG(score) as avg_score
FROM scores
结果将会返回所有学生的总分和平均分。
总结
以上为MySQL的DQL操作详解,包括查询语句、排序、限制、分组、聚合等。通常我们需要使用多条语句组合实现复杂的查询操作,例如需要查询某个学生的历史数据,可以先使用SELECT
将该学生的所有数据查询出来,再使用ORDER BY
和LIMIT
进行排序和限制。
示例1:
-- 查询学号为123的学生的所有成绩,按照科目id升序排列
SELECT *
FROM scores
WHERE student_id = 123
ORDER BY subject_id ASC
示例2:
-- 查询各科平均分最高的学生,按照各科平均分降序排列
SELECT student_id, AVG(score) as avg_score
FROM scores
GROUP BY student_id
ORDER BY avg_score DESC
LIMIT 0, 3
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql语法之DQL操作详解 - Python技术站