【零基础学Mysql】常用函数讲解,提升数据操作效率的利器

以耳倾听世间繁华,以语表达心中所想
大家好,我是whisperrrr.

前言:

大家好,我是你们的朋友whisrrr。在日常工作中,MySQL作为一款广泛使用的开源关系型数据库,其强大的功能为我们提供了便捷的数据存储和管理手段。而在使用MySQL的过程中,掌握一些常用函数对于提高数据库操作效率具有重要意义。
本文将围绕以下几个方面进行讲解:合计函数,字符串函数、数学函数、日期和时间函数等。相信通过学习这些常用函数,你会对MySQL有更深入的了解,为今后的数据库操作打下坚实基础。

文章目录
    • 一.合计函数/统计
      • ①Count函数
      • ②Sum函数
      • ③Avg函数
      • ④Max/Min函数
      • ⑤group by
      • ⑥having
    • 二.字符串函数
      • ①charset(str)函数
      • ②concat(str1,str2,…)函数
      • ③instr(string,substring)
      • ④ucase(string2)函数/lcase(string)
      • ⑤left(string2,length)函数
      • ⑥length(string)函数
      • ⑦replace(str,子串,另一个字符串)函数
      • ⑧strcmp(string1,string2)函数
      • ⑨substr(str,start,len)函数
      • ⑩trim(string)函数
      • ?函数案列演示
    • 三.数学函数
    • 四.日期函数
      • ①日期格式
      • ②补充时间格式符含义表
      • ③current_data()
      • ④current_time()
      • ⑤current_timestramp()
      • ⑥date_add(日期,interval num 时间)函数
      • ⑦datadiff(unit,start_date,end_date)函数
      • ⑧now()函数
      • ⑨last_day()函数
      • ⑩获取日期和时间中的年、月、日、时、分、秒
    • 五.加密函数
      • ①md5(str)函数
      • ②password(str)函数
    • 六.流程控制函数

一.合计函数/统计

①Count函数

返回要查询的结果一共有多少行
演示如下:

select count(*) | count(列名) from table_name [where where_definition];

count(*) :统计返回条件的记录行数.
count(列):返回满足条件的某列有多少个,但是会排除为null的列.

②Sum函数

放回满足where条件的列的和,一般使用在数值列;
演示如下:

select sum(列名) from table_name [where where_definition];
③Avg函数

返回满足where条件的列的平均值,一般使用在数组列。
演示如下:

select avg(列名) from table_name [where where_definition];
④Max/Min函数

返回满足where条件的一列的最大值/最小值.
演示如下:

select Max(列名) | Min(列名) from table_name [where where_definition];
⑤group by

使用 group by 对字句进行分组
在这里插入图片描述

⑥having

使用 having 子句对分组后的结果进行过滤, group by 和 having 结合使用.
在这里插入图片描述
分组查询案例:
在这里插入图片描述

# 演示 group by + having
-- having 子句用于限制分组显示结果. 
-- 如何显示每个部门的平均工资和最高工资
-- 分析: avg(sal) max(sal)
-- 按照部分来分组查询
SELECT AVG(sal), MAX(sal) , deptnoFROM emp GROUP BY deptno; -- 使用数学方法,对小数点进行处理
SELECT FORMAT(AVG(sal),2), MAX(sal) , deptnoFROM emp GROUP BY deptno; 
-- 显示每个部门的每种岗位的平均工资和最低工资
-- 分析 1. 显示每个部门的平均工资和最低工资
-- 2. 显示每个部门的每种岗位的平均工资和最低工资
SELECT AVG(sal), MIN(sal) , deptno, jobFROM emp GROUP BY deptno, job; 
-- 显示平均工资低于 2000 的部门号和它的平均工资 // 别名
-- 分析 [写 sql 语句的思路是化繁为简,各个击破]
-- 1. 显示各个部门的平均工资和部门号
-- 2. 在 1 的结果基础上,进行过滤,保留 AVG(sal) < 2000
-- 3. 使用别名进行过滤
SELECT AVG(sal), deptnoFROM emp GROUP BY deptnoHAVING AVG(sal) < 2000; 
-- 使用别名
SELECT AVG(sal) AS avg_sal, deptnoFROM emp GROUP BY deptnoHAVING avg_sal < 2000;

二.字符串函数

