mysql的内置函数

文章目录

  • mysql的内置函数
    • 时间函数
      • 1. 返回值的数据类型和格式
      • 2. 功能侧重点
      • 3. 函数别名情况
      • 我现在想给一个日期加上十天,然后输出加上十天之后的日期,我该怎么做?
      • 我现在想给一个日期减去两天,然后输出减去两天之后的日期,我该怎么做?
      • 我现在想计算两个日期之间相差多少天,我该怎么做?
      • 我现在创建出了一个表用来记录生日,请问我如何向表中插入一条生日信息?
    • 留言板问题
      • 我现在想创建一个留言板,里面的每条记录属性包含id,留言的内容,还有留言的日期,我该怎么做?
      • 我现在想往这个留言板中插入一条记录,让日期自动填充当前时间,我该怎么做?
      • 我现在想给这个留言板添加一栏,用于存放发表评论的用户名,我该怎么做?
      • 我想输出两分钟以内发出的所有帖子,我该怎么做?
    • 字符串函数
      • charset是什么意思?怎么用?
      • concat是啥意思?怎么用?
      • instr的作用是什么?怎么用?
      • ucase和lcase的作用是什么?怎么用?
      • left的作用是什么?怎么用?
      • replace的作用是什么?怎么用?
      • strcmp的作用是什么?怎么用?
      • substring的作用是什么?怎么用?
      • ltrim和rtrim的作用是什么?怎么用?
      • 我现在想获取emp表的ename列的字符集,我该怎么做?
      • 我想在数据库中,以特定格式展示student表中的信息,具体格式为:“XXX的语文是XXX分,数学是XXX分,英语是XXX分” ,我该怎么做?
      • 我想求学生表中学生姓名占用的字节数 ,我该怎么做?
      • 我想将EMP表ename栏所有名字中的S替换成上海,我该怎么做?
      • 现在我想截取EMP表中ename字段的第二个到第三个字符 ,我该怎么做?
      • 我想以首字母小写的方式显示所有员工的姓名,我该怎么做?
    • 数学函数
      • 取-100.2的绝对值
      • 将23.04向上取整
      • 将23.7向下取整
      • 对12.3456保留2位小数位数(小数四舍五入)
      • 产生随机数
      • 将十进制数10转化成二进制数
      • 将十进制数15转化成16进制数
      • 将16进制数10转化成2进制数
      • 求10除以-3的余数
      • 我现在想生成一个1000以内的随机数
    • 其他函数
      • 我现在想对一个字符串信息进行摘要加密,我该怎么做?
      • ifnull(val1, val2) 这个表达式的值是多少?

mysql的内置函数

时间函数

在 MySQL 中,有三个比较常见的时间函数CURRENT_DATE()CURRENT_TIME()CURRENT_TIMESTAMP() ,这三个函数有啥区别呢?

1. 返回值的数据类型和格式

  • CURRENT_DATE()
    • 数据类型DATE 类型。
    • 格式:返回当前日期,格式为 YYYY-MM-DD,只包含年、月、日信息,不包含时间部分。例如,在 2024年7月15日执行该函数,返回值为 2024-07-15
  • CURRENT_TIME()
    • 数据类型TIME 类型。
    • 格式:返回当前时间,格式为 HH:MM:SS,只包含时、分、秒信息,不包含日期部分 。比如,在 14点35分20秒执行该函数,返回值为 14:35:20
  • CURRENT_TIMESTAMP()
    • 数据类型DATETIME 类型 。
    • 格式:返回当前日期和时间,格式为 YYYY-MM-DD HH:MM:SS,既包含年、月、日,又包含时、分、秒。例如,在 2024年7月15日 14点35分20秒执行该函数,返回值为 2024-07-15 14:35:20

2. 功能侧重点

  • CURRENT_DATE():主要用于获取当前日期,适用于仅需要日期信息的场景,比如统计当天的销售记录、计算某日期范围内的天数等 。
  • CURRENT_TIME():专注于获取当前时间,在记录操作具体时间点(只关注时间部分),或者进行时间相关的逻辑判断(如判断是否在某个时间段内)时会用到 。
  • CURRENT_TIMESTAMP():提供完整的日期和时间信息,适用于需要精确记录事件发生的日期和具体时刻的场景,比如记录用户登录时间、订单创建时间等 。

