前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【MySQL】007-记录的查询

【MySQL】007-记录的查询

作者头像
訾博ZiBo
发布2025-01-06 14:17:41
发布2025-01-06 14:17:41
7700
代码可运行
举报
运行总次数:0
代码可运行

一、基础查询

1、多个字段的查询

代码语言:javascript
代码运行次数:0
复制
select 字段1,字段2...字段n from 表名;
-- 如果要查询所有字段,可以用*代替

2、去除重复

代码语言:javascript
代码运行次数:0
复制
select distinct 字段1 from 表名;
-- 完全一样的查询结果才能去重

3、计算列

代码语言:javascript
代码运行次数:0
复制
select distinct 字段1,字段2,字段3 字段1+字段2+字段3 from 表名;
-- 计算字段1、2、3之和
-- 如果null参与的计算,结果都是null,若为null,则为0可以这样写:
select distinct 字段1,字段2,字段3 字段1+字段2+ifnull(字段3,0) from 表名;

4、起别名

代码语言:javascript
代码运行次数:0
复制
select distinct 字段1,字段2,字段3 字段1+字段2+ifnull(字段3,0) as 别名 from 表名;
-- as可以省略,空格必须有

二、条件查询

1、where子句后跟条件;

2、运算符

>、<、<=、>=、=、<>
BETWEEN...AND
IN(集合)
LIKE
IS NULL
and 或 &&
or 或者 ||
not 或者 !
实例:
代码语言:javascript
代码运行次数:0
复制
-- 查询年龄大于等于20的学生
SELECT * FROM student WHERE age >= 20;
-- 查询年龄等于20的学生
SELECT * FROM student WHERE age = 20;
-- 查询年龄不等于20的学生
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;
-- 查询大于等于20小于等于30的学生
SELECT * FROM student WHERE age >= 20 && age <= 30;-- 不推荐这么写
SELECT * FROM student WHERE age >= 20 AND age <= 30;-- 推荐这么写
SELECT * FROM student WHERE age BETWEEN 20 AND 30;-- 这么写也行
-- 查询年龄等于20,23,25岁的学生
SELECT * FROM student WHERE age =20 OR age = 23 OR age = 25;
SELECT * FROM student WHERE age IN (20,23,25);
-- 查询英语成绩为null的学生
SELECT * FROM student WHERE english = NULL; -- 错误写法
SELECT * FROM student WHERE english IS NULL; -- 正确写法
-- 查询英语成绩不为null的学生
SELECT * FROM student WHERE english IS NOT NULL; 

三、模糊查询

LIKE-模糊查询

占位符:

_:单个任意字符;

%:多个任意字符;

例如:
代码语言:javascript
代码运行次数:0
复制
-- 查询姓马的同学
SELECT * FROM student WHERE name LIKE '马%';
-- 查询姓名中第二个字是‘化’的同学
SELECT * FROM student WHERE name LIKE '_化%';
-- 查询姓名中包含‘马’的人
SELECT * FROM student WHERE name LIKE '%马%';-- 用得多

四、排序查询

1、语法

代码语言:javascript
代码运行次数:0
复制
order by 子句;
-- 例如
order by 排序字段1 排序方式1,排序字段2 排序方式2...

2、排序方式

升序(ASC):默认;

降序(DESC);

代码语言:javascript
代码运行次数:0
复制
-- 数学成绩按照降序排序
SELECT * FROM student ORDER BY math DESC;
-- 按照数学成绩排序,如果数学成绩是一样的,按照英语成绩排序
SELECT * FROM student ORDER BY math ASC,english ASC;

注意:多个排序条件,当前面的条件查询到的结果一样的时候,才会去执行后面的条件;

五、聚合函数

将一列数据作为一个整体,进行纵向计算;

1、count:计算数量

2、max:计算最大值

3、min:计算最小值

4、sum:求和

5、avg:计算平均值

示例:

代码语言:javascript
代码运行次数:0
复制
-- 计算数学成绩最大值
SELECT MAX(math) FROM student;

六、分组查询

1、语法

代码语言:javascript
代码运行次数:0
复制
GROUP BY 分组字段;

2、示例

代码语言:javascript
代码运行次数:0
复制
-- 按照性别分组,分别计算男女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;

-- 按照性别分组,分别计算男女同学的平均分,但要求大于70分的才参与分组
SELECT sex , AVG(math) FROM student WHERE age > 70 GROUP BY sex;

-- 按照性别分组,分别计算男女同学的平均分,但要求大于70分的才参与分组,分组之后人数要大于2人
SELECT sex, AVG(math), COUNT(id) FROM student WHERE age > 70 GROUP BY sex HAVING COUNT(id) > 2 ;
SELECT sex, AVG(math), COUNT(id) AS 人数 FROM student WHERE age > 70 GROUP BY sex HAVING 人数 > 2 ;

3、注意

分组之后查询的字段:分组字段、聚合函数;

where和having的区别:

where在分组之前进行限定,若不满足条件,则不参与分组;

having在分组之后进行限定,若不满足条件,则不会被查询出来;

where后不可以跟聚合函数,having后可以进行聚合函数的判断;

七、分页查询

1、语法

代码语言:javascript
代码运行次数:0
复制
limit 开始的索引,每页查询的条数;

2、示例

代码语言:javascript
代码运行次数:0
复制
-- 每页查3条数据
SELECT * FROM student LIMIT 0,3 -- 第一页

SELECT * FROM student LIMIT 3,3 -- 第二页

-- 公式:开始的索引= (当前的页码 - 1) * 每页显示的条数;

3、公式

公式:开始的索引= (当前的页码 - 1) * 每页显示的条数;

4、limit分页操作是MySQL的一个“方言”,不同数据库实现分页的方式不一样;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基础查询
    • 1、多个字段的查询
    • 2、去除重复
    • 3、计算列
    • 4、起别名
  • 二、条件查询
    • 1、where子句后跟条件;
    • 2、运算符
      • >、<、<=、>=、=、<>
      • BETWEEN...AND
      • IN(集合)
      • LIKE
      • IS NULL
      • and 或 &&
      • or 或者 ||
      • not 或者 !
      • 实例:
  • 三、模糊查询
    • LIKE-模糊查询
      • 占位符:
      • 例如:
  • 四、排序查询
    • 1、语法
    • 2、排序方式
  • 五、聚合函数
    • 1、count:计算数量
    • 2、max:计算最大值
    • 3、min:计算最小值
    • 4、sum:求和
    • 5、avg:计算平均值
    • 示例:
  • 六、分组查询
    • 1、语法
    • 2、示例
    • 3、注意
      • where和having的区别:
  • 七、分页查询
    • 1、语法
    • 2、示例
    • 3、公式
      • 公式:开始的索引= (当前的页码 - 1) * 每页显示的条数;
    • 4、limit分页操作是MySQL的一个“方言”,不同数据库实现分页的方式不一样;
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档