-- 使用where子句-- ?如何查找1992.1.1后入职的员工SELECT * FROM empWHERE hiredate > '1992-01-01';-- 如何使用like操作符 (模糊查询)-- %: 表示0到多个任意字符, _: 表示单个字符-- ?如何显示首字符为S的员工和工资SELECT ename, sal FROM empWHERE ename LIKE 'S%' ;-- ?如何显示第三个字符为大写o的所有员工的姓名和工资SELECT ename, sal FROM empWHERE ename LIKE '__o%';-- 如何显示没有上级的雇员的情况SELECT * FROM empWHERE mgr IS NULL-- 查询表结构DESC emp-- 使用order by子句, 默认为ASC升序-- ?如何按照部门号由低到高的排序【升序】,显示雇员信息SELECT * FROM empORDER BY deptno ASC;-- ? 按照部门号升序,且雇员工资降序排列,显示雇员信息SELECT * FROM empORDER BY deptno ASC, sal DESC;

GROUP BY 是mysql中进行分级统计操作的语句,即把表中「特征相同」的数据归为一组,然后对每一组做统计计算。核心要点是,GROUP BY 不能单独用,必须配合聚合函数做统计!常用 5 个聚合函数为COUNT(*)、SUM(字段)、AVG(字段)、MAX(字段)、MIN(字段)。下面来看四个例子:-- (1)显示每种岗位的雇员总数、平均工资。SELECT COUNT(*),FORMAT(AVG(sal),2) AS avg_salary,jobFROM empGROUP BY job

-- (2)显示雇员总数,以及获得补助的员工数。-- 思路:获得补助的雇员数,就是comm列为非null,就是count(列)-- 如果该列值为null,不会统计SELECT COUNT(*),COUNT(comm)FROM emp-- (2.1)拓展:统计没有获得补助的雇员数SELECT COUNT(*),COUNT(IF(comm IS NULL, 1, NULL))FROM empSELECT COUNT(*), COUNT(*)-COUNT(comm)FROM emp


-- (3)显示管理者的总人数。SELECT COUNT(DISTINCT mgr)FROM emp-- (4)显示雇员工资的最大差值。SELECT MAX(sal) - MIN(sal)FROM emp
SELECT COUNT(*),FORMAT(AVG(sal),2) AS avg_salary,jobFROM empGROUP BY job-- 提炼成标准语句SELECT 聚合函数, 分组列FROM 表名GROUP BY 分组列
-- 用法一,取前N条数据LIMIT 数字;-- 用法二,分页显示从第几条数据开始,一页显示多少条LIMIT 起始位置, 每页条数;
-- 第1页SELECT * FROM empORDER BY empnoLIMIT 0, 3-- 第2页SELECT * FROM empORDER BY empnoLIMIT 3, 3-- 第3页SELECT * FROM empORDER BY empnoLIMIT 6, 3



应用: 统计各个部门中哪些部门的平均工资avg大于1000,按照平均工资从高到低排序,并取出前两行记录。我们可以对这个问题进行拆解,
(1) 统计各个部门y的平均工资avg,需要group by
(2)并且大于1000的,需要having
(3)还要按照平均工资从高到低排序,需要order by
(4)取出前两行记录,需要 limit
SELECT deptno, AVG(sal) AS avg_salFROM empGROUP BY deptnoHAVING avg_sal > 1000ORDER BY avg_sal DESCLIMIT 0, 2