当前位置: 首页 > article >正文

【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 函数名;

感谢大家!


http://www.kler.cn/a/587872.html

相关文章:

  • pycharm专业版连接远程服务器用远程conda环境run和debug
  • 如何设计高效的数据湖架构?
  • kettle ETL 配置
  • 图片标注及流程
  • 996引擎-自定义属性-方法2:setitemcustomabil
  • 基于nodejs中@langchain/langgraph框架实现workflow
  • QT中的线程同步机制
  • 视觉slam十四讲(四)——相机与图像
  • Vue3 + Vite + Yarn + Fabricjs构建的开源演示系统
  • 基于 Verilog 的时序设计:从理论到实践的深度探索
  • 蓝桥杯每日一题01背包拔高·小A点菜
  • Navicat SqlServer 设置自增主键
  • 【人工智能】大语言模型学习大纲
  • 使用 Django 的 `FileResponse` 实现文件下载与在线预览
  • 【虚幻C++笔记】枚举UENUM、结构体USTRUCT
  • 基于CPU使用paddlex OCR识别图片内容
  • 《 线程池项目:线程池背景知识与整体架构梳理》
  • Postman中Authorization和Headers的区别
  • 【软考网工-实践篇】DHCP 动态主机配置协议
  • 【Vue列表渲染中key与数据绑定的核心问题解析】