站长学院
CMS建站教程 SEO优化攻略
来源:齐鲁建站 栏目:开发教程 阅读: 日期:2022-12-30
本文介绍了Mysql四大常用操作:增删改查之查询记录,方法有很多,比如指定字段查询,查询单个字段不重复记录 distinct,条件查询 where,where后可接的条件,结果集排序……等等,一起来看看操作吧。
一、基础查询
类别 | 详细解示 |
---|---|
基本语法 | select * from 表; |
示例 | select * from money; |
示例说明 | 查询money表中所有字段中的所有结果 |
”*” 是一种正则表达式的写法,表示匹配所有
二、指定字段查询
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表; |
示例 | select id,username, balance from money; |
示例说明 | 查询money表中id,username, balance字段中的所有结果 |
三、查询单个字段不重复记录 distinct
类别 | 详细解示 |
---|---|
基本语法 | select distinct 字段 from 表; |
示例 | select distinct age deptno from money; |
示例说明 | 查询money表中年龄唯一的所有结果 |
实测中,加不加 deptno 结果都是一样的~
四、条件查询 where
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 where 条件; |
示例 | select * from money where age = 29; |
示例说明 | 查询money表中年龄为29的所有结果 |
五、where后可接的条件
1、比较运算符
符号 | 说明 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
= | 等于 |
2、逻辑运算符
符号 | 说明 |
---|---|
or | 或者 |
and | 并且 |
举例:
select * from money where id <10 and province='湖北';
六、结果集排序 order by
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 order by 字段 排序关键词 |
示例 | select id,username, balance from money order by balance desc; |
示例说明 | 查询money表中的id,username,balance字段,按照余额进行降序排序 |
排序用到的关键词:
关键词 | 说明 |
---|---|
asc | 升序排列,从小到大(默认) |
desc | 降序排列,从大到小 |
在 select 出来之后的结果集中排序使用 order by ,其中 desc 和 asc 是排序顺序中的关键字。
desc 表示按照字段进行降序排列,asc 表示升序排列,如果不写关键字默认升序排列。
七、多字段排序
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 order by 字段1 排序关键词,... ...字段n desc|asc; |
示例 | select id,username, balance from money order by balance desc,age asc; |
示例说明 | 查询money表中的id,username,balance字段,按照余额进行降序排序,若余额全都一样,则再使用age进行升序排序 |
如果第一个字段已经将结果给排好。第二个字段排序字段不生效。本例中,第二个字段无效
order by 后面可以跟多个不同的字段排序,排序字段的不同结果集的顺序也不同,如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序
八、结果集限制 limit
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 limit 数量; |
示例 | select id,username, balance from money limit 5; |
示例说明 | 显示前五个用户 |
对于查询或者排序后的结果集,希望只显示一部分而不是全部,使用 limit 关键字结果集数量限制
九、限制结果集并排序
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 order by 字段 关键词 limit 数量 |
示例 | select id,username, balance from money order by balance desc limit 5; |
示例说明 | 按照钱来排序,显示前五个最有钱的用户 |
十、结果集区间选择
假设我从第0条开始取了3条记录。又想再从第3条开始取3条记录。再想从第6条开始取4条记录怎么办?
这时候就需要使用到结果集区间选择。
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 limit 偏移量,数量 |
注:第一条记录为0。
从第0条开始取了3条记录
select id,username, balance from money limit 0,3;
从第三条开始再取三条
select id,username, balance from money limit 3,3;
从第6条开始取4条记录
select id,username, balance from money limit 6,4;
上面也是分页的由来~
第1页为 limit 0,10
第2页为 limit 10,10
第3页为 limit 20,10
十一、统计类函数使用(以下为常用)
函数 | 说明 |
---|---|
sum | 求和 |
count | 统计总数 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
基本语法
select 函数(字段) from 表
举例1 - id的总数:
select count(id) from money;
给字段取别名 as:
select count(id) as zongshu from money;
举例2 - 平均金额:
select avg(balance) from money;
举例3 - 总金额:
select sum(balance) from money;
举例4 - 查询最大金额
select max(balance) from money;
十二、分组 group by
基本语法
select * from 表 group by 字段
举例1 - 按地区进行分组
select * from money group by province;
举例2 - 统计分组(分类)各总数
select deptno, count(1) from emp group by deptno;
举例3 - 统计省份数量后再进行分组显示
select count(province),province from money group by province;
十三、在分组基础上进行统计 with rollup
用的比较少,了解级别
主要功能是对于分组的数据进行统计后,再进行一次总数统计
基本语法
select * from 表 group by 字段 with rollup
举例:
select count(province),province from money group by province with rollup;
十四、结果再过滤 having
aving子句与where有相似之处但也有区别,都是设定条件的语句
having 是筛选组 而where是筛选记录
基本语法
select * from 表 group by 字段 having 条件
举例:对地区分组并统计总数,将分组结果中大于2的分组地区显示出来
select count(province) as result ,province from money group by province having result >2;
十五、整体使用SQL
语法结构如下:
SELECT
[字段1 [as 别名1],[函数(字段2) ,]......字段n]
FROM 表名
[WHERE where条件]
[GROUP BY 字段]
[HAVING where_contition]
[order 条件]
[limit 条件]
注:上面的语句中可以[] 代表可选
语法总结如下:
关键词 | 说明 |
---|---|
select | 选择的列 |
from | 表 |
where | 查询的条件 |
group by | 分组属性 having 分组过滤的条件 |
order by | 排序属性 |
limit | 起始记录位置,取记录的条数 |
举例:
查询money表字段:id,username,balance,province 要求id>1 余额大于50,使用地区进行分组。使用用户id进行降序,要求只准显示3条
select id,username,balance,province from money where id > 1 and balance > 50 group by province order by id desc limit 3;