本次需要用到的两张表
字段控制查询
去重
select distinct sal from emp;
查看雇员的月薪与佣金之和
SELECT *,sal+IFNULL(comm,0) FROM emp;
排序
语法: order by 列名 asc/desc
查询所有学生记录,按年龄升序排序
select * from stu order by age asc;
查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序
select * from emp order by sal desc, empno asc;
聚合函数
聚合函数是用来做纵向运算的函数:
COUNT(列名):统计指定列不为NULL的记录行数;
MAX(列名):计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算; MIN(列名):计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算; SUM(列名):计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG(列名):计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
月薪与佣金之和大于2500的人数
select count(*) from emp where sal+IFNULL(comm,0)>2500;
查询有佣金的人数,以及有领导的人数
select count(comm),count(mgr) from emp;
查询所有雇员月薪和
select sum(sal) from emp;
查询所有雇员月薪+佣金和
select sum(sal+IFNULL(comm,0)) from emp;
查询最高和最低工资
select max(sal) 最高 ,min(sal) 最低 from emp;
查询平均工资
select avg(sal) from emp;
分组查询
需要分组查询时需要使用GROUP BY子句
查询每个部门编号以及每个部门工资大于1500的人数
select deptno,count(*) from emp where sal>1500 group by deptno;
查询工资总和大于8000的部门编号以及工资和
select deptno,sum(sal) from emp GROUP BY deptno HAVING sum(sal)>8000;
limit
查询10行记录,起始行从3开始
select * from emp limit 3,10;