【MySQL】MySQL-03-常见函数

1.常见函数概述

格式:
select fun()[实参列表] [from table_name]; # 当函数用到表中的字段时,带表

特点:

  • 函数名
  • 函数功能

分类:

  • 单行函数:完成功能
    • 字符函数
    • 数学函数
    • 日期函数
    • 其他函数
    • 流程控制
  • 分组函数:作统计使用

2.单行函数

(1) 字符函数

length()

获取字符串长度

select length("hello");

concat()

字符串拼接函数

select concat(first_name,'_',last_name) AS name from employees;

upper() lower()

变大写、变小写

select upper("hello");
select lower("HELLO");

substr() substring()

获取指定下标后面所有的字符

获取指定下标下指定长度的字符

sql中,index1开始

select substr("干啥啥不行,吃饭第一名", 7 );
select substr("干啥啥不行,吃饭第一名", 1, 5);

instr()

返回子串第一次出现的下标,没有就返回0

select instr("hello world", "world"); 

trim()

去除首尾指定字符,如果没有指定,就是去除空格

select trim("     hello world     "); 

select trim('aa' from "aaaaahello worldaaaaaaaaaa"); 

lpad rpad()

左填充,填充指定的字符

右填充,填充指定的字符

select lpad("ok", 10,'*');

replace()

字符替换,替换所有

select replace("hello hello world", "hello", "bye");

(2) 数学函数

round()

四舍五入,默认取整数

select round(9.99);
select round(9.99, 1);

ceil()

向上取整

select ceil(1.02);
select ceil(-1.02);

floor()

向下取证

select floor(1.22);
select floor(-1.02);

truncate()

截断,保留1位小数

select truncate(1.6888,1);

mod()

取余

mod(a,b) : a-a/b * b

select mod(10,-3); # 1
select -10 % 3; # -1
select 10 % 3; # 1

(3) 日期函数

now()

获取当前日期+时间

select now();

curdate()

当前日期

select curdate();

curtime()

当前时间

select curtime();

year()

获取年

select year(now());
select year('1999-10-18');
select year(hiredate) from employees;

month()

获取月

monthname()

获取月名(英文)

str_to_date()

转换成指定的格式

str_to_date("9-14-1999","%m-%d-%Y") # 用后面的格式解析前面的串到日期类型变量中

date_format()

日期格式化成字符串

date_format('2019/6/6','%Y年%m月%d日')

Y 1999
y 99
m 01
c 1
d 30
H 24
h 12
i min
s 59

(4) 其他函数

version() 版本

databases() 当前库

user() 当前用户

(5) 流程控制函数

if(a,b,c)

select if(
	a,
    b,
    c
)
等效于
if(a)
	b
else 
	c

case()

case 标记 
when1 then value1/语句1; # 在select中这个分号不要带
when2 then value2/语句2;
when3 then value3/语句3;
...
else valuen/语句n; 
end


# 查询员工的工资 根据部门号递增工资的显示
SELECT salary 原始工资, department_id,
CASE department_id
	WHEN 30 THEN
		salary*1.1
	WHEN 40 THEN
		salary*1.2
	WHEN 50 THEN
		salary*1.3
	ELSE
		salary
END AS 新工资
FROM employees;

case
when 条件 then value1/语句1 # 无分号
when 条件 then value2/语句2
when 条件 then value3/语句3
...
else valuen/语句n; 
end

3.分组函数

使用

  • sum 求和
  • avg 平均值
  • max 最大值
  • min 最小值
  • count 计算非空个数
# 用法
select sum(salary), max(salary) from employees;

参数支持

  • sum、avg 一般仅支持数值;忽略NULL
  • max、min、count 支持所有类型;忽略NULL
  • 分组函数可以和distinct搭配实现去重:先把字段数据去重,然后分组函数进行处理。
  • count(*) 统计行数 ; count(常量) 统计行数
    • MYISAM引擎下: *快
    • INNODB引擎下: 差不多 比带字段快
  • 和分组函数一同查询的字段有限制:一同查询的字段必须是group by后的字段
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值