3. 函数别名情况

  • CURRENT_DATE():有别名 CURDATE(),二者功能完全相同,可根据个人习惯选用。
  • CURRENT_TIME():有别名 CURTIME(),可以互相替换使用。
  • CURRENT_TIMESTAMP():和 NOW() 功能基本一致,都返回当前的日期和时间。不过在某些特殊场景下,NOW() 返回的是语句开始执行的时间,CURRENT_TIMESTAMP() 返回的是函数执行时的时间。

虽然这三个函数都是获取当前相关的日期时间信息,但通过数据类型、格式以及功能侧重点的差异,能满足不同的业务需求。

我现在想给一个日期加上十天,然后输出加上十天之后的日期,我该怎么做?

select + date_add()函数,其中 date_add()第一个参数传入日期,第二个参数传入interval + 日期增量 + 增量单位
像这个题,你想加10天,那第二个参数就是interval 10 day ,如果你想加2年,那第二个参数就是interval 2 year
在这里插入图片描述

我现在想给一个日期减去两天,然后输出减去两天之后的日期,我该怎么做?

select + date_sub()函数,其中date_sub()函数第一个参数传入日期,第二个参数传入日期增量
在这里插入图片描述

我现在想计算两个日期之间相差多少天,我该怎么做?

select datediff('日期1', '日期2');

我现在创建出了一个表用来记录生日,请问我如何向表中插入一条生日信息?

在这里插入图片描述

insert into tmp(birthday) values(current_date());

留言板问题

我现在想创建一个留言板,里面的每条记录属性包含id,留言的内容,还有留言的日期,我该怎么做?

在这里插入图片描述
在这里插入图片描述

我现在想往这个留言板中插入一条记录,让日期自动填充当前时间,我该怎么做?

insert into msg(content, sendtime) values('这是一条评论', now());

我现在想给这个留言板添加一栏,用于存放发表评论的用户名,我该怎么做?

ALTER TABLE msg ADD COLUMN username VARCHAR(50);

我想输出两分钟以内发出的所有帖子,我该怎么做?

select * from msg where date_add(sendtime, interval 2 minute) > now();

字符串函数

charset是什么意思?怎么用?

如何查询msg表中nickname这一列的数据编码方式/采用的字符集?
select charset(nickname) from msg
在这里插入图片描述

concat是啥意思?怎么用?

concat可以将几个小字符串连接成一个大字符串,使用方法如下
在这里插入图片描述

instr的作用是什么?怎么用?

instr(string, substring )用来返回substring 在string中出现的位置
在这里插入图片描述

ucase和lcase的作用是什么?怎么用?

ucase可以将小写字母转成大写字母,lcase可以将大写字母转化成小写字母
使用方法是select + ucase/lcase(‘字符串’);
在这里插入图片描述

left的作用是什么?怎么用?

语法:left(string2, length)
作用:从string2中的左边起截取length个字符
在这里插入图片描述

如果length的长度大于总长,或者lenth小于0,会出现在怎样的情况呢?
length的长度大于总长,那么会返回整个字符串,如果lenth小于0,返回值为空

replace的作用是什么?怎么用?

在str中用replace_str替换search str
在这里插入图片描述

如果原字符串中没有替换目标字符串search str ,此时我们执行replace操作,结果会怎样呢?
结果原字符串无事发生,然后输出
在这里插入图片描述

strcmp的作用是什么?怎么用?

作用是比较两个字符串是否相等,用法是select + strcmp + (‘字符串1’, ‘字符串2’);
在这里插入图片描述

请问上图中,为什么第一个结果是-1,第二个结果是1?
因为’aaa’第一个字符a的ASCII码比’bbb’第一个字符b的ASCII码小,所以第一个返回-1,第二个结果是1

substring的作用是什么?怎么用?

select substring(str, pos,length);
从str的pos下标开始,截取length长度的子字符串,然后返回输出
在这里插入图片描述

如果lenth的值小于0,或者pos+lenth的长度超过了str的总长度,执行substring(str, pos,length);之后会出现什么结果呢?
如果lenth的值小于0,会返回空
如果pos+lenth的长度超过了str的总长度,那就会一直截取到str的末尾

ltrim和rtrim的作用是什么?怎么用?

ltrim(string):去除字符串左侧(前)的空格
rtrim(string):去除字符串右侧(后)的空格
trim(string):去除字符串左右两侧(前和后)的空格
在这里插入图片描述

我现在想获取emp表的ename列的字符集,我该怎么做?

select charset(ename) from emp;在这里插入图片描述

