一篇文章带你玩懂数据库的基础函数

数据库的函数

  • 单行函数
    • 1.数据函数
    • 2.字符串函数
    • 3.时间函数
    • 4.流程函数
  • 多行函数
    • 聚合函数

阅读指南:
本文章讲述了对于数据库的单行和多行函数,如果读者感兴趣,后续我们会更新高级的操作在我们的对于数据库教程的合集中,大家可以来很我们一起学习讨论
合集链接:
数据库详细基础教程

单行函数

含数据函数,字符串函数,时间函数,流程函数

1.数据函数

函数名用法
ABS(x)返回x的绝对值
SIGN(X)返回x的符号。正数返回1,负数返回-1,0返回0
PI()返回圆周率的值
CEIL(X) , CEILING(X)返回大于或等于某个值的最小整数(取大函数)
FLOOR(x)返回小于或等于某个值的最大正数(取小函数)
LEAST(e1,e2,e3……)返回列表中的最小值
GREATEST(e1,e2,e3……)返回列表中的最大值
MOD(x, y)返回X除以Y后的余数
RAND()返回0~1的随机数
RAND(x)返回0~1的随机数,其中x用作种子值,相同的x会产生相同的随机数
ROUND(X)返回一个对x进行四舍五入的值
ROUND(x, y)返回应该对x进行四舍五入的值,同时保留到小数点后y位
TRUNCATE(x, y)返回数字x阶段为y位小数的结果
SQRT(x)返回x的平方根,当x的值为负数时,返回NULL

示例:

SELECT ABS(-5), CEIL(2.3), CEIL(-2.3), FLOOR(2.3), FLOOR(-2.3), RAND(), RAND(8), ROUND(2.3, 1), TRUNCATE(2.36, 1);

在这里插入图片描述

2.字符串函数

函数名用法
CHAE_LENGTH(s)返回字符串s的字符数,作用于CHARACTER_LENGTH(s)相同
LENGTH(s)返回字符串s的字节数,和字符集有关
CONCAT(s1,s2,s3……)连接s1,s2……,Sn作为一个字符串
INSERT(str, idx, len, replaceStr)将字符串str从第idx位置开始,len个字符长的子串替换为字符串replaceStr
REPLACE(str, a, b)用字符串b替换字符串str中所有出现的字符串a
UPPER(s)或UCASE(s)将字符串s的所有字母转成大写字母
LOWER(s)或LCASE(s)将字符串s的所有字母转成小写字母
LEFT(str, n)返回字符串str最左边的n个字符
RIGHT(str, n)返回字符串str最右边的n个字符
TRIM(s)去掉字符串s的开始与结尾的空格
SUBSTR(s, index, len)返回从字符串s的index位置去len个字符
FIND_IN_SET(s1, s2)返回字符串s1在字符串s2中出现的位置,其中s2字符串是一个一逗号分割的字符串
REVERSE(s)返回s反转后的字符串
NULLIF(value1, value2)比较两个字符串,如果value1与value2相等,则返回NULL,否则返回value1

示例:

SELECT CHAR_LENGTH('abc') , CONCAT('%','娃娃','%') , FIND_IN_SET('aa','cc,dd,aa,bb,gg,aa');

在这里插入图片描述

3.时间函数

常用的有:

获取当前时间:

​ now() 获取当前详细时间,返回 YYYY-MM-DD HH:MM:SS

​ curdate() 获取当前年月日,返回 YYYY-MM-DD

​ curtime() 考虑系统的时区,返回 HH:MM:SS

​ utc_date() utc_time() 不会考虑时区,返回 HH:MM:SS

时间部分提取:

​ year(时间) 获取传入的时间参数的年份,返回 YYYY

​ month(时间) 获取传入的时间参数的月份,返回 MM

​ week(时间) 获取传入的时间参数的周期,返回的是距离跨年的星期数

​ weekday(时间) 获取传入的时间参数的日期,返回 D(即星期几,其中0是星期1 ,即所有的返回值加一,则是当前的日期)

​ dayofweek(时间) 获取传入的时间参数的日期,返回 D(即星期几,其中1是星期1 )

示例:

SELECT NOW(), CURDATE(), CURTIME(), UTC_DATE(),UTC_TIME(), YEAR(NOW()), MONTH(NOW()), WEEK(NOW()), WEEKDAY(NOW()), DAYOFWEEK(NOW()), DAY(NOW()), DAYOFMONTH(NOW());

在这里插入图片描述

时间运算:

​ adddate | date_add(时间锚点,interval ± 值 对应时间单位的英文 day month year…)

​ subdate | date_sub(时间锚点,interval ±值 对应时间单位的英文 day month year…)

​ addtime(时间,秒) 时间的±秒的时间运算

​ datediff(日期,日期) 算两个日期之间间隔的天