接下来,跟随笔者,我们学习一下常用的字符串函数
在这里插入图片描述

①charset(str)函数

返回字串字符集

②concat(str1,str2,…)函数

将字符串拼接,通过输入的参数str1、str2等,将他们拼接成一个字符串。

③instr(string,substring)

返回substring,在string中出现的位置,没有的话返回0

④ucase(string2)函数/lcase(string)

将字符串转为大写/将字符串转为小写.

⑤left(string2,length)函数

从string2中的左边取出length个字符

⑥length(string)函数

获取参数值的字节个数

对于utf-8字符集来说,一个英文占1个字节;一个中文占3个字节;

对于gbk字符集来说,一个英文占1个字节;一个中文占2个字节;

⑦replace(str,子串,另一个字符串)函数

将字符串str中的字串,替换为另一个字符串

⑧strcmp(string1,string2)函数

比较字符串的大小,如果一样,返回0;前大后小放回1;前小后大返回-1.

⑨substr(str,start,len)函数

str为输入字符串,从start位置开始截取字符串,len表示要截取的长度; 没有指定len长度:表示从start开始起,截取到字符串末尾。指定了len长度:表示从start开始起,截取len个长度。

⑩trim(string)函数

去掉字符串前后的空格; 该函数只能去掉字符串前后的空格,不能去掉字符串中间的空格。

函数案列演示
-- CHARSET(str) 返回字串字符集
SELECT CHARSET(ename) FROM emp; 
-- CONCAT (string2 [,... ]) 连接字串, 将多个列拼接成一列
SELECT CONCAT(ename, ' 工作是 ', job) FROM emp; 
-- INSTR (string ,substring ) 返回 substring 在 string 中出现的位置,没有返回 0
-- dual 亚元表, 系统表 可以作为测试表使用
SELECT INSTR('hanshunping', 'ping') FROM DUAL; 
-- UCASE (string2 ) 转换成大写
SELECT UCASE(ename) FROM emp; 
-- LCASE (string2 ) 转换成小写
SELECT LCASE(ename) FROM emp; 
-- LEFT (string2 ,length )从 string2 中的左边起取 length 个字符
-- RIGHT (string2 ,length ) 从 string2 中的右边起取 length 个字符
SELECT LEFT(ename, 2) FROM emp; -
- LENGTH (string )string 长度[按照字节]
SELECT LENGTH(ename) FROM emp; 
-- REPLACE (str ,search_str ,replace_str )
-- 在 str 中用 replace_str 替换 search_str
-- 如果是 manager 就替换成 经理
SELECT ename, REPLACE(job,'MANAGER', '经理') FROM emp;
-- STRCMP (string1 ,string2 ) 逐字符比较两字串大小
SELECT STRCMP('hsp', 'hsp') FROM DUAL; -- SUBSTRING (str , position [,length ])
-- 从 str 的 position 开始【从 1 开始计算】,取 length 个字符
-- 从 ename 列的第一个位置开始取出 2 个字符
SELECT SUBSTRING(ename, 1, 2) FROM emp; -- LTRIM (string2 ) RTRIM (string2 ) TRIM(string)
-- 去除前端空格或后端空格
SELECT LTRIM(' 零基础学Mysql') FROM DUAL;
SELECT RTRIM('零基础学Mysq ') FROM DUAL;
SELECT TRIM(' 零基础学Mysq ') FROM DUAL;

三.数学函数

在这里插入图片描述

