【第二阶段 | MySQL语句详解=核心查询=单表查询】

创建时间: 2021/4/13 20:53
更新时间: 2021/4/13 23:12
作者: 云雲

核心查询:排序、分组、聚合、多表查询、合并查询、子查询

排序 ORDER BY

语法:SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名 [ASC / DESC]

单列排序

需求1:使用 salary 字段,对emp 表数据进行排序 (升序/降序)
— 默认升序排序 ASC SELECT FROM emp ORDER BY salary; — 降序排序 SELECT FROM emp ORDER BY salary DESC;

组合排序

同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推
需求2:在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以id 做降序排序
— 组合排序 SELECT * FROM emp ORDER BY salary DESC, eid DESC;

聚合函数

聚合函数是对某一列的值进行计算,然后返回单一值。

聚合函数 功能
count 统计指定列不为null的行数
sum 求和
max 求最大值
min 最小值
avg 平均值

1 查询员工的总数 select count() from emp; select count(1) from emp; select count(eid) from emp; — count函数会忽略空值 #2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值 select sum(salary),max(salary),min(salary),avg(salary)from emp; #3 查询薪水大于4000员工的个数 select count() from emp where salary>4000 ; #4 查询部门为’教学部’的所有员工的个数 select count(*) from emp where dept_name = ‘教学部’; #5 查询部门为’市场部’所有员工的平均薪水 select avg(salary) from emp where dept_name = ‘教学

分组

分组查询指的是使用 GROUP BY 语句,对查询的信息进行分组,相同数据作为一组
— 语法 SELECT 分组字段/聚合函数 FROM 表名 GROUP BY 分组字段 [HAVING 条件];
— 需求1: 通过性别字段 进行分组 select * from emp group by sex; — 没有实际意义 — 需求2: 通过性别字段 进行分组,求各组的平均薪资 select sex,avg(salary) from emp group by sex;
#1.查询每个部门的平均薪资 select dept_name,avg(salary) from emp group by dept_name; #2.查询每个部门的平均薪资, 部门名称不能为null select dept_name,avg(salary) from emp where dept_name is not null group by dept_name; # 查询平均薪资大于6000的部门. select dept_name,avg(salary) from emp where dept_name is not null group by dept_name HAVING avg(salary)>6000 ;

limit关键字

limit 关键字的作用
limit是限制的意思,用于 限制返回的查询结果的行数 (可以通过limit指定查询多少行数据)

limit 语法是 MySql的方言,用来完成分页