MYSQL学习笔记(五):单行函数(字符串、数学、日期时间、条件判断、信息、加密、进制转换函数)讲解
前言:
- 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇+,涵盖入门、进阶、高级(一些原理分析);
- 这一篇是讲解单行函数,当然mysql函数很多哈,只有多用才能记得住;
- 这些函数,如果不用,记得再牢都会忘记(我是这样的),但是可以先看一下,动手打一下,会现用现查即可,而且现在AI这么发达不是么;
- 虽然MYSQL命令很多,但是自己去多敲一点,到后面忘记了,查一下就可以回忆起来使用了;
- 这一系列也是本人学习MYSQL做的笔记,也是为了方便后面忘记查询;
- 参考资料:尚硅谷、黑马、csdn和知乎博客;
- 欢迎收藏 + 关注,本人将会持续更新。
文章目录
- 单行函数
- 字符串函数
- 数学函数
- 日期和时间函数
- 条件判断函数
- 系统信息函数
- 加密函数
- 进制转换
- 2.IP地址转换
课程使用数据文件: 后台私信获取。
单行函数
MySQL 函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。
MySQL 包含了大量并且丰富的函数,这里只讲解一部分,剩下的比较罕见的函数我们可以到「MySQL 参考手册」查询。
字符串函数
函数 | 作用 |
---|---|
UPPER(列|字符串) | 将字符串每个字符转为大写 |
LOWER(列|字符串) | 将字符串每个字符转为小写 |
CONCAT(str1,str2,…) | 将所有字符串连接成一个字符串 |
REPLACE(列|字符串,新字符串) | 使用新字符串替换旧字符串 |
LENGTH(列|字符串) | 求字符串长度 |
SUBSTR(列|字符串,开始点[,长度]) | 字符串截取(字符串,开始点) |
LEFT(str,len) | 获取字符串左边len个字符组成的字符串 |
RIGHT(str,len) | 获取字符串右边len个字符组成的字符串 |
MID(str,pos,len) | 获取字符串中从pos(第几个)位置开始,长度为len的字符串 |
ASCII(字符) | 返回与指定字符对应的十进制整数 |
CHR(数字) | 返回与整数对应的字符 |
RPAD(列|字符串,长度,填充字符) LPAD(列|字符串,长度,填充字符) | 用指定的字符在字符串右或左填充 |
LTRIM(字符串)、RTRIM(字符串) | 去掉字符串左或右的空格 |
TRIM(列|字符串) | 去掉字符串左右空格 |
INSTR(列|字符串,要查找的字符串,开始位置,出现位置) | 查找一个子字符串是否在指定的位置上出现 |
- 把员工姓名首字母大写,其他字母小写
mysql> select concat(upper(left(ename, 1)), lower(substr(ename, 2))) from emp;
+--------------------------------------------------------+
| concat(upper(left(ename, 1)), lower(substr(ename, 2))) |
+--------------------------------------------------------+
| Yxz |
| Smith |
| Allen |
| Ward |
| Jones |
| Martin |
| Blake |
| Clark |
| Scott |
| King |
| Turner |
| Adams |
| James |
| Ford |
| Miller |
+--------------------------------------------------------+
15 rows in set (0.00 sec)
- 查询出姓名长度是5的所有员工信息
mysql> select * from emp e where length(e.ename)=5;
+-------+-------+----------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+-------+----------+------+------------+------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600 | 300 | 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975 | NULL | 20 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000 | NULL | 20 |
| 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100 | NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30 |
+-------+-------+----------+------+------------+------+------+--------+
8 rows in set (0.00 sec)
- 查询出员工姓名前三个字母是‘JAM’的员工
mysql> select * from emp e where substr(e.ename, 1, 3)='JAM';
+-------+-------+-------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+-------+-------+------+------------+------+------+--------+
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30 |
+-------+-------+-------+------+------------+------+------+--------+
1 row in set (0.00 sec)
- 查询所有员工姓名的前三个字母
mysql> select substr(ename, 3) from emp;
+------------------+
| substr(ename, 3) |
+------------------+
| z |
| ITH |
| LEN |
| RD |
| NES |
| RTIN |
| AKE |
| ARK |
| OTT |
| NG |
| RNER |
| AMS |
| MES |
| RD |
| LLER |
+------------------+
15 rows in set (0.00 sec)
数学函数
函数 | 作用 |
---|---|
ROUND(数字[,保留位数]) | 根据指定的保留位数对小数进行四舍五入,如果不指定保留位数,则小数点之后的数字全部进行全部四舍五入 |
TRUNCATE(数字[,截取位数]) | 保留指定位数的小数,如果不指定,则表示不保留 |
CEIL(数字),CEILING(数字) | 对小数向上取整 |
FLOOR(数字) | 对小数向下取整 |
RAND([n]) | 随机返回0到1.0之间的小数,如果指定n每次产生的就都是重复的 |
通过数据库的函数,生成一个六位数字的随机验证码。
SELECT LPAD(TRUNCATE(RAND()*1000000,0),6,'0');# 随机生产,如果少于6位,则用0填充
mysql> select lpad(truncate(rand()*1000000, 0), 6, '0');
+-------------------------------------------+
| lpad(truncate(rand()*1000000, 0), 6, '0') |
+-------------------------------------------+
| 870583 |
+-------------------------------------------+
1 row in set (0.00 sec)
日期和时间函数
函数 | 作用 |
---|---|
CURDATE(),CURRENT_DATE() | 返回当前日期 |
CURTIME(),CURRENT_TIME() | 返回当前时间 |
NOW(),CURRENT_TIMESTAMP(),LOCALTIME(), SYSDATE(),LOCALTIMESTAMP() | 返回会当前日期和事件 |
YEAR(日期) | 返回日期中的年份 |
MONTH(日期) | 返回日期中的月份[1,12] |
DAY(日期) | 返回日期中的天[1,31] |
HOUR(时间) | 返回时间中的小时 |
MINUTE(时间) | 返回实践中的分钟 |
SECOND(时间) | 返回时间中的秒 |
DAYOFWEEK(日期) | 返回星期几,1星期日,2星期一 |
WEEKDAY(日期) | 返回星期几,0星期一,1星期二 |
DAYOFYEAR(日期) | 计算指定日期是本年第几天 |
DAYOFMONTH(日期) | 计算指定日期是本月第几天 |
QUARTER(日期) | 计算指定日期是第几季度 |
TIME_TO_SEC(time) | 将指定时间转换为秒 |
SEC_TO_TIME(sec) | 将以秒为单位的时间转换为时分秒的格式 |
DATEDIFF(d1,d2) | 计算两个日期相隔的天数 |
ADDDATE(date,n) | 计算指定日期加上n天后的日期 |
SUBDATE(date,n) | 计算指定日期减去n天后的日期 |
ADDTIME(time,n) | 计算指定时间加上n秒后的时间 |
SUBTIME(time,n) | 计算指定时间减去n秒后的时间 |
DATE_FORMAT(date,f) | 按格式返回日期 |
TIME_FORMAT(time,f) | 按格式返回时间 |
条件判断函数
函数 | 作用 |
---|---|
IF(expr,v1,v2) | 如果表达式expr成立,返回结果v1;否则,返回结果v2。 |
IFNULL(v1,v2) | 如果v1的值不为NULL,则返回v1,否则返回v2 |
CASE | 分支(详见下面) |
IF(expr,v1,v2)
SELECT IF(1>0,'true','false');
->true
IFNULL(v1,v2)
SELECT IFNULL(NULL,'wy');
->wy
-
CASE
语法1:
CASEWHEN expr1 THEN V1WHEN expr2 THEN V2...ELSE vn
END
SELECT CASE WHEN 1 > 0THEN '1 > 0'WHEN 2 > 0THEN '2 > 0'ELSE '3 > 0'END
->1 > 0
语法2:
CASE expr WHEN e1 THEN v1WHEN e1 THEN v1...ELSE vn
END
SELECT CASE 1 WHEN 1 THEN '我是1'WHEN 2 THEN '我是2'
ELSE '你是谁'
系统信息函数
系统信息函数用来查询MySQL数据库的系统信息。
函数 | 作用 |
---|---|
VERSION() | 返回数据库的版本号 |
CONNECTION_ID() | 返回服务器的连接数 |
DATABASE()、SCHEMA | 返回当前数据库名 |
USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()、CURRENT_USER | 返回当前用户 |
CHARSET(str) | 返回字符串str的字符集 |
COLLATION(str) | 返回字符串str的字符排列方式 |
加密函数
加密函数是MySQL用来对数据进行加密的函数.
函数 | 作用 |
---|---|
MD5(str) | 对字符串str进行散列,可以用于一些普通的不需要解密的数据加密,如密码 |
sha1 | 对字符串str进行散列,可以用于一些普通的不需要解密的数据加密,如密码,比MD5更安全 |
进制转换
函数 | 作用 |
---|---|
BIN(x) | 返回x的二进制 |
HEX(x) | 返回x的十六进制 |
OCT(x) | 返回x的八进制 |
CONV(x,from_base,to_base) | 将from_base进制的x,转成to_base进制 |
SELECT BIN(10),HEX(10),OCT(10),CONV(16,16,10);
->1010 A 12 22
2.IP地址转换
函数 | 作用 |
---|---|
INET_ATON(IP) | 将点分十进制的IP地址转为数字 |
INET_NTOA(number) | 将数字形式的IP转为点分十进制 |
SELECT INET_ATON('192.168.0.1')->3232235521
SELECT INET_NTOA(3232235521)->192.168.0.1
相关文章:
MYSQL学习笔记(五):单行函数(字符串、数学、日期时间、条件判断、信息、加密、进制转换函数)讲解
前言: 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇,涵盖入门、进阶、高级(一些原理分析);这一篇是讲解单行函数,当然mysql函数很多哈,只有多用才能记得…...

Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert
概述 关于Prometheus和Grafana的安装,略过。 写在前面 Dashboard:仪表板,可包含多个PanelPanel:面板,Dashboard中的组件 如有写得不对的地方,烦请指出。 新增仪表板 点击右上角的 选择New dashboard…...
(java版本)基于Misty1算法的加密软件的实现-毕业设计
一、基于Misty1算法的加密软件(Java)的实现 随着计算机网络及通信技术的飞速发展,信息安全成了信息社会急需解决的最重要的问题之一,密码技术是保证信息安全的核心技术。本文用JAVA语言开发了一个基于Misty1算法的加密软件&#x…...
Spring注解篇:@RestController详解
全文目录: 开篇语前言摘要概述源码解析使用案例分享代码分析使用场景优缺点分析测试用例 应用场景案例优缺点分析核心类方法介绍测试用例测试用例分析使用场景优缺点分析测试用例 小结总结文末 开篇语 哈喽,各位小伙伴们,你们好呀,…...
C++:将字符数组rkpryyrag,每个字母转换为其前面第13个字母后输出,如果超过a则从z再继续接着数。例如:b前面第1个字母是a。a前面第3个字母是x。
代码如下: #include <iostream> #include <string> using namespace std;int main(){string str "rkpryyrag";for (int i 0; i < str.length(); i){if (str[i] > a && str[i] < z){if (str[i] - a < 13){cout <<…...
《探秘鸿蒙Next:人工智能助力元宇宙高效渲染新征程》
在元宇宙的宏大愿景中,高效的渲染技术是构建沉浸式虚拟世界的关键。鸿蒙Next凭借与人工智能的深度融合,为元宇宙的渲染带来了全新的解决方案和无限可能。 智能场景分析与优化 人工智能能够对元宇宙场景进行智能分析。鸿蒙Next可以利用AI技术对场景中的…...
微前端qiankun的部署
微前端qiankun的部署 本地开发主应用配置启动端口子应用配置启动端口测试环境部署:场景 1:主应用和微应用部署到同一个服务器(同一个 IP 和端口)微应用都放在在一个特殊名称(不会和微应用重名)的文件夹下主应用配置子应用配置配置nginx本地开发 主应用配置启动端口 打开…...