-- 演示数学相关函数
-- ABS(num) 绝对值
SELECT ABS(-10) FROM DUAL; 
-- BIN (decimal_number )十进制转二进制
SELECT BIN(10) FROM DUAL; 
-- CEILING (number2 ) 向上取整, 得到比 num2 大的最小整数
SELECT CEILING(-1.1) FROM DUAL;
-- CONV(number2,from_base,to_base) 进制转换
-- 下面的含义是 8 是十进制的 8, 转成 2 进制输出
SELECT CONV(8, 10, 2) FROM DUAL;
-- 下面的含义是 8 是 16 进制的 8, 转成 2 进制输出
SELECT CONV(16, 16, 10) FROM DUAL; 
-- FLOOR (number2 ) 向下取整,得到比 num2 小的最大整数
SELECT FLOOR(-1.1) FROM DUAL; 
-- FORMAT (number,decimal_places ) 保留小数位数(四舍五入)
SELECT FORMAT(78.125458,2) FROM DUAL; 
-- HEX (DecimalNumber ) 转十六进制
-- LEAST (number , number2 [,..]) 求最小值
SELECT LEAST(0,1, -10, 4) FROM DUAL; 
-- MOD (numerator ,denominator ) 求余
SELECT MOD(10, 3) FROM DUAL; 
-- RAND([seed]) RAND([seed]) 返回随机数 其范围为 0 ≤ v ≤ 1.0
-- 说明
-- 1. 如果使用 rand() 每次返回不同的随机数 ,在 0 ≤ v ≤ 1.0
-- 2. 如果使用 rand(seed) 返回随机数, 范围 0 ≤ v ≤ 1.0, 如果 seed 不变,
-- 该随机数也不变了
SELECT RAND() FROM DUAL;

四.日期函数

日期的含义:指的是我们常说的年、月、日。

时间的含义:指的是我们常说的时、分、秒。

year:年份、month:月份、day:天、hour:小时、minute 分钟、second:秒、microsecond:微秒、week:周数、quarter:季度
在这里插入图片描述

①日期格式
DATE_FORMAT("20000101", '%Y-%m-%d') -- 2020-01-01
DATE_FORMAT("2000-01-01", '%Y-%m-%d') -- 2020-01-01
DATE_FORMAT('2000-05-07 05:06:07', '%H:%i:%s') -- 05:06:07 (24小时制)
DATE_FORMAT('2000-05-07 05:06:07', '%h:%i:%s') -- 05:06:07 (12小时制)
DATE_FORMAT('2000-05-07 05:06:07', '%Y-%m-%d %H:%i:%s') -- 2000-05-07 05:06:07
②补充时间格式符含义表

序号

格式符

含义

1

%Y

四位的年份

2

%y

2位的年份

3

%m

月份(01,02,…11,12)

4

%c

月份(1,2,3…11,12)

5

%d

日(01,02,…)

6

%H

小时(24小时)

7

%h

小时(12小时)

8

%i

分钟(00,01,…59)

9

%s

秒(00,01,…59)

③current_data()

该函数返回当前日期
演示案例:

-- CURRENT_DATE ( ) 当前日期
SELECT CURRENT_DATE() FROM DUAL;
④current_time()

该函数返回当前时间
演示案例:

-- CURRENT_DATE ( ) 当前日期
SELECT CURRENT_time() FROM DUAL;
⑤current_timestramp()

该函数返回当前时间戳
演示案例:

-- CURRENT_DATE ( ) 当前日期
SELECT CURRENT_TIMESTAMP() FROM DUAL;
⑥date_add(日期,interval num 时间)函数

向前、向后偏移日期和时间,正号为向后,负号为向前,除此之外还有hour(小时),minute(分钟),second(秒)
演示案例:

select data_add(now(),interval 1 year) from dual;
⑦datadiff(unit,start_date,end_date)函数

返回两个时间相差的天数
演示案例:

SELECT DATEDIFF('2011-11-11', '1990-01-01') FROM DUAL;
⑧now()函数

返回当前系统的日期和时间

演示如下:

select now() as 当前时间 from dual;
⑨last_day()函数

提取某个月最后一天的日期

SELECT last_day(now()) FROM DUAL;
⑩获取日期和时间中的年、月、日、时、分、秒

获取年份:year()

获取月份:month()

获取日:day()

获取小时:hour()

获取分钟:minute()

获取秒数:second()
演示案例:

SELECT YEAR(NOW()) FROM DUAL;
SELECT MONTH(NOW()) FROM DUAL;
SELECT DAY(NOW()) FROM DUAL;
SELECT MONTH('2013-11-10') FROM DUAL;

五.加密函数

①md5(str)函数

对密码进行加密
演示案例:

select MD5('12345') from dual;

结果:
在这里插入图片描述

②password(str)函数

从原文密码str计算并返回密码字符串,通常用于对mysql数据库的用户密码进行加密
演示案例:

select password('12345') from dual;

结果:
在这里插入图片描述

六.流程控制函数

在这里插入图片描述
对于以上问题,我们引入流程控制函数.

①IF(expr1,expr2,expr3)

如果 expr1 为 True ,则返回 expr2 否则返回 expr3

