目录

  • 前言
  • 排序查询
  • 常见函数
  • 定义和概述
  • 单行函数
  • 一、字符函数
  • 二、数学函数
  • 三、日期函数
  • 四、其他函数
  • 五、流程控制函数
  • 分组函数
  • 分类
  • 特点
  • 分组查询
  • 语法
  • 特点


前言

本篇博客呢,接着上一篇博客的内容,并对其中的DQL语言进行补充,主要讲了DQL语言中的排序查询、常见函数、分组查询三个内容,而这三块内容主要体现的是MySQL的排序和分组查询功能,初识MySQL的博客链接在此(【开始和MySQL做朋友】——初识MySQL),朋友们有想了解的可点击查看。如果觉得博主写得还不错得朋友,记得一键三连哦!蟹蟹~

mysql分组之后平均分排序不对 mysql中分组排序_字段

排序查询


语法:

select 查询列表
from 表名
【where  筛选条件】
order by 排序的字段或表达式;


特点:

1、asc 代表的是升序,可以省略;desc 代表的是降序

2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段

3、order by子句在 查询语句的最后面,除了limit子句

常见函数

定义和概述

概念

类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名

调用

select 函数名(实参列表) 【from 表】;

好处

1、隐藏了实现细节

2、提高代码的重用性

分类

1、单行函数,如 concat、length、ifnull等

2、分组函数,功能:做统计使用,又称为统计函数、聚合函数、组函数

单行函数

一、字符函数

1.length 获取参数值的字节个数

2.concat 拼接字符串

3.upper 转换成大写、lower转换成小写

4.substr、substring

截取从指定索引处后面所有字符

select substr(字符串,变量) ;

截取从指定索引处指定字符长度的字符

select substr(字符串,变量,变量);


5.instr 返回子串第一次出现的索引,如果找不到返回0

select instr(字符串,子串);


6.trim 去掉最前面和最后面的空格,也可以指定去掉的字符

select trim(字符 from 字符串);


7.lpad 用指定的字符实现左填充指定长度

select lpad(字符串,长度,指定字符);


8.rpad 用指定的字符实现右填充指定长度

select rpad(字符串,长度,指定字符);


9.replace 替换

select replace(字符串,被替换字符,替换的字符);

二、数学函数

round 四舍五入

ceil 向上取整,返回>=该参数的最小整数

floor 向下取整,返回<=该参数的最大整数

truncate 截断

select truncate(数字,小数点后保留位数)


mod 取余

select mod(被除数,除数)

三、日期函数

now 返回当前系统期+时间(无参数)

curdate 返回当前系统日期,不包含时间

curtime 返回当前时间,不包含日期

str_to_date 将字符通过指定的格式转换成日期

select str_to_date(字符,指定格式)

mysql分组之后平均分排序不对 mysql中分组排序_mysql_02


date_format 将日期转换成字符

select date_format(日期,指定格式)


可以获取指定的部分,年、月、日、小时、分钟、秒,例如:
SELECT YEAR(NOW()) 年;
SELECT YEAR('1998-1-1') 年;

SELECT MONTH(NOW()) 月;
SELECT MONTHNAME(NOW()) 月;  (获取月名)

四、其他函数

SELECT VERSION(); //查看sql的版本号
SELECT DATABASE();//查看表
SELECT USER();

五、流程控制函数

1.if函数: if else 的效果

if(判断条件,若为真的结果,若为假的结果)

2.case函数的使用一: switch case 的效果

case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end

3.case 函数的使用二:类似于 多重if

case 
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
。。。
else 要显示的值n或语句n
end

分组函数

分类

sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数

特点

1、sum、avg一般用于处理数值型, max、min、count可以处理任何类型

2、以上分组函数都忽略null值

3、可以和distinct搭配实现去重的运算

sum(distinct ...)

4、count函数的单独介绍,一般使用count(*)用作统计行数

效率:
MYISAM存储引擎下 ,COUNT(星号)的效率高
INNODB存储引擎下,COUNT(星号)和COUNT(1)的效率差不多,比COUNT(字段)要高一些

5、和分组函数一同查询的字段要求是group by后的字段

6、和分组函数一同查询的字段有限制

举例:

SELECT AVG(salary),employee_id  FROM employees;

上述例子中,AVG(salary)是一行数据,而employee_id是一列数据


分组查询

语法

select 查询列表
from 表
【where 筛选条件】
group by 分组的字段
【order by 排序的字段】;

特点

1、和分组函数一同查询的字段必须是 group by 后出现的字段

2、筛选分为两类:分组前筛选分组后筛选

mysql分组之后平均分排序不对 mysql中分组排序_java_03

注意:
分组函数做筛选不能放在where后面
从左往右:where——group by——having

3、分组可以按单个字段也可以按多个字段

4、可以搭配着 排序 使用

学无止境