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 表示降序排序
排序方式
1) 单列排序
只按照某一个字段进行排序, 就是单列排序
需求1:
使用 salary 字段,对emp 表数据进行排序 (升序/降序)
-- 默认升序排序 ASC
SELECT * FROM emp ORDER BY salary; -- 降序排序 SELECT * FROM emp ORDER BY salary DESC;
2) 组合排序
同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推
需求2:
在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以id 做降序排序
-- 组合排序 SELECT * FROM emp ORDER BY salary DESC, eid DESC;
3 聚合函数
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,
而使用聚合函数查询:是纵向 查询,它是对某一列的值进行计算,然后返回一个单一的值(另外,聚合函数会忽略null空值。);
语法结构
SELECT 聚合函数(字段名) FROM 表名;
我们来学习5个聚合函数
聚合函数 |
作用 |
count(字段) |
统计指定列不为NULL的记录行数 |
sum(字段) | 计算指定列的数值和 |
max(字段) |
计算指定列的最大值 |
min(字段) |
计算指定列的最小值 |
avg(字段) |
计算指定列的平均值 |
需求1:
#1 查询员工的总数 #2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值 #3 查询薪水大于4000员工的个数 #4 查询部门为‘教学部‘的所有员工的个数 #5 查询部门为‘市场部‘所有员工的平均薪水
SQL实现
#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 = ‘市场部‘;