​ timediff(时间,时间) 算两个时间间隔时间 时:分:秒

示例:

SELECT ADDDATE(NOW(),INTERVAL 1 MONTH), ADDDATE(NOW(),INTERVAL -1 MONTH), ADDTIME('10:10:10',20), ABS(DATEDIFF(CURDATE(),'2024-11-11')) , TIMEDIFF('12:00:00','10:00:00');

在这里插入图片描述

时间格式化输出:

​ DATE_FORMAT(date, format_string) 将日期或时间格式化为指定的format_string

​ DATE_FORMAT(时间,’格式字符串‘)

​ TIME_FORMAT(time, format_string) 将时间格式化为指定的format_string

​ TIME_FORMAT(时间,’格式字符串‘)

​ ♦️STR_TO_DATE(non_standard_date_string, format_string) 将非标准的日期字符解析为标准的日期格式字符

​ STR_TO_DATE(‘非标注时间字符串’,‘非标注时间字符串对应的格式’)

关于时间格式化的占位符:

格式描述格式描述
%a缩写星期名%pAM 或 PM
%b缩写月名%r时间,12-小时(hh:mm:ss AM 或 PM)
%c月,数值%S秒(00-59)
%D带有英文前缀的月中的天%s秒(00-59)
%d月的天,数值(00-31)%T时间, 24-小时 (hh:mm:ss)
%e月的天,数值(0-31)%U周 (00-53) 星期日是一周的第一天
%f微秒%u周 (00-53) 星期一是一周的第一天
%H小时 (00-23)%V周 (01-53) 星期日是一周的第一天,与 %X 使用
%h小时 (01-12)%v周 (01-53) 星期一是一周的第一天,与 %x 使用
%I小时 (01-12)%W星期名
%i分钟,数值(00-59)%w周的天 (0=星期日, 6=星期六)
%j年的天 (001-366)%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%k小时 (0-23)%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%l小时 (1-12)%Y年,4 位
%M月名%y年,2 位
%m月,数值(00-12)

示例:

SELECT NOW();

在这里插入图片描述

SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');

在这里插入图片描述

SELECT TIME_FORMAT(NOW(),'%H:%i:%s');

在这里插入图片描述

# 前端-> 2024年04月20日 -> 后端 -> 数据库 -> str_to_date -> 标准时间 ->   '2024-04-20'
SELECT STR_TO_DATE('2024年04月20日' , '%Y年%m月%d日');

在这里插入图片描述

4.流程函数

i. IF函数

用于sql执行条件时的判断,类似于三目表达式

IF(condition, true_value, false_value)

解释:当 condition 成立时,返回 true_value,否则返回 false_value。

ii. IFNULL函数

用于对NULL值的处理

IFNULL(column, null_value)

解释:当指定列column值为NULL时,去null_value的值作为结果。

iii. CASE函数

# 语法:
# 格式1:
# 当condition的值为真的时候,输出对应的result,从上倒下扫描,满足一条则输出完毕后结束CASE语句
CASEWHERE condition1  THEN result1	 # 自带break的操作WHERE condition2  THEN result2WHERE condition3  THEN result3	WHERE condition4  THEN result4……ELSE 
END [AS 别名]  # 当需要用到起别名这种方法的时候再用# 格式2
# 当expr表达式的返回值满足下面哪个value值时,就输出对应的result值,从上倒下扫描,满足一条则输出完毕后结束CASE语句
CASE exprWHERE  value1 THEN result1	 # 自带break的操作WHERE  value2 THEN result2WHERE  value3 THEN result3WHERE  value4 THEN result4……ELSE 
END [AS 别名]		# 当需要用到起别名这种方法的时候再用

整体示例:

# 根据员工生日,如果在1990年前,则加薪10%,否则加薪5%
SELECT ename, salary, birthday, IF(YEAR(birthday) < 1990, salary * 1.1, salary * 1.05) AS new_salary FROM t_employee;
SELECT ename, salary, birthday, ROUND(IF(YEAR(birthday) < 1990, salary * 1.1, salary * 1.05),1) AS new_salary FROM t_employee;# 查询员工编号和性别,并生成一个type列,其内容根据性别显示男员工or女员工
SELECT eid, ename, gender, IF(gender = '男', '男员工', '女员工' ) AS TYPE FROM t_employee;# 查询员工的姓名和工资以及奖金数额度(奖金 = salary * commission_pct)
SELECT ename, salary, salary * IFNULL(commission_pct, 0) AS 金数额度 FROM t_employee;# 查看姓名,性别,以及补助金额(补助金额按照性别的基准值*commission_pct),男性的基准值为2000,女性为3000
# 使用case when
SELECT ename, gender, commission_pct,CASEWHEN gender = "女" THEN 2000 * IFNULL(commission_pct, 0)WHEN gender = "男" THEN 3000 * IFNULL(commission_pct, 0)ELSE 0	END AS 补助金额1FROM t_employee;# 使用case 表达式|列名 when value then result
SELECT ename, gender, commission_pct,CASE genderWHEN "女" THEN 2000 * IFNULL(commission_pct, 0)WHEN "男" THEN 3000 * IFNULL(commission_pct, 0)ELSE 0	END AS 补助金额2FROM t_employee;