HTML表格-掌握表格标签与属性
HTML表格是网页设计中用于展示数据的强大工具,它通过一系列标签和属性来控制表格的布局和样式。 一、HTML表格的基本结构 HTML表格由<table>标签定义,内部包含多个行(<tr>)、单元格(<td>或<th&…...

PID控制的优势与LabVIEW应用
PID控制(比例-积分-微分控制)已在工业控制领域得到广泛应用,尤其在实时控制和自动化系统中,其核心优点是简单、稳定且高效。尽管许多现代控制方法(如自适应控制、模型预测控制等)逐渐崭露头角,P…...

全球化趋势与中资企业出海背景
1. 全球化趋势与中资企业出海背景 1.1 全球经济格局变化 全球经济格局正经历深刻变革,新兴经济体崛起,全球产业链重塑,中资企业出海面临新机遇与挑战。据世界银行数据,新兴市场和发展中经济体在全球 GDP 中占比已超 40%ÿ…...

Oracle之RMAN备份异机恢复(单机到单机)
Oracle之RMAN备份异机恢复(单机到单机) 一、环境说明二、正式库进行RMAN备份三、将正式库备份与参数文件拷贝到测试库四、测试库异机恢复五、验证数据 一、环境说明 系统版本主机名DB版本DB名实例名Public-IP正式库Redhat9.5lemonEnterprise 19.25lemon…...

Servlet快速入门
Servlet 由于目前主流使用SpringBoot进行开发Servlet可以说是时代的眼泪,这篇文章主要介绍我基于SpringBoot对应Servlet的浅薄认知,有利于更好的理解前端界面和java服务器的数据交换过程 快速入门 我比较推荐这篇文章来对Servlet有一个大概的了解 都2…...
深入解析 Linux 内核中的 InfiniBand 驱动接口:ib_verbs.h
InfiniBand(IB)是一种高性能、低延迟的网络互连技术,广泛应用于高性能计算(HPC)、数据中心和云计算等领域。Linux 内核通过 InfiniBand 子系统提供了对 IB 设备的支持,而 ib_verbs.h 是 InfiniBand 驱动开发中的核心头文件之一。它定义了 IB 核心框架与用户空间接口(ver…...

vulnhub靶场【kioptrix-1靶机】
前言 靶机:kioptrix-1,IP地址为192.168.1.104 攻击:kali,IP地址为192.168.1.16 都采用虚拟机,网卡为桥接模式 文章中涉及的靶机,来源于vulnhub官网,想要下载,可自行访问官网下载&…...
Linux 6.14 内核的主要特性
原文参考:https://www.kernel.org/ Linux 6.14 内核是 Linux 内核的一个重要版本,预计于 2025 年 3 月发布。该版本引入了多项新特性和改进,涵盖了硬件支持、性能优化、安全性增强以及新技术的整合。 1. Rust 语言驱动的正式支持 Linux 6.1…...

【Linux】深刻理解动静态库
1.什么是库 库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式,可以被操作系统载…...

亚博microros小车-原生ubuntu支持系列:8-脸部检测与人脸特效
前面的都是使用了mediapipe框架。后面的这两节采用了opencv\dlib的框架。 一 脸部检测 核心:opencv detectMultiScale函数 detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize) image--待检测图片,一般为灰度图像加快检测…...

代码随想录算法训练营day32
代码随想录算法训练营 —day32 文章目录 代码随想录算法训练营前言一、动态规划理论基础二、509. 斐波那契数动态规划动态规划优化空间版递归法 三、70. 爬楼梯动态规划动态规划空间优化 746. 使用最小花费爬楼梯动态规划空间优化 总结 前言 今天是算法营的第32天,…...

缓存之美:万文详解 Caffeine 实现原理(下)
上篇文章:缓存之美:万文详解 Caffeine 实现原理(上) getIfPresent 现在我们对 put 方法有了基本了解,现在我们继续深入 getIfPresent 方法: public class TestReadSourceCode {Testpublic void doRead() …...

中企出海:从国际投资建厂:投前投中投后重点事项
1. 投前重点事项 1.1 市场调研与分析 在国际投资建厂的投前阶段,市场调研与分析是至关重要的基础工作,它能够帮助企业全面了解目标市场,为后续决策提供有力依据。 市场规模与潜力:通过收集和分析目标国家或地区的经济数据、行业…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...