本次博客带领大家加强查询语句的使用。
使用where子句:
SELECT * FROM emp WHERE hiredate > '1992-01-01';
使用like操作符:%:表示0到多个字符 _ : 表示单个字符。
SELECT ename ,sal FROM emp WHERE ename LIKE 'S%';
SELECT ename ,sal FROM emp WHERE ename LIKE '__O%';
如何显示没有上级的雇员的情况。
SELECT * FROM emp WHERE mgr IS NULL;
DESC emp;
使用order by 子句:
SELECT * FROM emp ORDER BY sal;
SELECT * FROM emp ORDER BY deptno ASC,sal DESC;
分页查询:
基本语法:select ... limit start,rows 表示从start+1 行开始取,取出rows行,start 从0开始计算。
公式:select * from emp order by empno limit 每页显示记录数 * (第几页-1) , 每页显示记录数;
# 第一页
SELECT * FROM emp ORDER BY empno LIMIT 0,3;
# 第二页
SELECT * FROM emp ORDER BY empno LIMIT 3,3;
# 第三页
SELECT * FROM emp ORDER BY empno LIMIT 6,3;
SELECT * FROM emp ORDER BY empno DESC LIMIT 10,5;
SELECT * FROM emp ORDER BY empno DESC LIMIT 20,5;
增强group by 的使用:
SELECT COUNT(*), AVG(sal),job FROM emp GROUP BY job;
SELECT COUNT(*),COUNT(comm) FROM emp;
扩展:统计没有获得补助的雇员数。
SELECT COUNT(*),COUNT(IF(comm IS NULL,1,NULL)) FROM emp;
SELECT COUNT(*),COUNT(*) - COUNT(comm) FROM emp;
SELECT COUNT(DISTINCT mgr) FROM emp;
SELECT MAX(sal)-MIN(sal) FROM emp;
数据分组的总结:
如果select语句同时包含有group by,having,limit,order by,那么他们的顺序是group by,having,order by,limit。
案例:
SELECT deptno ,AVG(sal) FROM emp
GROUP BY deptno
HAVING AVG(sal) >1000
ORDER BY AVG(sal) DESC
LIMIT 0,2;