MySql从入门到入坟

MySQL-6:查询语句

2019-04-03  本文已影响0人  Deque

1、DQL:查询语句:

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



DQL:查询语句:

-- 在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;

查询结果
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函数


-- 按照性别分组,分别查询男、女同学的数学平均分
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可以进行集合函数的判断。

-- 分页查询
-- 每页显示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使用。

下一章节#

上一篇 下一篇

猜你喜欢

热点阅读