SELECT IF(TRUE, '北京', '上海') FROM DUAL;
②IFNULL(expr1,expr2)

如果 expr1 不为空 NULL,则返回 expr1,否则返回 expr2

SELECT IFNULL( NULL, '零基础学mysql') FROM DUAL;
③SELECT CASE WHEN expr1 THEN expr2 WHEN expr3 THEN expr4 ELSE expr5 END

[类似多重分支.]
如果 expr1 为 TRUE,则返回 expr2,如果 expr2 为 t, 返回 expr4, 否则返回 expr5


结尾:

通过本文的介绍,相信大家对MySQL常用函数有了更加全面的了解。掌握这些函数,不仅能够提高我们的工作效率,还能使我们的数据库操作更加灵活。当然,MySQL的函数远不止本文所提到的这些,大家在日常学习和工作中,还需不断探索和积累。

希望这篇文章能为你带来帮助,如有疑问或建议,欢迎在评论区留言交流。最后,感谢大家的阅读,祝大家技能不断提升,工作顺利!

以耳倾听世间繁华,以语表达心中所想
感谢友友们的阅读,咱们下期再见

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

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

相关文章

C++ 使用CURL开源库实现Http/Https的get/post请求进行字串和文件传输

CURL开源库介绍 CURL 是一个功能强大的开源库&#xff0c;用于在各种平台上进行网络数据传输。它支持众多的网络协议&#xff0c;像 HTTP、HTTPS、FTP、SMTP 等&#xff0c;能让开发者方便地在程序里实现与远程服务器的通信。 CURL 可以在 Windows、Linux、macOS 等多种操作系…

win编译openssl

一、perl执行脚本 1、安装perl脚本 perl安装 2、配置perl脚本 perl Configure VC-WIN32 no-asm no-shared --prefixE:\openssl-x.x.x\install二、编译openssl 1、使用vs工具编译nmake 如果使用命令行nmake编译会提示“无法打开包括文件: “limits.h”“ 等错误信息 所以…

idea启动报错# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffccf76e433

# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc0x00007ffccf76e433, pid17288, tid6696 # # JRE version: (11.0.248) (build ) # Java VM: OpenJDK 64-Bit Server VM (11.0.248-LTS, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64) 不知道为什么…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>不同路径 III

目录 整体思路&#xff1a;代码设计&#xff1a;代码呈现&#xff1a; 整体思路&#xff1a; 代码设计&#xff1a; 代码呈现&#xff1a; class Solution {int ret,step;int m,n;boolean[][] vis;public int uniquePathsIII(int[][] grid) {m grid.length;n grid[0].length…

Idea 2024.3 使用CodeGPT插件整合Deepseek

哈喽&#xff0c;大家好&#xff0c;我是浮云&#xff0c;最近国产大模型Deepseek异常火爆&#xff0c;作为程序员我也试着玩了一下&#xff0c;首先作为简单的使用&#xff0c;大家进入官网&#xff0c;点击开始对话即可进行简单的聊天使用&#xff0c;点击获取手机app即可安装…

Houdini subuv制作输出阵列图

在游戏开发中经常需要用到sheet阵列图&#xff0c;并用其制作翻页动画。通过Houdini强大的节点组合可以配合输出subuv阵列图供游戏引擎使用。 本文出处&#xff1a;https://zhuanlan.zhihu.com/p/391796978 博主参考学习并写该文。 1.在obj分类下创建font节点以进行测试&#…

使用page assist浏览器插件结合deepseek-r1 7b本地模型

为本地部署的DeepSeek R1 7b模型安装Page Assist&#xff0c;可以按照以下步骤进行&#xff1a; 一、下载并安装Ollama‌ 首先&#xff0c;你需要下载并安装Ollama&#xff0c;这是部署DeepSeek所必需的工具。你可以访问Ollama的官方网站&#xff08;ollama.com&#xff09;下…

oracle: 事务,视图

事务 事务是数据库的最小逻辑单元&#xff0c;就是数据库中的一个最小的操作单位。 事务是由多条SQL语句组成的一个集合&#xff0c;有事务统一控制这些SQL语句的执行。 事务的属性 被简称为ACID属性, 是4个属性单词的首字母 脏读,幻读,不可重复读 是三种常见的并发问题&…

