MySQL —— 查询语句

目录

一. 排序查询
二. 聚合函数
三. 分组查询
四. 分页查询
五. 总结
六. 基础查询
七. 条件查询

一. 排序查询
  1. 语法:ORDER BY 子句
    * ORDER BY 排序字段1,排序字段2... 排序方式

  2. 排序方式:
    * ASC:升序,默认
    * DESC:降序

  3. 注意:
    * 如果有多个排序条件,则前边的条件值一样时,才会判断第二条件
    * SELECT * FROM student ORDER BY math ASC, english DESC;– 按照数学成绩排名,如果数学成绩一 样,则按照英语成绩排名倒序。

二. 聚合函数

概述:将一列数组作为一个整体,进行纵向的计算。

  1. count:计算个数
    1. 一般选择非空的列:主键,推荐使用
    2. count(*)相当于行数,在统计结果的时候,不会忽略列值为NULL。不推荐使用
  2. max:计算最大值
  3. min:计算最小值
  4. sum:计算和
  5. avg:计算平均值

注意:聚合函数的计算,会排除null值,不计算在内!
解决方案:
1. 选择不包含null的列计算
2. IFNULL函数

-- 聚合函数使用
SELECT COUNT(name) FROM student;
SELECT COUNT(english) FROM student;
SELECT COUNT(IFNULL(english,0)) FROM student; -- 如果english字段为空,则用0代替,然后在计算数量
SELECT COUNT(*) FROM student;
SELECT MAX(math) FROM student;
SELECT MIN(math) FROM student;
SELECT SUM(math) FROM student;
SELECT SUM(english) FROM student; -- english 成绩为null的,不计算在内
SELECT AVG(math) FROM student;
三. 分组查询
  1. 语法:GROUP BY分组字段
  2. 注意:
    1. 分组之后,查询的字段:分组字段,要么聚合函数,添加其他字段没有意义
    2. WHEREHAVING的区别?
      1. WHERE 在分组之前进行限定:如果不满足这个条件,则不参与分组
        HAVING 在分组之后进行限定:如果不满足结果,则不会被查询出来
      2. WHERE 后不可以跟聚合函数,
        HAVING 可以进行聚合函数的判断
-- 分组查询
-- 需求:按照性别分组,分别查询男/女同学的平均分
SELECT sex,AVG(math) FROM student GROUP BY sex;
-- 需求:按照性别分组,分别查询男/女同学的平均分、人数。
SELECT sex, AVG(math), COUNT(id) FROM student GROUP BY sex;
-- 需求:按照性别分组,分别查询男/女同学的平均分、人数。要求:分数低于70的人,不参与分组
SELECT sex, AVG(math), COUNT(id) FROM student WHERE math>=70 GROUP BY sex;
-- 需求:按照性别分组,分别查询男/女同学的平均分、人数。要求:1. 分数低于70的人,不参与分组; 2. 分组之后,人数要大于2个人
SELECT sex, AVG(math), COUNT(id) FROM student WHERE math>=70 GROUP BY sex HAVING COUNT(id) > 2;
-- 人数是 COUNT(id) 的别名,开发中我们一般要使用英文来命名别名。
SELECT sex, AVG(math), COUNT(id) 人数 FROM student WHERE math>=70 GROUP BY sex HAVING 人数 > 2;
四. 分页查询
  1. 语法:LIMIT 开始的索引,每页查询的条数;
  2. 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数
  3. 分页操作是一个“方言”,只能 LIMIT 语法只能在 MySQL 中使用;
-- 分页查询
SELECT * FROM student LIMIT 0,3; -- 第 1 页
SELECT * FROM student LIMIT 3,3; -- 第 2 页
-- 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数
SELECT * FROM student LIMIT 6,3; -- 第 3 页
五. 总结
select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段
having
	分组之后的条件
order by
	排序
limit
	分页限定
六. 基础查询
  1. 多个字段的查询 SELECT 字段1,字段2... FROM 表名
    • 注意:如果查询所有字段,则可以使用 * 来替换字段列表
  2. 去除重复 DISTINCT
  3. 计算列
    • 一般可以使用四则运算来计算一些列的值。(一般只会进行数值型的计算)
    • IFNULL(表达式1,表达式2):NULL 参与的运算,计算结果都为 NULL
    • 表达式1:哪个字段需要判断是否为NULL
    • 如果该字段为NULL后的替换值
  4. 起别名
    AS:也可以省略
七. 条件查询
  1. WHERE 字句后跟条件
  2. 运算符
  • > 、< 、<= 、>= 、= 、<>
  • BETWEEN…AND
  • IN( 集合)
  • LIKE:模糊查询
    • 占位符:
      • _:单个任意字符
      • %:0个或者多个任意字符
  • IS NULL
  • AND 或 &&
  • OR 或 ||
  • NOT 或 !
1. 条件查询
SELECT * FROM student;
2. 查询年龄大于50岁的人数
SELECT * FROM student WHERE age >= 50;
3. 查询年龄等于 50 的人
SELECT * FROM student WHERE age = 50;
4. 查询年龄不等于 50 的人
SELECT * FROM student WHERE age != 50;
SELECT * FROM student WHERE age <> 50;
5. 查询年龄大于等于30小于等于40的人
SELECT * FROM student WHERE age >= 30 AND age <= 40; 
SELECT * FROM student WHERE age >= 30 && age <= 40; -- 不推荐
SELECT * FROM student WHERE age BETWEEN 30 AND 40;
6. 查询年龄 50岁,40,45岁 的信息
SELECT * FROM student WHERE age = 50 OR age = 40 OR age = 45;
SELECT * FROM student WHERE age IN(50,40,45);
7. 查询英语缺考的人。NULL 值不能使用 = != 做判断
SELECT * FROM student WHERE english IS NULL;
8. 查询英语有成绩的人
SELECT * FROM student WHERE english IS NOT NULL;

-- 模糊查询
SELECT * FROM student WHERE name LIKE '马%';
-- 查询第二个字是 化 的人
SELECT * FROM student WHERE name LIKE '_化%';
-- 查询姓名是三个字的人
SELECT * FROM student WHERE name LIKE '___';
-- 查询姓名中,包含 一 的人 
SELECT * FROM student WHERE name LIKE '%一%'; -- 常用
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL多条件查询语句的基本语法是使用SELECT语句来查询指定的字段,并通过WHERE子句来添加多个条件进行筛选。 通用语法如下: SELECT 字段1, 字段2, ... FROM 表名1, 表名2... WHERE 条件1 AND 条件2... 其中,字段1, 字段2,...表示需要查询的字段,可以是一个或多个字段。表名1, 表名2...表示需要查询的表名,可以是一个或多个表。条件1, 条件2...表示多个筛选条件,可以使用AND或OR进行连接。 如果希望查询所有字段,可以使用通配符*代替字段名,例如:SELECT * FROM 表名。 总结来说,在编写多条件查询语句时,需要使用SELECT语句来指定查询的字段,通过WHERE子句来添加多个条件进行筛选。在实际应用中,建议明确写出需要查询的字段,这样可以提高SQL语句的可读性和可维护性。123 #### 引用[.reference_title] - *1* *2* [mysql数据库表的多条件查询](https://blog.csdn.net/zhongjianboy/article/details/129223518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [MySQL数据库详解——常用命令及查询](https://blog.csdn.net/q872792748/article/details/108979428)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值