多行函数

聚合函数

对一群数据进行集中处理(求和,最小/大值,平均值)

函数名用法
AVG(列名)计算某一列的平均值(数值类型)
SUM(列名)计算某一列的和(数值类型)
MIN(列名)计算某一列的最小值(任意类型)
MAX(列名)计算某一列的最大值(任意类型)
COUNT(列名 / * / 1)计算某一列或者行的出现次数;其中1是代表行,1代表第一行;* 表示所有列(任意类型)

注:聚合函数不能嵌套

示例:

# 求平均工资,最大最小值,总工资
SELECT AVG(salary), MIN(salary), MAX(salary), SUM(salary) FROM t_employee;# 求最大年龄和最小年龄
SELECT MIN(birthday) AS 最大生日, MAX(birthday) AS 最小生日 FROM t_employee; # 求员工数量和有奖金的员工数量
SELECT COUNT(*), COUNT(1),COUNT(commission_pct) FROM t_employee;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

唐兴通:银行金融数字化转型营销客户销售个金对公讲师培训师

唐兴通 数字化转型顾问、金融产品营销专家、数字化销售增长教练、沃顿商学院演讲嘉宾。全球创新增长战略大家EM罗杰斯&#xff08;创新的扩散&#xff09;、杰弗里摩尔&#xff08;跨越鸿沟&#xff09;、亨利切萨布鲁夫&#xff08;开放式创新&#xff09;在中国合作者。《中…

秋招倒计时?到底需要准备到什么程度?

秋招倒计时&#xff1f;需要准备到什么程度&#xff1f; 秋招&#xff0c;面向全国的毕业生&#xff0c;招聘的激烈程度可想而知&#xff01;按照往年时间&#xff0c;秋招通常从八月初开始&#xff0c;九月黄金期&#xff0c;十月中后期。距今刚好差不多60天&#xff0c;时间其…

【PyScript】PyScript 基础入门

【PyScript】PyScript 基础入门 PyScript 是一个为了支持 Python 运行在浏览器的开源平台。 1.PyScript 应用程序的创建 PyScript 程序需要以下三个内容 一个提供给浏览器的 index.html 文件。PyScript 的运行环境描述&#xff0c;通常是一个 pyscript.json 或 pyscript.to…

从零到一打造自己的大模型:模型训练

前言 最近看了很多大模型&#xff0c;也使用了很多大模型。对于大模型理论似乎很了解&#xff0c;但是好像又缺点什么&#xff0c;思来想去决定自己动手实现一个 toy 级别的模型&#xff0c;在实践中加深对大语言模型的理解。 在这个系列的文章中&#xff0c;我将通过亲手实践…

入门篇:创建和运行Hello World

DevEco Studio安装完成后&#xff0c;可以通过运行Hello World工程来验证环境设置是否正确。接下来以创建一个支持Phone设备的工程为例进行介绍。 创建一个新工程 打开DevEco Studio&#xff0c;在欢迎页单击Create Project&#xff0c;创建一个新工程。根据工程创建向导&…

硬件开发笔记(二十二):AD21软件中创建元器件AXK5F80337YG原理图库、封装库和3D模型

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140007117 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

EE trade:贵金属投资的优点及缺点

贵金属(如黄金、白银、铂金和钯金)一直以来都是重要的投资和避险工具。它们具有独特的物理和化学特性&#xff0c;广泛应用于各种行业&#xff0c;同时也被视为财富储备。在进行贵金属投资时&#xff0c;了解其优点和缺点对于做出明智的投资决策至关重要。 一、贵金属投资的优…

240万亿巨量数据被洗出,足够训出18个GPT-4!全球23所机构联手,清洗秘籍公开

是时候把数据Scale Down了&#xff01;Llama 3揭示了这个可怕的事实&#xff1a;数据量从2T增加到15T&#xff0c;就能大力出奇迹&#xff0c;所以要想要有GPT-3到GPT-4的提升&#xff0c;下一代模型至少还要150T的数据。好在&#xff0c;最近有团队从CommonCrawl里洗出了240T数…

算法刷题笔记--二叉树篇

感觉树这一章还是没搞清楚&#xff0c;可能是基础不扎实的缘故&#xff0c;学完C巩固底层知识后二刷 理论基础 确定递归函数的参数和返回值 :确定哪些参数是递归的过程中需要处理的&#xff0c;那么就在递归函数里加上这个参数&#xff0c; 并且还要明确每次递归的返回值是什么…