Unity3D引擎首次用于光伏仿真设计软件爆火

在光伏设计领域&#xff0c;绿虫光伏仿真设计软件宛如一匹黑马&#xff0c;凭借其基于 Unity3D 引擎的强大功能&#xff0c;为行业带来了全新的解决方案。借助 Unity3D 引擎技术&#xff0c;实现了游戏级高清画面&#xff0c;2D/3D 自由转换&#xff0c;让场景代入感极强&#…

寒假2.6--SQL注入之布尔盲注

知识点 原理&#xff1a;通过发送不同的SQL查询来观察应用程序的响应&#xff0c;进而判断查询的真假&#xff0c;并逐步推断出有用的信息 适用情况&#xff1a;一个界面存在注入&#xff0c;但是没有显示位&#xff0c;没有SQL语句执行错误信息&#xff0c;通常用于在无法直接…

有用的sql链接

『SQL』常考面试题&#xff08;2——窗口函数&#xff09;_sql的窗口函数面试题-CSDN博客 史上最强sql计算用户次日留存率详解&#xff08;通用版&#xff09;及相关常用函数 -2020.06.10 - 知乎 (zhihu.com) 1280. 学生们参加各科测试的次数 - 力扣&#xff08;LeetCode&…

排序算法--基数排序

核心思想是按位排序&#xff08;低位到高位&#xff09;。适用于定长的整数或字符串&#xff0c;如例如&#xff1a;手机号、身份证号排序。按数据的每一位从低位到高位&#xff08;或相反&#xff09;依次排序&#xff0c;每次排序使用稳定的算法&#xff08;如计数排序&#…

将Deepseek接入pycharm 进行AI编程

目录 专栏导读1、进入Deepseek开放平台创建 API key 2、调用 API代码 3、成功4、补充说明多轮对话 总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;请点击——…

14:00面试,14:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到2月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

DeepSeek:知识图谱与大模型参数化知识融合的创新架构

引言&#xff1a;AI 领域的融合趋势 在目前大模型与知识图谱作为两个重要的研究方向&#xff0c;各自展现出了强大的能力与潜力。大模型&#xff0c;凭借其在海量数据上的深度训练&#xff0c;拥有强大的语言理解与生成能力&#xff0c;能够处理多种自然语言处理任务&#xff0…

69.弹窗显示复杂的数据框图 C#例子 WPF例子

这是一个复杂的功能实现&#xff0c;其中日志管理器的一个实例包含需要被绑定的数据源。由于主窗口被复杂的内容填满&#xff0c;因此需要设计一个弹窗来专门显示数据框图。以下是实现步骤&#xff1a; 设计主页面&#xff1a; 在主页面上添加一个按钮和一个数据框图&#xf…

分布式微服务系统架构第91集:系统性能指标总结

加群联系作者vx&#xff1a;xiaoda0423 仓库地址&#xff1a;https://webvueblog.github.io/JavaPlusDoc/ 系统性能指标总结 系统性能指标包括哪些&#xff1f; 业务指标、资源指标、中间件指标、数据库指标、前端指标、稳定性指标、批量处理指标、可扩展性指标、可靠性指标。 …

Pygame介绍与游戏开发

提供pygame功能介绍的文档&#xff1a;Pygame Front Page — pygame v2.6.0 documentation 基础语法和实现逻辑 与CLI不同&#xff0c;pygame提供了图形化使用界面GUI&#xff08;graphical user interface&#xff09;基于图像的界面可以创建一个有图像和颜色的窗口 要让py…

网络安全威胁框架与入侵分析模型概述

引言 “网络安全攻防的本质是人与人之间的对抗&#xff0c;每一次入侵背后都有一个实体&#xff08;个人或组织&#xff09;”。这一经典观点概括了网络攻防的深层本质。无论是APT&#xff08;高级持续性威胁&#xff09;攻击、零日漏洞利用&#xff0c;还是简单的钓鱼攻击&am…

FPGA|生成jic文件固化程序到flash

1、单击file-》convert programming files 2、flie type中选中jic文件&#xff0c;configuration decive里根据自己的硬件选择&#xff0c;单击flash loader选择右边的add device选项 3、选择自己的硬件&#xff0c;单击ok 4、选中sof选项&#xff0c;单机右侧的add file 5、选…