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 '%一%'; -- 常用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值