文章目录
1.操作单表
1. 创建数据库,复制表
1)创建一个数据库db2
CREATE DATABASE db2 CHARACTER SET utf8;
2)将db1数据库中的 emp表 复制到当前 db2数据库;
2. 排序
通过 ORDER BY 子句,可以将查询出的结果进行排序(排序只是显示效果,不会影响真实数据)
语法格式:SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名 [ASC / DESC]。
注意:
- ASC 表示升序排序(默认)
- DESC 表示降序排序
单列排序-----只按照某一个字段进行排序, 就是单列排序
案例:使用 salary 字段,对emp 表数据进行排序 (升序/降序)
-- 默认升序排序 ASC
SELECT * FROM emp ORDER BY salary;
-- 降序排序
SELECT * FROM emp ORDER BY salary DESC;
组合排序----同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推
案例:在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以id 做降序排序
-- 组合排序
SELECT * FROM emp ORDER BY salary DESC, eid DESC;
3.聚合函数
- 作用:将一列数据作为一个整体,进行纵向的计算。
- 常用的聚合函数:
1)count(字段) 统计记录数
2)sum(字段) 求和操作
3)max(字段)求最大值操作
4)min(字段)求最小值操作
5)avg(字段)求平均值操作 - 语法格式:SELECT 聚合函数(字段名) FROM 表名;
案例: - 1 查询员工的总数
- 2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
- 3 查询薪水大于4000员工的个数
- 4 查询部门为’教学部’的所有员工的个数
- 5 查询部门为’市场部’所有员工的平均薪水
#1 查询员工的总数
-- 统计表中的记录条数 使用 count()
SELECT COUNT(eid) FROM emp; -- 使用某一个字段
SELECT COUNT(*) FROM emp; -- 使用 *
SELECT COUNT(1) FROM emp; -- 使用 1,与 * 效果一样
-- 下面这条SQL 得到的总条数不准确,因为count函数忽略了空值
-- 所以使用时注意不要使用带有null的列进行统计
SELECT COUNT(dept_name) FROM emp;
#2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
-- sum函数求和, max函数求最大, min函数求最小, avg函数求平均值
SELECT
SUM(salary) AS '总薪水',
MAX(salary) AS '最高薪水',
MIN(salary) AS '最低薪水',
AVG(salary) AS '平均薪水'
FROM emp;
#3 查询薪水大于4000员工的个数
SELECT COUNT(*) FROM emp WHERE salary > 4000;
#4 查询部门为'教学部'的所有员工的个数
SELECT COUNT(*) FROM emp WHERE dept_name = '教学部';
#5 查询部门为'市场部'所有员工的平均薪水
SELECT
AVG(salary) AS '市场部平均薪资'
FROM emp
WHERE dept_name = '市场部';
4.分组查询
分组查询指的是使用 GROUP BY 语句,对查询的信息进行分组,相同数据作为一组
- 语法格式:SELECT 分组字段/聚合函数 FROM 表名 GROUP BY 分组字段 [HAVING 条件];
案例:
-- 按照性别进行分组操作
SELECT * FROM emp GROUP BY sex; -- 注意 这样写没有意义
分组的过程:
注意:
- 分组时可以查询要分组的字段, 或者使用聚合函数进行统计操作.
- 查询其他字段没有意义
案例:通过性别字段 进行分组,求各组的平均薪资
# 通过性别字段 进行分组,求各组的平均薪资
SELECT sex, AVG(salary) FROM emp GROUP BY sex;
#1.查询所有部门信息
#2.查询每个部门的平均薪资
#3.查询每个部门的平均薪资, 部门名称不能为null
#1. 查询有几个部门
SELECT dept_name AS '部门名称' FROM emp GROUP BY dept_name;
#2.查询每个部门的平均薪资
SELECT
dept_name AS '部门名称',
AVG(salary) AS '平均薪资'