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

数据库的函数

  • 单行函数
    • 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;在中国合作者。《中…

服务接口请求 CORS跨域漏洞修复

通过nginx去对Origin请求头的来源地址去做逻辑处理&#xff0c;不在白名单内返回403 具体配置 location / {set $flag 0;if ($http_origin ){set $flag "${flag}1";}if ($http_origin !~* ^(http|https)://www\.abc\.com$){set $flag "${flag}1";}if ($f…

一位OpenAI大模型训练工程师繁忙的一天

早晨&#xff1a;迎接新的一天 7:00 AM - 起床 早晨七点起床。洗漱、吃早餐后&#xff0c;查看手机上的邮件和公司消息&#xff0c;以便提前了解今天的工作安排和任务优先级。 7:30 AM - 前往公司 乘坐地铁前往位于旧金山的OpenAI总部。在地铁上习惯性地阅读一些与人工智能和…

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

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

npm常用命令大全(非常详细)

npm&#xff08;Node Package Manager&#xff09;是Node.js的包管理工具&#xff0c;它允许你安装、更新、删除和管理Node.js项目的依赖。 以下是npm的一些常用命令&#xff0c;按照不同的功能进行分类和解释&#xff1a; 1. 初始化项目 init # 初始化一个新的npm项目&…

【.NET全栈】第16章 Web开发

文章目录 16.1 HTML概述16.1.1 HTML的基本概念16.1.2 HTML语言的基本元素16.1.3 格式设置16.1.4 超级链接16.1.5 图像16.1.6 表格16.1.7 框架16.1.8 表单 16.2 ASP.NET Web Forms的组织16.2.1 认识ASP.NET16.2.2 Web Forms的组织 16.3 Web服务器组件16.3.1 使用Label和TextBox控…

【PyScript】PyScript 基础入门

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

陪诊小程序搭建:构建便捷医疗陪诊服务的创新实践

在当今快节奏的社会&#xff0c;医疗服务与人们的生活息息相关。然而&#xff0c;在医疗体系中&#xff0c;患者往往面临着信息不对称、流程繁琐、陪伴需求得不到满足等问题。为了解决这些问题&#xff0c;我们提出了一种创新的解决方案——陪诊小程序&#xff0c;旨在为患者提…

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

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

2734. 执行子串操作后的字典序最小字符串

Powered by:NEFU AB-IN Link 文章目录 2734. 执行子串操作后的字典序最小字符串题意思路代码 2734. 执行子串操作后的字典序最小字符串 题意 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中&#xff0c;你可以完成以下行为&#xff1a; 选择 s 的任一非空子字符串…

Elasticsearch中的match_phrase_prefix、prefix和wildcard查询详解

Elasticsearch中的match_phrase_prefix、prefix和wildcard查询详解 match_phrase_prefix 查询示例优点缺点 prefix 查询示例优点缺点 wildcard 查询示例优点缺点 总结适用场景性能比较精度比较 在Elasticsearch中&#xff0c;对于以特定前缀开头的查询需求&#xff0c;常用的查…

入门篇:创建和运行Hello World

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

深度学习每周学习总结N2(词嵌入部分:Embeddingbag与Embedding详解)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 总结&#xff1a;one-hot编码和TF-IDF的区别与联系区别联系具体示例1. Embedding详解2. EmbeddingBag详解3. 任务描述4. 任务代码详细…

硬件开发笔记(二十二):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;假如生…

6.27数据分析实训作业1.4(python)

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 读取数据 data pd.read_csv(rC:\Users\XXGC\Desktop\shiuxun3.csv) # 计算订单数量 order_count data["订单编号"].nunique() # 计算总金额 total_amount data["总金额"…

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

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