我想在数据库中,以特定格式展示student表中的信息,具体格式为:“XXX的语文是XXX分,数学是XXX分,英语是XXX分” ,我该怎么做?

利用contat将几个字符串连起来
SELECT CONCAT(name, '的语文是', chinese, '分,数学是', math, '分,英语是', english, '分') AS info FROM student;

在这里插入图片描述

我想求学生表中学生姓名占用的字节数 ,我该怎么做?

问题转化:我想查看表中每条记录的name属性信息各占多少字节,我该怎么做?
select lenth(name) from exam_result;
在这里插入图片描述

注意:lenth(str),并不是求str有多少个字符。而是求str占多少个字节

我想将EMP表ename栏所有名字中的S替换成上海,我该怎么做?

这个是原表
在这里插入图片描述

使用replace语句替换ename列中的关键字

在这里插入图片描述

提问:执行过replace语句之后,数据库中ename列中的关键字会被永久修改吗?
不会,这个操作的实际流程是,select先筛选,再对筛选之后的结果(形成一份新文件)进行replace操作

现在我想截取EMP表中ename字段的第二个到第三个字符 ,我该怎么做?

调用substring函数
select substring(ename, 2,1) from emp;

我想以首字母小写的方式显示所有员工的姓名,我该怎么做?

  1. 先使用 SUBSTRING(name, 1, 1) 提取姓名的首字母
  2. 再用 LOWER 函数将其转换为小写
  3. 接着使用 SUBSTRING(name, 2) 获取姓名从第二个字符开始的部分
  4. 最后用 CONCAT 函数将二者拼接起来。
    select concat(lcase(SUBSTRING(name, 1, 1)), SUBSTRING(name, 2)) from emp;

在这里插入图片描述

数学函数

取-100.2的绝对值

select abs(-100.2);

将23.04向上取整

select ceiling(23.04);
ceiling的意思是天花板

将23.7向下取整

select floor(23.7);
floor的英文意思是地板

对12.3456保留2位小数位数(小数四舍五入)

select format(12.3456, 2);

产生随机数

select rand();

将十进制数10转化成二进制数

bin(decimal_number):用于将十进制数转换为二进制数,例如 bin(10) 会得到 ‘1010’

将十进制数15转化成16进制数

hex(decimalNumber):把十进制数转换成十六进制数,像 hex(15) 结果是 ‘F’ 。

将16进制数10转化成2进制数

conv(number, from_base, to_base):实现数的进制转换
其中number 是要转换的数,from_base 是当前进制,to_base 是目标进制

比如 conv(10, 10, 2) 可将十进制的 10 转换为二进制,得到 ‘1010’
conv(10, 2, 16) 可将二进制的 10 转换为16进制,得到 2

求10除以-3的余数

mod(number, denominator):求余函数,计算 number 除以 denominator 的余数
例如 mod(7, 3) 返回 1 。
解释图中的结果
在这里插入图片描述
在 MySQL 中,MOD()函数用于取模运算,其运算规则基于公式a mod b = a - (b * FLOOR(a / b)),这里FLOOR 是向下取整函数 。以下是对图中三个运算的解释:
SELECT MOD(10, -3);
先计算 10 / -3 ,结果约为 -3.33 。
然后对 -3.33 向下取整,得到 -4 。
再根据公式计算 10 - (-3 * -4) = 10 - 12 = -2 ,但 MySQL 中取模结果符号与被除数一致 ,被除数是 10 ,所以最终结果为 1 。

SELECT MOD(-10, 3);
计算 -10 / 3 ,结果约为 -3.33 。
向下取整得到 -4 。
由公式可得 -10 - (3 * -4) = -10 + 12 = 2 ,按照 MySQL 规则,结果符号与被除数一致,最终结果为 -1 。

SELECT MOD(-10, -3);
计算 -10 / -3 ,结果约为 3.33 。
向下取整得到 3 。
依据公式计算 -10 - (-3 * 3) = -10 + 9 = -1 ,结果符号与被除数一致,最终结果就是 -1 。

我现在想生成一个1000以内的随机数

mysql中rand生成随机数的范围是多少?
在 MySQL 里,RAND()函数会生成一个范围在 0(包含)到 1(不包含)之间的随机浮点数

