MySQL基础语法之单表查询
总结了 MySQL 中对一张表进行查询操作的语法
简单查询
基本语法
select 字段,字段,字段,...
from 表名;
- 查询一个字段
select name from user
- 查询多个字段
select name,age,id from user
- 查询所有字段
select * from user
条件查询
基本语法
执行顺序 from > where > select
select 字段,字段,字段,...
from 表名
where 条件;
- 等号操作符
select name,age
from user
where id = 1;
- 不等操作符
不等操作有两种,分别是 != 和 <>
select name,age
from user
where id != 1; 或者 id <> 1;
- between…and…操作符
select name,age
from user
where id between 1 and 3; //表示id在1到3之间的所有数据
- is null 和 is not null
select name,age
from user
where
id is null; //显示id为空的所有数据
id is not null; //显示id不为空的所有数据
- and 的使用
select name,age
from user
where id = 1 and sex = '男'; //将两个条件并起来查询数据
- or 的使用
select name,age
from user
where id = 1 or id = 3; //将id为1或id为3的数据都查询出来
- in 和 not in 的使用
select name,age
from user
where id in (1,3); //将id为1或id为3的数据都查询出来 跟or的用法差不多
- like 的使用
Like 可以实现模糊查询,like 支持%和下划线匹配;
%匹配任意字符出现的个数;
下划线只匹配一个字符;
如果查询的数据中存在下划线 并且要查询这个数据 那么需要转义字符加下划线来表示。
select name,age
from user
where
name like '王%'; //将王姓的全部查询出来
name like '%明%'; //将名字中存在明的全部查询出来
name like '_明%' //将第二个字为明的全部查出来
name like '%\_%' //将名字中有下划线的全部查出来
数据排序查询
基本语法
执行顺序 from > where > select > order by
select 字段,字段,字段,...
from 表名
where 条件
order by 要排序的字段
- 单一字段升序、降序查询
没有条件
select name,age
from user
order by
id ; //根据 id 升序查询(不写默认升序)
id asc; //根据 id 升序查询
id desc; //根据 id 降序查询
有条件
select name,age
from user
where id > 1 //id 大于1后再查询
order by
id ; //根据 id 升序查询(不写默认升序)
id asc; //根据 id 升序查询
id desc; //根据 id 降序查询
- 多个字段升序、降序查询
没有条件(可以存在条件)
select name,age
from user
order by
id , age desc; //先左再右 先 id 升序,后 age 将序(不写默认升序)
id asc,age desc;
id desc,age asc;
聚合函数的使用
函数 | 使用 |
---|---|
max | 取某个字段的最大值 |
min | 取某给字段的最小值 |
sum | 取某个字段的总和 |
count | 取得记录数 |
avg | 取某个字段的平均数 |
基本语法
select 函数(字段),函数(字段),字段,...
from 表名
select max(age)
from user //取得年龄的最大值
其它函数一样使用
select max(age),sum(age)
from user //取得年龄的最大值和年龄之和
分组查询
基本语法
执行顺序 from > where > group by > select
如果需要排序
执行顺序 from > where > group by > select > order by (排序总是在最后)
分组是基于聚合函数查询的
- group by 的使用
select 字段,函数(字段)
from 表名
where 条件 // (如果要加上条件就加上条件)
group by 字段
order by 字段; // (如果要排序就加上排序)
测试
select class_name,avg(age)
from user
group by class_name; //查询每个班级的平均年龄
select class_name,avg(age)
from user
where age > 18;
group by class_name; //查询每个班级的18岁之后平均年龄
- having 的使用
select 字段,函数(字段)
from 表名
where 条件 //(如果要加上条件就加上条件)
group by 字段
having 条件 //(看情况而定加还是不加)
order by 字段; //(如果要排序就加上排序)
测试
select class_name,avg(age)
from user
group by class_name;
having avg(age) > 18; //查询平均年龄大于18的班级
外加一点 查询之后改变查询出来的字段名,但不改变数据库的字段名
基本语法
select 字段 as 新字段名
from 表名;
测试
select name as newname
from user; //查询出来之后会显示字段名为 newname
总结
写sql语句要有耐心,要仔细,加油!!!
多表连接查询的操作在这:https://blog.csdn.net/qq_45334037/article/details/117374808