A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在查询之前,我们也先准备好一些数据

数据如下

DQL 排序查询

下图为最后一条 sql 语句排序的结果集

DQL 聚合函数
聚合函数指在查询数据时可以将一列数据进行纵向的计算。掌握下面几个聚合函
数。


-- 聚合函数查询的语法 SELECT 聚合函数(列名) FROM 表名
COUNT 函数
-- 注意:如果类中有 NULL 值,不算个数
-- 求 student 表中 math 列有多少条记录,结果为 8
SELECT COUNT(math) FROM student;
-- 求 student 表中 english 列有多少条记录,结果为 7,因为有一个 NULL 值
SELECT COUNT(english) FROM student;
-- 查询所有列个数【比较常用】
SELECT COUNT(*) FROM student;
执行结果为

MIN 函数
--查询 math 的最小值SELECT MIN(math) FROM studen
SELECT MIN(math) FROM student;

MAX 函数
-- 查询 math 的最大值
SELECT MAX(math) FROM student;


SUM 函数
-- 查询 math 的和
SELECT SUM(math) FROM student;

AVG 函数
-- 查询 math 的平均值
SELECT AVG(math) FROM student;

DQL 分组查询
按照特定条件把数据进行分组,把每一组当做一个整体,分别对某一组数据进行
计算。
分组查询语法,字段列表只能是分组列、或者聚合函数 SELECT 字段列表 FROM 表名 where 分组前条件
GROUP BY 分组列名 HAVING 分组后条件
对所有数据分组查询
-- 按姓别进行分别,查询男、女的 math 的平均值
SELECT sex,AVG(math) FROM student GROUP BY sex;
-- 按性别进行分组,查询男、女同学的 math 平均分,和人数 SELECT sex, AVG(math), COUNT(id) FROM
student GROUP BY sex;


分组前筛选
-- 分组前进行筛选使用 where 子句-- 对>70 分的人按照性别进行分组,查询男、女同学的 math 平均分和人数
SELECT sex, AVG(math),COUNT(id) FROM student WHERE math>70 GROUP BY sex;

分组后筛选
-- 分组后再进行筛选,使用 having 子句-- 对>70 分的人按照性别进行分组,查询男、女同学的 math 平均分
和人数,再筛选人数>2 的数据
SELECT sex, AVG(math),COUNT(id) FROM student WHERE math>70 GROUP BY sex HAVING COUNT(id)>2;
-- 可以使用 AS 语句给聚合函数取别名,改进上面的 sql 语句
SELECT sex, AVG(math) AS 平均分,COUNT(id) AS 个数 FROM student WHERE math>70 GROUP BY sex HAVING
个数>2;


DQL 分页查询
分页查询指当要查询的数据量比较多的时候,采用一次查询固定条记录的方式。
-- 开始索引=(当前页码-1)*个数
select 字段列表 from 表名 limit 开始索引,个数
-- 查询 0 索引开始的 3 条记录
SELECT * FROM student LIMIT 0,3; -- 第 1 页

-- 查询 3 索引开始的 3 条记录
SELECT * FROM student LIMIT 3,3; -- 第 2 页

-- 查询 6 索引开始的 3 条记录
SELECT * FROM student LIMIT 6,3; -- 第 3 页









0 个回复

您需要登录后才可以回帖 登录 | 加入黑马