MySQL查询操作
语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
基础查询:
-
多个字段的查询:
-
语法:select 字段名1,字段名2 from表名;
-
示例:SELECT NAME,address FROM student3;
-
-
去重复
- 语法:distinct
- 示例:SELECT DISTINCT address FROM student3;
-
计算列
-
语法:一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
-
示例:SELECT NAME, math+english 总分 FROM student3;
-
注意事项:
-
ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
表达式1:哪个字段需要判断是否为null
表达式2:如果该字段为null后的替换值。 -
ifnull示例:SELECT NAME,math+IFNULL(english,0) 总分, FROM student3;
-
-
-
起别名:
- as:as也可以省略
条件查询:
-
where子句后跟条件
-
运算符
-
> 、< 、<= 、>= 、= 、<>
- 示例 :-- 查询年龄大于等于20岁的人
*SELECT FROM student3 WHERE age>20; - 示例:-- 查询年龄不为20岁的人
*SELECT FROM student3 WHERE age!=20;
- 示例 :-- 查询年龄大于等于20岁的人
-
BETWEEN…AND
- 示例:-- 查询年龄在20到30的人
*SELECT FROM student3 WHERE age BETWEEN 20 AND 30;
- 示例:-- 查询年龄在20到30的人
-
IN( 集合)
- 示例:-- 查询年龄为20,18,22的人
*SELECT FROM stud WHERE age IN (20,18,22);
- 示例:-- 查询年龄为20,18,22的人
-
IS NULL
-
示例:-- 查询英语成绩为null
SELECT * FROM student WHERE english = NULL; – 不对的null值不能使用 =(!=)判断 -
示例:-- 查询英语成绩为null
SELECT * FROM student WHERE english IS NULL;
-
示例:-- 查询英语成绩不为null
SELECT * FROM student WHERE english IS NOT NULL;
-
-
LIKE:模糊查询
-
占位符:
- _:单个任意字符
- %:多个任意字符
- 示例:-- 查询姓马的有哪些?
SELECT * FROM student WHERE NAME LIKE ‘马%’;
– 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE “_化%”;
– 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE ‘___’; – 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE ‘%德%’;
-
-
排序查询
- 语法:
- order by 子句
- order by 排序字段1 排序方式1 , 排序字段2 排序方式2…
- 排序方式:
- ASC:升序,默认的。
- DESC:降序。
- 示例:-- 按数学成绩升序排名,如果数学成绩一样,则按英语升序
SELECT * FROM stud ORDER BY math ASC,english; - 注意:
- 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
聚合函数:将一列数据作为一个整体,进行纵向的计算。
- count:计算个数:一般选择非空的列:主键
- 语法:count(*);
- 示例:SELECT COUNT(id) FROM stud;
- 注意事项:聚合函数的计算,排除null值。
- 解决方案:1. 选择不包含非空的列进行计算。2. IFNULL函数
- max:计算最大值 SELECT MAX(math) FROM stud;
- min:计算最小值
- sum:计算和
- avg:计算平均值 SELECT AVG(english) FROM stud;
* 注意:计算平均值时排除了空值,即如果有8条记录其中有一条为空那么平均值在计算时会用总数除以7
分组查询
-
**语法:**group by 分组字段;
-
示例:
– 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math)
FROM student
GROUP BY sex;
-

按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math),COUNT(id)
FROM student
WHERE math > 70
GROUP BY sex;
按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) --COUNT(id)计算的是分组后每组的人数
FROM student
WHERE math > 70
GROUP BY sex
HAVING COUNT(id) > 2;

SELECT sex , AVG(math),COUNT(id) 人数
FROM student
WHERE math > 70
GROUP BY sex
HAVING 人数 > 2;
-
注意:
- 分组之后查询的字段:分组字段、聚合函数
- where 和 having 的区别?
- where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
- where 后不可以跟聚合函数,having可以进行聚合函数的判断。
分页查询
-
**语法:**limit 开始的索引,每页查询的条数;
-
**公式:**开始的索引 = (当前的页码 - 1) * 每页显示的条数
-
示例:– 每页显示3条记录
SELECT * FROM student LIMIT 0,3; -- 第1页 SELECT * FROM student LIMIT 3,3; -- 第2页 SELECT * FROM student LIMIT 6,3; -- 第3页 -
利用分页查询来查询某字段第n大的数据
-
方法: 先通过order by子语句进行降序排序,这样第一条数据就是第一大的数据。
这时候利用限制查询
LIMIT 0,1就是第一大的数据
LIMIT 1,1第二大的数据
LIMIT 2,1第三大的数据
··········································
LIMIT n-1,1第n大的数据
本文详细介绍了MySQL的基本查询语法,包括选择字段、去重复、计算列、条件查询、排序、分组和聚合函数的使用。讲解了如WHERE、BETWEEN、IN、IS NULL、LIKE等条件操作符,以及ORDER BY、GROUP BY、HAVING和LIMIT在分页查询中的应用。还提到了如何进行模糊查询、分组查询和聚合函数的计算,以及如何进行分页查询以获取特定位置的数据。此外,文章强调了WHERE和HAVING在分组查询中的区别,并提供了实例展示。
1万+

被折叠的 条评论
为什么被折叠?



