小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;