SELECT FLOOR(RAND() * 1000);
SELECT FLOOR(RAND() * 1000); 这条语句的执行结果是一个介于 0 到 999 之间的随机整数(包含 0 和 999)

  1. RAND():生成一个 0(包含)到 1(不包含)之间的随机浮点数,例如 0.1230.987 等。

  2. RAND() * 1000:将随机数放大 1000 倍,结果变为 0(包含)到 1000(不包含)之间的浮点数,例如 123.456999.999 等。

  3. FLOOR(...):对结果进行向下取整,只保留整数部分,且不四舍五入。例如:

    • RAND() * 1000 结果为 123.456FLOOR 后得到 123
    • 若结果为 999.999FLOOR 后得到 999
    • 若结果为 0.123FLOOR 后得到 0

因此,最终结果是 0 到 999 之间的随机整数,每次执行可能返回不同的值。

其他函数

我现在想对一个字符串信息进行摘要加密,我该怎么做?

用md5对密码进行加密:select md5('str')
md5是什么?
MD5(Message-Digest Algorithm 5)属于一种广泛使用的哈希函数,能够把任意长度的数据变换成固定长度(128 位)的哈希值。在数据库里,该函数常常被用于数据加密、数据完整性校验等场景。
在这里插入图片描述
在这里插入图片描述

添加一个新用户时,先对密码进行加密,然后插入insert into user (name, passwd) values ('zhangsan', md5('123456'));
其中md5(‘123456’)表示对密码’123456’进行加密,md5(‘123456’)作为参数,传入value,完成密码的插入

既然如此,那我插入的密码已经不是我最开始的密码了,我还能通过密码在数据库中检索到我刚刚插入的那条记录吗?
可以的兄弟,条件语句可以写成where passwd=md5(‘123456’),这样就能查到

ifnull(val1, val2) 这个表达式的值是多少?

这就是我们C语言中的if语句
if(val1==null) return val2;
else if(val1!=null) return val1;

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

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

相关文章

【动态规划】子序列问题

