MySQL-6:查询语句

1、DQL:查询语句:

  • 1.排序查询
  • 2.聚合函数
  • 3.分组查询
  • 4.分页查询

2、约束
3、多表之间的关系
4、范式
5、数据库的备份和还原



DQL:查询语句:

  • 1.排序查询
    • 语法:order by 子句
      order by 排序字段1 排序方式1, 排序字段2,排序方式2...
    • 排序方式:
      • ASC:升序,默认的。
      • DESC:降序
-- 在student表中按照数学成绩(math)升序排名
SELECT * FROM student ORDER BY math;
SELECT * FROM student ORDER BY math ASC;
升序查询结果
-- 在student表中按照数学成绩(math)降序排名
SELECT * FROM student ORDER BY math DESC;
降序查询结果
-- 在student表中按照数据成绩排名,如果数学(math)成绩一样,则按照英语(english)成绩排名
SELECT * FROM student ORDER BY math ASC, english ASC;

查询结果
  • 注意:
    如果有多个排序条件,则当前边的田间值一样时,才会判断第二条件。

  • 2.聚合函数:将一列数据作为一个整体,进行纵向的计算
    1. count:计算个数
    • 一般选择非空的列:主键
    • count(*)
SELECT COUNT(NAME) FROM student;

SELECT COUNT(english) FROM student;

SELECT COUNT(IFNULL(english,0)english) FROM student;
  1. max:计算最大值
SELECT MAX(math) FROM student;
  1. min:计算最小值
SELECT MIN(math) FROM student;
  1. sum:求和
SELECT SUM(math) FROM student;
  1. avg:计算平均值
SELECT AVG(math) FROM student;

注意:聚合函数的计算,会排除null值。
解决方法:
1、选择不包含非空的列计算
2、IFNULL函数


  • 3.分组查询
    1. 语法:group by 分组字段;
-- 按照性别分组,分别查询男、女同学的数学平均分
SELECT gender,AVG(math) FROM student GROUP BY gender;
查询结果
-- 按照性别分组,分别查询男、女同学的数学平均分,分别的人数
SELECT gender,AVG(math),COUNT(id) FROM student GROUP BY gender;
查询结果
-- 按照性别分组,分别查询男、女同学的数学平均分,分别的人数(要求:分数低于70分的人,不参与分组)
SELECT gender,AVG(math),COUNT(id) FROM student WHERE math >70 GROUP BY gender;
查询结果
-- 按照性别分组,分别查询男、女同学的数学平均分,分别的人数(要求:分数低于70分的人,不参与分组) 分组之后,人数要大于2个人
SELECT gender,AVG(math),COUNT(id) FROM student WHERE math >70 GROUP BY gender HAVING COUNT(id) >2;

-- 一般在聚合函数后面取一个别名方便查询
SELECT gender,AVG(math),COUNT(id) pnum FROM student WHERE math >70 GROUP BY gender HAVING pnum > 2;

查询结果
  1. 注意:
    • 分组之后查询的字段:分组字段、集合函数
    • where 和 having 的区别(面试常考)?
      1.where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来。
      1. where 后不可以跟聚合函数,having可以进行集合函数的判断。

  • 4.分页查询
    1.语法:limit 开始的索引,每页查询的条数;
    2.公式:开始的索引 = (当前的页面 - 1)* 每条显示的条数
-- 分页查询
-- 每页显示3条记录
SELECT * FROM student LIMIT 0,3; -- 第一页
SELECT * FROM student LIMIT 3,3; -- 第二页

-- 公式:开始的索引 = (当前的页面 - 1)* 每条显示的条数
SELECT * FROM student LIMIT i+n,n 

SELECT * FROM student LIMIT 6,3;

3.分页操作的,limit是一个“方言”,只能在MySQL使用。

下一章节#

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,857评论 5 116
  • SQL语言基础 本章,我们将会重点探讨SQL语言基础,学习用SQL进行数据库的基本数据查询操作。另外请注意本章的S...
    厲铆兄阅读 5,360评论 2 46
  • 没啥特别的,,, 定义一个固定的数组, push满了,就最后一个出局, 第一个补充。 use // fill 是e...
    反者道之动001阅读 538评论 0 0
  • 软件工程师磨炼技艺的方式有许多,而读优秀项目的源码,是这些方式中学习其他人的经验和方法,快速进步的很重要一种方式。...
    侯树成阅读 475评论 0 4
  • 冬季的阳光照在身上,有点暖暖的。 北风并不呼啸,却还是直往人脖子里钻。 骑着车在路上,顶风让我走的很辛苦。多想此刻...
    蓝青樱阅读 645评论 7 2