小tips:在MySQL查询中,有固定的顺序关键字,比如以下格式
select
查询内容
from
来自哪里
where
条件语句
group by
分组
having
二次过滤并且必须和group by联动使用
order by
排序(默认asc升序,desc降序)
一.select的简单查询
注:所有Select语句只会修改显示,不会影响原表单
1.查询表单A的所有信息
select * from A;
2.查询表单A的某列
select 列名 from A;
3.查询表单A的某列,某列,某列..
select 列名,列名,列名,... from A;
4.查询表单A的某列以不重复的形式,distinct把查询结果去重
select distinct 列名 from 表单A;
注意:其中含有聚合函数部分:
1.count()函数,记录某字段的数据条数
例如:查询表单A中age为10的人数
select count(age) as personNum from 表单A where age = 10;
2.sum()函数,计算某字段的数据相加总数
例如:查询表单A中所有age相加后的数为多少
select sum(age) from 表单A;
3.avg()函数,计算某字段的数据平均值
例如:查询表单A中age的平均值
select avg(age) from 表单A;
4.max()/min()函数,查询某字段中的最大最小值
二.where条件查询
1.in(指定内容) 查询表单A中年龄为10,15的所有信息
select
*
from
表单A
where
age in(10,15);
2.between and 查询表单A中年龄从10~20的所有信息
select
*
from
表单A
where
age between 10 and 20;
3.is(not) null 查询表单A中年龄空NULL或非空的记录
select
*
from
表单A
where
age is (not) null;
4.like 模糊查询 %代表正则里的所有,_代表一个占位
例如:查询表单A中年龄中以1开头的
select * from 表单A where age like '1%';
例如:查询表单A中年龄的第二位数是1的
select * from 表单A where age like '_1%';
5.and 且 / or 或
注意:and优先级高于or,同时出现的时候要用()来按情况划分
三.group by 分组
注意:在出现group by 分组时,select 后面只能跟group by 分组的字段 以及分组函数那5个(count,sum,max,min,avg)
分组的意义:同值类型合并归类
1.找出表单B中每个部门的最高工资
select max(工资) from 表单B group by 部门.
思路:将表单B中的部门进行分组,相同的部分划分为同一组,然后使用max()函数进行求最大值
2.找出表单B中每个部门的每个岗位的最高工资
select 部门,岗位,max(工资) from 表单B group by 部门,岗位
注意:在group by 后面可以更having进行二次过滤!!!
并且having不能单独使用,不可以替代where,必须和group by 联合使用。
1.找出表单B中每个部门的最高工资,要求显示工资是大于3000的
select
max(工资)
from
表单B
group by
部门
having
max(工资)>3000;
四.order by 排序
注:升序用asc,降序用desc,默认asc
select ... from ... where ... order by age asc; //排序为升序,从上到下,从小变大
select ... from ... where ... order by age desc; //降序
select ... from ... where ... order by age asc,id desc; //先按照age升序,出现相同时按照id降序来排
五.limit 限制查询
注:limit 偏移量m,记录数n 表示包含m+1开始的n条数据
例子:查询表单A中年龄最大的人的id和name
`select id,name from 表单A order by age desc limit 1;