一、[最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/description/)二、[摆动序列](https://leetcode.cn/problems/wiggle-subsequence/description/)三、[最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-s…

P2P技术应用:去中心化

P2P技术应用:https://www.bilibili.com/video/BV1WH4y1Y7i9 P2P与下载器 P2P技术实现的下载协议: 1、种子文件 2、磁力 3、电骡 播放器: 快车、电骡、迅雷 BT(种子)下载的基本技术原理 网盘与P2P技术 网盘公司的主…

数据结构(C语言篇):(八)栈

目录 前言 一、概念与结构 二、栈的实现 2.1 头文件的准备 2.2 函数的实现 2.2.1 STInit( )函数(初始化) 2.2.2 STDestroy( )函数(销毁) 2.2.3 STPush( )函数(入栈) 2.2.4 STPop( )函数&#…

Elasticsearch数据迁移快照方案初探(一):多节点集群配置踩坑记

背景介绍 在生产环境中,我们经常需要将测试环境的Elasticsearch索引数据迁移到生产环境。这次我们遇到了一个典型的多节点集群快照配置问题:需要为所有节点添加path.repo配置,但过程中遇到了各种挑战。 问题描述 我们的Elasticsearch集群包含…

leedcode 算法刷题第二十天

39. 组合总和 class Solution { public:vector<vector<int>> result;vector<int> temp;void backtructing(vector<int>& candidates, int target, int sum,int start){if(sumtarget){result.push_back(temp);return;}if(sum>target){return;}f…

身份证实名认证API集成—身份核验接口-网络平台安全合规

在数字化浪潮席卷各行各业的今天&#xff0c;网络空间的安全问题日益受到关注。为防范网络诈骗、虚假注册、身份盗用等风险&#xff0c;国家陆续出台多项法律法规&#xff0c;如《网络安全法》《个人信息保护法》等&#xff0c;明确要求互联网服务提供者落实用户真实身份核验机…

谷歌TIGER爆火!生成式召回颠覆推荐系统:用语义ID破解冷启动+多样性难题,3大数据集性能碾压传统模型

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》&#xff08;跟我一起学人工智能&#xff09;【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

分享一个实用的B站工具箱(支持音视频下载等功能)

文章目录 📖 介绍 📖 🏡 演示环境 🏡 📒 一款实用的B站工具箱 📒 💥 项目亮点 💥 🛠️ 下载与安装 🚀 使用指南 📢 注意事项 ⚓️ 相关链接 ⚓️ 📖 介绍 📖 很多小伙伴在B站追番或者学习时,总会遇到一个很头疼的问题:想把视频下载到本地,要么被限…

大话 IOT 技术(4) -- 答疑篇

文章目录前言手机能与设备直接通信吗多协议能统一用一个吗假设我们统一用http协议假设我们统一用mqtt协议bypass服务端和设备不能mqtt直接通信设备必有wifi 和蓝牙功能设备为什么不能自己连接网络配网模式是什么后话当你迷茫的时候&#xff0c;请点击 物联网目录大纲 快速查看前…

机器视觉学习-day14-绘制图像轮廓

1. 轮廓的概念轮廓是目标物体或者区域在图像外部的边界线&#xff0c;通常由一系列像素点相连组成&#xff0c;这些像素点共同构成了一个封闭的形状&#xff0c;这样形状就是轮廓。轮廓与边缘不同&#xff1a;轮廓是连续的&#xff0c;边缘可以连续也可以离散轮廓是完整的&…

Linux shell getopts 解析命令行参数

Linux shell getopts 解析命令行参数getopts语法 getopts 选项字符串 名称 [ 参数 ...]示例1&#xff08;有前置冒号&#xff09;: while getopts ":hdo:" optname; do ...... done示例1&#xff08;无前置冒号&#xff09; while getopts "hdo:" optname…

DeepInteraction++基于多模态交互的自动驾驶感知与规划框架

DeepInteraction++基于多模态交互的自动驾驶感知与规划框架 1 论文核心概念 DeepInteraction++ 提出了一种名为"模态交互"(modality interaction)的新策略,用于自动驾驶中的多模态(LiDAR 和相机)感知任务。其核心思想是不将多模态信息融合为单一表示,而是分别…

忆联参与制定消费级SSD团体标准正式出版! 以“高可靠”引领行业提质增效与用户体验升级

引言​在AIPC爆发、数据价值凸显的当下&#xff0c;存储设备已超越简单容器&#xff0c;成为智能体验基石&#xff0c;其性能与可靠性直接关乎用户效率与资产安全。然而&#xff0c;消费级SSD长期缺乏统一权威的可靠性标准&#xff0c;使厂商缺乏质量对标依据&#xff0c;用户亦…

微服务搭建(SpringBoot + Dubbo + Nacos)

1.项目接口2. 编辑pom.xml和application.yml文件2.1父工程pom.xml<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:s…

android中常见布局及其约束

0 布局的定义 布局可以理解为一种​​容器​​&#xff0c;用于​​组织与排列界面上的控件​​。 布局是一个相框&#xff0c;控件就是你要展示的照片。• 你&#xff08;布局规则&#xff09;决定这些照片怎么排列&#xff1a;是从上到下整齐放&#xff08;LinearLayout&am…

Rust语言能干什么

Rust 语言的应用范围非常广&#xff0c;几乎覆盖了现代软件开发的全部领域。它最初以“系统级语言”身份出道&#xff0c;但现在已经远远超出了这个范畴。下面我从几个关键方向给你梳理一下&#xff0c;Rust 到底能干什么&#xff0c;以及为什么在这些领域它特别有优势。 1. 系…

只需一个设置就可以解决Microsoft Edge浏览器打不开网页的问题

Microsoft Edge是一款功能强大的网络浏览器&#xff0c;预装在Windows 10、11系统中。通过这个简单易懂的教程&#xff0c;学习如何修复Microsoft Edge浏览器打不开的问题。1、打开计算机找到C盘&#xff0c;双击打开&#xff1a;2、打开【用户】➜【Admin】➜【AppData】➜【L…

AI 应用 图文 解说 (二) -- 百度智能云 ASR LIM TTS 语音AI助手源码

文章的目的为了记录AI应用学习的经历&#xff0c;降低AI的入门难度。同时记录开发流程和要点有些记忆模糊&#xff0c;防止忘记。也希望可以给看到文章的朋友带来一些收获。 相关链接&#xff1a; AI 应用 图文 解说 (一) -- 百度智能云 实现 语音 聊天-CSDN博客 AI 应用 图文 …

计算机Python毕业设计推荐:基于Django的博客网站设计与实现【python/大数据/深度学习/机器学习定制】

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、项目介绍二、…

当 AI 开始 “筛选” 信息:算法偏见会加剧认知鸿沟吗?如何构建公平的 AI 生态?

AI 筛选信息的现状与原理​在信息爆炸的时代&#xff0c;AI 筛选信息已成为各领域不可或缺的关键技术。在社交媒体平台上&#xff0c;如抖音、小红书等&#xff0c;AI 根据用户的点赞、评论、浏览历史等数据&#xff0c;精准推送用户可能感兴趣的内容&#xff0c;极大提升了用户…