表结构
SELECT * from emp;
# 查询学号在1-3范围内的字段
select * from emp where id in (1,2,3);
# 判断年龄是不是空的字段
select * from emp where age is not null;
#判断 有多少类型的薪水,分别显示
select distinct sal from emp ;
#判断薪水的个数,用聚合函数count(); 共6中,符合要求
select count(distinct sal) from emp;
# 模糊查询,分别用_ 和% ,前者匹配一个字段,后面的匹配0到n个字段;
# 查询姓名含有l的人数
select count(*) from emp where name like '%l%';
# 虚表
# 查询 age+ sal 作为新的一栏;
SELECT * , age+ sal as '新栏目' from emp ;
# as 方法给列添加别名;
# 排序,orderby ,example: ORDER BY age asc, order by age desc;
# 按照薪水从大到小排序,相同薪水按照年龄降序排序;
select * from emp order by sal asc, age desc;
# 常用聚合函数,count(), sum(), avg(),max() ; min();
# IFNULL(属性字段,0) ,该属性字段如果是空,按照数字 0 进行处理
select *, sal as '薪水' from emp;
select * , ifnull( sal ,0) as 'totol' from emp;
# 计算所有的薪水,
select sum(sal) from emp;
select sum(ifnull(sal,0)) from emp;
# 上面两个是等价的;
# 计算和;等价
select sum(sal) + sum(age) from emp;
select sum(sal +IFNULL(sal,0) ) from emp;
# 计算平均工资;
select avg(sal) from emp;
# 查询员工的最高工资和最低工资;
select max(sal) ,min(sal) from emp;
# 分组查询,group bY;
# 查询每个年龄的工资和;
select * from emp GROUP BY age; # 这个重复的年龄pass 吊;
# select age, sum(sal) from emp group by age ; # 这里面的求和是按照年龄段来求和的
# 查询每个工资的 人数;
select sal ,count(age) from emp group by sal;
# 插叙 10000和上面 工资的每个 年龄段的人数
select sal, COUNT(age) from emp where sal>= 10000 group by sal;
# 上面是是按照分组查询,分组 后再查询;(相同组内查询);
# HAVING 对分组后的 数据 进行过滤, 其中 where是对分组前的数据 进行过滤;
# having 的使用;
# 看截图
# LIMIT 方言,这个是mysql独有的, 功能是 用于分页显示数 剧;
# 比如分页, 每页 显示 5条 数据 ;
select * from emp ; #9 条数据;
select * from emp limit 0,5; # 5代表查询一次多少数据,0 是索引;(代表第一行);
# 第二页数据;
select * from emp limit 5,5; #没有 5个数据所以显示4个数据;
本个图片形象的展示的having 和where 的区别