MySQL单表查询汇总(DQL)

本文围绕MySQL数据库单表查询展开,先创建了fruits表并添加数据,随后详细介绍多种查询方式,包括查询所有字段、指定字段,以及带IN、BETWEEN AND、LIKE关键字的查询,还有空值查询、多条件查询等,还涉及结果去重、排序、分组和数量限制等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先创建一个名为fruits的表,并为其添加数据。

create table fruits
(
    id int not null,
    name char(255),
    price decimal(8,2),
    primary key(id)
);

1. 查询所有字段 

select * from 表名;

select 字段1,字段2,字段3··· from 表名;        //包括所有字段

 

2. 查询指定字段

select 字段名 from 表名;

select 字段1,字段2······字段n from 表名 where 查询条件;

 

3. 带 IN 关键字查询

in操作符用来查询满足指定范围的记录(将所有检索条件用括号括起来)

例如:查询fruits表中id为1,2,3的记录

select * from fruits where id in(1,2,3);

相反可以使用 not in 查询不在条件范围内的记录

 

4. 带 BETWEEN AND 的范围查询

between and用来查询某个范围内的值。between x and y 表示从x到y的范围,包括x和y。

例如:查询fruits表中价格在2.00到5.00元的水果信息。

select * from fruits where price between 2 and 5;

 

5. 带 LIKE 的字符串匹配查询

与like一起用的有百分号通配符(%)和下划线通配符(_)

  1. 百分号通配符(%),可匹配任意长度的字符串,包括空字符。

例如:查询以 b 开头的水果

select * from fruits where name like 'b%';

    2.下划线通配符(_),一次匹配任意一个字符。

例如:查询以 y 结尾,且前面有四个字母的记录

select * from fruits where name like '____y';

 

6. 空值查询(IS NULL)

select * from 表名 where 字段名 is null;

相反 is not null 可查询非空值。

 

7. AND关键字多条件查询(与)

and可连接两个或多个查询条件

例如:查询fruits表中 id>3,price 小于4 的记录。

select * from fruits where id>3 and price<4;

 

8. OR关键字多条件查询(或)

例如:查询fruits表中 id大于3或者price小于4 的记录。

select * from fruits where id>3 or price < 4;

 

9. 查询结果不重复(DISTINCT)

distinct关键字消除重复记录

select distinct  * | 字段名  from 表名;

 

10. 对查询结果排序

在select语句中使用 order by 子句,对查询结果进行排序。

(1)单列排序

例如:按照水果的价格顺序查询水果信息。

select * from fruits order by price;

(2)多列排序

例如先按照price排序,再按照name排序。

select * from fruits order by price,name;

(3)指定排序方向

select * from fruits order by price DESC;        //按照价格降序排列

与DESC(降序排列)相反的是ASC(升序排列),默认为升序排列。

 

11. 分组查询

按照某个或多个数据进行分组

[group by 字段] [having (条件表达式)]

“字段” 为进行分组时所依据的列名称

“having (条件表达式)” 满足条件表达式的将被显示。

(1)创建分组

group by 通常与集合函数一起使用,如max(),count(),sum()······

例如:按照价格对表中数据进行分组

select price,count(*) as total from fruits group by price;

(2)使用having过滤分组

select price,count(*) as total from fruits group by price having total <=1;

*having 在数据分组之后进行数据过滤 而 where则在分组之前使用

(3)with rollup 关键字

使用with rollup 后,会在所有分组记录后新增一条记录,该记录计算查询出的所有纪律的总和,即统计记录数量。

(4)多字段分组

分组从左往右,先按照第一个字段进行,然后对第一个字段相同的值按照第二个字段分组,以此类推。

select price,count(*) as total from fruits group by price,id;

 

12. 使用LIMIT限制查询结果的数量

语法格式:limit[位置偏移量] 行数

例1:查询两条记录(从第一个开始的)

select * from fruits limit 2;

例2:查询两条记录(从第三个开始)

select * from fruits limit 2,2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

healthLau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值