第二证券:美股市场新结算制度:T+2还是T+1?

美股商场新结算制度&#xff1a;T1结算。 从2024年5月28日开端&#xff0c;美国股票生意的结算周期将从之前的T2&#xff08;生意日后两天&#xff09;缩短为T1&#xff0c;即投资者当天卖出的股票&#xff0c;在生意后一个工作日就能收到结算的资金。 例如&#xff0c;假如生…

OpenFast软件中5MW_Land_DLL_WTurb.fst文件解读

这个文件5MW_Land_DLL_WTurb.fst是OpenFAST软件用于模拟NREL 5.0 MW基准陆上风力涡轮机的输入文件。该文件包含了多个部分&#xff0c;每个部分定义了不同的仿真设置和参数。以下是对文件主要内容的总结&#xff1a; 1. 标题和描述 文件标题说明这是OpenFAST的一个输入文件&a…

电脑的D盘E盘F盘突然消失了 电脑只剩下C盘了其他盘怎么恢复

现如今随着时代的发展&#xff0c;无纸化办公成为主流&#xff0c;这主要归功于电脑&#xff0c;能够通过电脑完成的工作绝不使用纸质文件&#xff0c;这不仅提高了工作效率&#xff0c;也让一些繁杂的工作变的更加简单。不过电脑毕竟是电子产品&#xff0c;不可避免的会出现一…

Java日志 - JUL

一、JUL学习总结 &#xff08;1&#xff09;总结 JDK自带的日志系统中已经为我们创建了一个顶层的RootLogger&#xff0c;可以针对这个顶层的RootLogger设置多个Handler&#xff08;如ConsoleHandler, FileHandler等&#xff09;&#xff0c;如果想在控制台输出debug级别以上的…

定时推送邮件如何与自动化工作流程相结合?

定时推送邮件如何设置&#xff1f;怎么优化推送邮件的发送频率&#xff1f; 在现代商业环境中&#xff0c;自动化工作流程和定时推送邮件是提高效率和优化运营的重要工具。AoKSend将探讨如何将这两者结合起来&#xff0c;以实现更高效的工作流程和更好的客户沟通。 定时推送邮…

昇思25天学习打卡营第4天|MindSpore快速入门-FCN图像语义分割

FCN图像语义分割 全卷积网络&#xff08;Fully Convolutional Networks&#xff0c;FCN&#xff09;是UC Berkeley的Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation[1]一文中提出的用于图像语义分割的一种框架。 FCN是首个端到端&#…

valgrind调试c/c++内存问题:非法地址访问_内存泄漏_越界访问

1.valgrind命令 调试内存问题: valgrind --leak-checkfull 更新详细的显示: valgrind --leak-checkfull --show-leak-kindsall valgrind提示信息汇总 内存泄漏 lost in loss record 丢失记录 , 内存泄漏实例[[#2.内存泄漏–不完全释放内存|实例链接]]段错误 Process termina…

科技助力行政执法:4G无线网络技术在管理指挥中心的应用

随着科技的飞速发展&#xff0c;4G无线网络技术已经越来越成熟&#xff0c;为行政执法管理带来了前所未有的便利与效率。特别是在管理指挥中心&#xff0c;通过实时观看高清现场画面&#xff0c;执法人员可以随时进行调度指挥&#xff0c;掌握行政执法队伍的全过程&#xff0c;…

Bev系列算法总结

文章目录 1. LSS-Based1.1 BevDet1.2 BevDepth1.3 BevStereo1.4 SoloFusion1.4 VideoBev1.5 总结2. Bev IPM Based(3D to 2D)2.1 Bevformer v12.1 Bevformer v22. sparse query2.1 petr v12.2 petr v22.3 stream petr2.4 DETR 3d2.5 sparse4Dsparse4D v11. LSS-Based 1.1 Be…

llamafactory-llama3微调中文数据集

一、定义 https://github.com/SmartFlowAI/Llama3-Tutorial/tree/main 基准模型测试opencompass 离线测评数据准备微调训练合并测试人工审核对比 二、实现 基准模型测试 基准模型 llama3-8b https://zhuanlan.zhihu.com/p/694818596? https://github.com/SmartFlowAI/Llam…

品牌窜货治理:维护市场秩序与品牌健康的关键

品牌在各个渠道通常都会设定相应的销售规则&#xff0c;其中常见的便是区域保护制度&#xff0c;比如 A 地区的货物只能在 A 地区销售&#xff0c;各区域的产品价格和销售策略均有所不同&#xff0c;因此 A 地区的货物不能流向 B 地区&#xff0c;否则就被称为窜货。 窜货现象不…