【MySQL数据库】函数
MySQL是一个广泛使用的关系数据库管理系统,它提供了许多内置函数,可以帮助用户实现复杂的查询和数据处理。除此以外,我们还可以自定义一些函数用来使用。
内置函数
字符串函数
select concat("hello","world","!"); -- 拼接
select concat("-","hello","world","!"); -- 拼接,并加分割符
select lower(str); -- 大写转小写
select upper(str); -- 小写转大写
select ltrim(str); -- 删除字符串左侧空格
select rtrim(str); -- 删除字符串右侧空格
select trim(str); -- 删除字符串两侧空格
select substr(str,n,len); -- 截取子串-n从1开始计数
select left(str,n); -- 返回字符串str的最左边n个字符
select right(str,n); -- 返回字符串str的最右边n个字符
select replace(str,from_str,to_str); -- 替换函数,字符串str中所有from_str全部替换为to_str, 然后返回新串
select format(x,n); -- 将数字x格式化、并以四舍五入的方式保留小数点后n位,结果以字符串形式返回,若n=0、返回结果不含小数部分
数值函数
select abs(-5); -- 绝对值
select ceil(2.544); -- 向上取整
select floor(3.55); -- 向下取整
select round(3.244); -- 四舍五入
select round(3.11111,2); -- 保留两位小数、四舍五入
select round(7.82,-1); -- 整数部分保留到十位、四舍五入
select truncate(7.82,-1); -- 整数部分保留到十位、截断
select mod(7,2); -- 取余
select rand(); -- 随机数[0,1)
select ceil(rand()*10); -- 随机数:1-10
日期函数
curdate()/current_date(); -- 获取当前日期 YYYY-MM-DD格式
curtime()/current_time(); -- 获取当前时间 HH:MM:SS格式
week(date); -- 返回date为一年中的第几周
now()/sysdate(); -- 获取当前日期和时间 YYYY-MM-DD HH:MM:SS格式
-- 前面加上天得到日期
-- 单位有: year month day week hour等
select date_add(now(),interval 3 year);
select date_add(now(),interval 3 week);
-- 计算两个日期的间隔天数
select datediff(now(),"2022-9-8");
-- 返回date的UNIX时间戳
unix_timestamp(date);
-- 根据时间戳获取日期
form_unixtime(unix);
-- 日期格式化-按照format格式化date
date_format(date,format);
-- 字符串转化为date类型
str_to_date(date,format);
聚合函数
也叫分组函数:聚合函数通常与select 的group by分组查询一起使用。
常用聚合函数:count、max、min、avg、sum ...
avg(expression) :某列的平均值
sum(expression) :某列值的和
count(expression) :某列的行数
max(expression) :某列的最大值
min(expression) :某列的最小值
聚合函数的使用位置:
1、select子句中:SELECT COUNT(*) FROM employees;
2、与group by子句结合:SELECT department, COUNT(*) FROM employees GROUP BY department;
3、having子句中:SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10;
4、order by子句中:SELECT department, COUNT(*) FROM employees GROUP BY department ORDER BY COUNT(*) DESC;
(第四种不太常用,一般会在select后面给count*起别名然后使用)
流程函数
-- if(condition, true_exp, false_exp)
-- 如果条件condtion是真,那么返回true_exp的值,否则false_exp的值
select * ,if(sal>=3000,"high","low") [as sal_level] from emp;
-- ifnull(field, setval)
-- 如果字段field的值是空的,那么将这行的该字段设置 值setval
select * ,ifnull(comm,0)+500 [as new_comm] from emp;
自定义函数
创建自定义函数
通过语句:
create function 函数名([参数 参数类型]...)
returns [返回值类型]
begin
-- code
end;
具体函数内部可以怎么写,我们后面学习存储过程时自会讲到。
删除自定义函数
drop function 函数名;
感谢大家!