MySQL-基础-常见函数-单行函数-分组函数

常见函数

基础

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

好处
隐藏了实现细节;提高了代码的重用性;
隐藏了实现细节

语法

select 函数名(实参列表) [from];
当函数的实参列表用到表的字段的时,需要加from表。

使用需求
需要了解函数名(是什么)、函数功能(做什么)

分类
单行函数:字符函数、数字函数、日期函数、其他函数、流程控制函数。
分组函数:功能做统计使用,又被称为统计函数、聚合函数、组函数。

单行函数

包含:字符函数、数字函数、日期函数、其他函数、流程控制函数。

字符函数(10)

函数介绍
函数名功能语法
length获取参数值的字节数length(参数)
UTF-8 中一个汉字占三个字节,一个英文字母占一个字节
参数可以是字符串,单引号
upper转大写upper(参数)
参数是字符串类型
lower转小写lower(参数)
参数是字符串类型
substr
substring
截取字符串
索引是从1开始的
①substr(参数1,参数2) :参数1表示原始字符串,参数2表示截取开始位置的索引(截取指定索引处之后的所有字符)
②substr(参数1,参数2,参数3) :参数1表示原始字符串、参数2表示截取开始位置的索引、参数3表示截取的长度(表示从指定索引处指定长度的字符)
instr返回子串第一次出现位置的索引,没有则返回0instr(串1,串2):串1是源串,串2是子串
lpad用指定的字符左填充指定的长度lpad(初始字符串,总长度,填充字符)
当长度不够的时候,左填充(填充字符),长度多余的时候,从左到右依次显示
rpad用指定的字符右填充指定的长度rpad(初始字符串,总长度,填充字符)
当长度不够的时候,右填充(填充字符);长度多余的时候,从左到右依次显示
trim去掉前后的空格①trim(‘参数’); 去掉前后的空格
②trim(字符 from ‘参数’);去掉前后特定的字符(参数),对于中间的特定字符不能去掉
案例:去掉aaaaaaa张aa三aa丰aaaaa 中的a ;结果是——张aa三aa丰
concat拼接字符串concat(串1,串2…)
replace替换replace(参数1,参数2,参数3):参数1表示源串,参数2表示查找子串,参数3表示替换成的子串
当参数1中找到多个参数2,则参数3会将多个参数2替换
案例

length、lower、upper、substr
在这里插入图片描述
concat、instr、lpad、rpad、trim、replace
在这里插入图片描述

数字函数(6)

函数介绍
函数名功能语法
round四舍五入①(参数1):表示要进行算术的原始数据
②(参数1,参数2):参数1同上述,参数2表示小数的保留位数
小数的保留位表示四舍五入从第几位小数开始,保留一位小数则说明四舍五入从小数第二位开始
floor向下取整(参数) 返回<=该数的最大整数
ceil向上取整(参数) 返回>=该数的最小整数
mod取余、取模理解:mod(a,b):a-a/b*b 结果的符号和被除数有关
rand产生随机数返回0-1之间的小数
truncate截取truncate(参数1,参数2) :参数1:原始数据;参数2:表示小数点后面保留几位。
直接将小数点后的内容删除
案例

round、floor、ceil、mod、rand、truncate
在这里插入图片描述

日期函数(12)

函数介绍
函数功能举例
now返回当前系统的时间+日期select now(); #输出2021-05-02 10:12:11
curtime返回当前系统的时间select curtime();#输出10:15:03
curdate返回当前系统的日期select curdate();#输出2021-05-02
year获取年参数是now() 输出当前年份
参数是字符串’1997-05-07’ 输出的是1997
参数是 字段(该字段可能是日期类数据)输出的是一列
month
monthname
获取月
获取月的英文名
month输出的是 数字(1,2,3)
monthname输出的是 英文May
day
dayname
获取日
获取日对应的星期英文
day输出的是 数字(6)
dayname 输出的是 英文sunday
hour获取小时输出数字
minute获取分钟输出数字
second获取秒钟输出数字
str_to_date将字符通过指定的格式转换成日期str_to_date(参数1,参数2)参数2是参数1格式的说明
str_to_date(‘11-6-1997’,‘%m-%d-%Y’)输出为1997-6-11
date_format将日期转化为字符date_format(now(),‘%y年%m月%d日’); 输出的日期就是 xxxx年xx月xx日
datediff返回两个日期之间的时间datediff(datepart,startdate,enddate)
在mysql workbench中运行SELECT DATEDIFF(day,‘2008-12-29’,‘2008-12-30’) AS DiffDate 会报错,去掉参数day之后就可以执行了。

str_to_date中参数介绍

符号说明
%Y
%y
(四位)年
(两位)年
%m
%c
月(01,02…)
月(1,2…)
%d日(01,02…)
%H
%h
小时(24小时制)
小时(12小时制)
%i分钟(01,02,…59)
%s秒钟(01,02…59)

datediff中的datepart参数

参数说明
yy、yyyy
qq、q季度
mm、m
dy、y
dd、d
年中的日
wk、ww
dw、w星期
hh小时
mi、n分钟
ss、s
ms毫秒
mcs微秒
ns纳秒
案例

now、curtime、cutdate、year、month、day、hour、minute、second
在这里插入图片描述
str_to_date、date_format
在这里插入图片描述

案例2022/8/3
在这里插入图片描述
注意:当题目涉及日期内容的时候,要下意识联想日期函数。

其他函数(5)

函数介绍
函数功能
version查看当前版本号(mysql)
user查看当前用户
database查看当前数据库
password(‘字符’)返回字符的加密形式
md5(‘字符’ )返回字符的md5加密形式

备注2022/7/29
使用格式为:select 函数名();

案例

version、user、database、password、md5
在这里插入图片描述

流程控制函数

if函数
if(条件表达式,表达式1,表达式2);

如果表达式值为true,则返回表达式1,否则返回表达式2;

case函数

方式一:类似于java中switch case,适用于判等
2022/7/29 备注
case when then else end

java:

switch(常量或表达式):
	case1 常量:语句1break;
	case2 常量:语句2break.....
	default 语句n:break

mysql:

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

既可以搭配select使用,也可以单独做语句使用。
在这里插入图片描述
方式二:类似于java中的多重if(适合区间判断)
java:

if(条件1){
	语句1}else if(条件2{
	语句2}
.....
else{
	语句n;
}

mysql:

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

在这里插入图片描述

案例

在这里插入图片描述

分组函数

概述

功能:
用作统计使用,又称为聚合函数、统计函数、组函数。

分类:
sum求和、max最大值、min最小值、count个数、avg平均值。

语法:

select 分组函数(字段) from 表;

特点

支持类型

  • sum、avg,一般适用于数字型,不支持 字符型和日期型;
  • max、min、count 支持任何类型;

上述分组函数都忽略null值

可以和distinct搭配实现去重

select 分组函数(distinct 字段) from 表;

count函数

  • 不同参数类型介绍
    count(字段):统计该字段非空值的个数;
    count(*):统计结果集的行数;
    count(1):统计结果集的行数;(相当于在结果集中加了一列,且内容为1)
  • 效率
    MYISAM存储引擎下,COUNT(星号)的效率最高;
    INNODB存储引擎下,效率之间的关系是:count(星号)和count(1) > count(字段) ;

备注:2022/8/27
查询字段有分组函数,则其余字段必须出现在group by 后面。

案例

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值