一个完整的电商网站开发周期,制作企业网站是免费的吗,网页设计比较优秀的网站,制作外贸网站成本前言#xff1a; 在掌握了MySQL中表的增删查改核心操作后#xff08;详见《MySQL 第七讲---基础篇 表的增删查改》#xff09;#xff0c;我们已经能够完成数据的基本存取与管理。但要让数据真正活起来#xff0c;充分发挥数据库的价值#xff0c;就需要借助…前言 在掌握了MySQL中表的增删查改核心操作后详见《MySQL 第七讲---基础篇 表的增删查改》我们已经能够完成数据的基本存取与管理。但要让数据真正活起来充分发挥数据库的价值就需要借助MySQL强大的内置函数体系。
本讲将带您打开数据处理的新维度——通过内置函数实现数据的深度加工与智能转换。无论是快速格式化日期、精准处理字符串还是执行复杂数学运算、智能聚合分析这些内置函数都将成为您提升SQL编写效率和数据处理能力的利器。通过系统学习您将发现原本需要多步操作的复杂需求现在仅需一个函数即可优雅实现让数据查询更高效业务逻辑更清晰为后续的统计分析、报表生成等高级应用打下坚实基础。让我们共同开启这场提升SQL表达力的函数探索之旅 其实下面的内容更多的是一种科普性质的介绍不过也没办法这种函数的使用也只能是做出类似一种百科全书式的介绍暂时没想到有什么好的写法大家对于这种内容有什么看法都可以提出来博主会第一时间回应的。
不说了下面正片开始。 目录
前言
注意下面使用的函数与我们上一讲学习的聚合函数性质是相同的都可以在select的时候使用。
一、日期函数
1.1 current_date函数
1.2 current_time函数 1.3 current_timestamp函数 1.4 now函数
1.5 date函数
1.6 date_add函数
1.7 date_sub函数
1.8 datediff函数
1.9 综合案例
二、字符串函数
2.1 charset函数
2.2 concat函数
2.3 instr函数
2.4 ucase函数
2.5 lcase函数
2.6 left函数
2.7 length函数
2.8 replace函数
2.9 strcmp函数
2.10 substring函数
2.11 ltrim、rtrim和trim函数
2.12 综合案例
三、数学函数
3.1 abs函数
3.2 bin函数
3.3 hex函数
3.4 conv函数
3.5 ceiling函数
3.6 floor函数
3.7 format函数
3.8 rand函数
3.9 mod函数
四、其他函数
4.1 user函数
4.2 md5函数
4.3 database函数
4.4 password函数
4.5 ifnull函数
总结 注意下面使用的函数与我们上一讲学习的聚合函数性质是相同的都可以在select的时候使用。
一、日期函数
常用的日期函数如下 1.1 current_date函数
current_date函数用于获取当前的日期。如下 1.2 current_time函数
current_time函数用于获取当前的时间。如下 在这里我们补充一点我们平时指的日期一般是类似yyyy-mm-dd的形式的
而时间一般就是每天的某时某分某秒。 1.3 current_timestamp函数
current_timestamp函数用于获取当前的时间戳以日期时间格式进行显示。如下 1.4 now函数
now函数用于获取当前的日期时间。如下
效果是和current_timestamp函数差不多的。 1.5 date函数
date函数用于获取当前的日期时间但是它的使用是带参数的必须传入一个时间或者是时间戳它相当于是把时间的日期提取出来了。如下 无参就报错必须传入一个时间。 1.6 date_add函数
date_add函数用于在日期的基础上添加日期或时间但是使用不是像我们想的那样可以直接进行加法运算输入的格式还是有要求的。
如下 这样直接输入是会报错的我们的第二个参数必须带上interval与相关的单位。 如果在date_add函数中添加的日期/时间为负值则相当于在日期的基础上减去日期/时间。如下 1.7 date_sub函数
它的功能是与上面的date_add()十分相似的这里就不再过多的介绍了。
date_sub函数用于在日期的基础上减去日期或时间。如下 如果在date_sub函数中减去的日期/时间为负值则相当于在日期的基础上添加日期/时间。如下 1.8 datediff函数
datediff函数用于获取两个日期的差单位是天。如下 1.9 综合案例
我们的想法是按照我们平时使用QQ那样可以看到具体的信息发送时间如下图。 那么在外面学习过日期函数后外面就可以尝试实现一下了。
创建一个评论表表中包含自增长主键id、昵称、评论内容和评论时间。如下 我们模拟一下用户发送评论的过程向表中插入一些数据插入时直接通过now函数指明评论时间。
mysql insert into commend_from values (张三,我是一个不被世界理解的天才时间会证明我的才华,now());
ERROR 1146 (42S02): Table test.commend_from doesnt exist
mysql insert into comment_from values (张三,我是一个不被世界理解的天才时间会证明我的才华,now());
Query OK, 1 row affected (0.01 sec)mysql insert into comment_from values (张三,hahaha,now());
Query OK, 1 row affected (0.00 sec)mysql insert into comment_from values (李四,我欣赏你我们可以引为知己啊now());
Query OK, 1 row affected (0.00 sec)mysql insert into comment_from values (王五,你们两个还不吃.药,now();
Query OK, 1 row affected (0.00 sec)这样我们的表中就有了一些数据。 我们在后端显示评论信息时如果只想显示评论的日期而不显示评论的时间可以在查询sendtime字段时通过date函数截取sendtime的日期部分进行显示。如下 我们在实际使用QQ等通信软件的时候不是还可以进行两分钟内撤回吗其实我们在数据库当中就可以查询两分钟内的信息然后再判断这个信息是否可以撤回。
如果要查询2分钟之内发布的评论信息实际上就是要筛选出评论时间加上2分钟后大于当前时间的评论这时需要同时借助date_add和now函数。 现在是已经没有可以撤回的数据了。 二、字符串函数
在MySQL当中是提供了很多的关于字符串操作的函数的。
常用的字符串函数如下 2.1 charset函数 现有如下员工表要求获取员工表中ename列使用的字符集。就是我们上一讲结尾处使用的员工表如下 在查询员工表中的信息时使用charset函数获取ename列使用的字符集即可。如下 2.2 concat函数
这是一个字符串拼接函数它可以将不同部分的字符串拼在一起。
现有如下成绩表要求以“XXX的语文是XX分数学是XX分英语是XX分”的格式显示成绩表中的信息。如下 这时候可以使用concat函数按要求进行字符串连接即可。 2.3 instr函数
instr函数用于获取一个字符串在另一个字符串中首次出现的位置如果没有出现则返回0。如下 2.4 ucase函数
ucase函数用于获取转换成大写后的字符串。如下 2.5 lcase函数
lcase函数用于获取转换成小写后的字符串。如下 2.6 left函数
left函数用于从字符串的左边开始向后截取指定个数的字符。如下 2.7 length函数
就是像C语言的sizeof操作符那样。 说明一下 对于多字节字符来说不同编码中一个字符所占的字节个数是不同的比如utf8中一个字符占用3个字节而gbk中一个字符占用2个字节。
如果要考虑一个字符串所占的字节数那就必须考虑字符集。
2.8 replace函数
replace函数用于将字符串中的指定子字符串替换成另一个字符串例如将员工表中所有名字中的“S”替换成“上海”。如下 2.9 strcmp函数
strcmp函数用于逐字符按照ASCII码比较两个字符串的大小两个字符串大小相等返回0前者大返回1后者大返回-1。如下 需要注意的是strcmp函数在比较时是不区分大小写的。如下 2.10 substring函数
substring函数用于从字符串的指定位置开始向后截取指定个数的字符。如下 使用substring函数时如果没有指定要截取的字符个数则默认从指定位置开始截取到最后。就是和C语言的库函数效果是一样的。
2.11 ltrim、rtrim和trim函数
trim函数用于去除字符串的前后空格。如下 ltrim和rtrim函数分别用于去除字符串的前空格和后空格。如下 2.12 综合案例
要求以首字母小写的方式显示员工表中所有员工的姓名思路如下 使用substring函数截取员工姓名的第一个字符然后使用lcase将其转换成小写。使用substring函数截取员工姓名的第二个字符及其后续字符。使用concat函数将第一次截取并转换成小写的首字母和第二次截取的字符串进行连接。最终concat函数连接后得到的字符串便是首字母小写的员工姓名。 如下 注意MySQL的字符串开头下标是1。 三、数学函数
常用的数学函数如下 3.1 abs函数
abs函数用于获取一个数的绝对值。如下 3.2 bin函数
bin函数用于将一个十进制数转换成二进制。如下 3.3 hex函数
hex函数用于将一个十进制数转换成十六进制。如下 3.4 conv函数
conv函数用于将一个数从一个进制转换成另一个进制。如下 注意这个函数转化的进程没有要求可以转到任意的进制去。
3.5 ceiling函数
ceiling函数用于对一个数进行向上取整。功能很好理解ceiling是天花板的意思。
如下 需要注意的是向上取整本质是向正无穷方向取整因此负数向上取整后得到的是第一个大于等于该数的整数。如下 3.6 floor函数
floor函数用于对一个数进行向下取整。floor的意思是地板。
如下 需要注意的是向下取整本质是向负无穷方向取整因此负数向下取整后得到的是第一个小于等于该数的整数。如下 3.7 format函数
format函数用于对数值进行格式化以四舍五入的方式保留指定位数的小数。如下 3.8 rand函数
rand函数用于生成0.0到1.0的随机浮点数。跟C语言的rand函数还是很想的。
如下 如果想要生成0到100的随机数可以用生成的随机浮点数乘以100然后再以某种取整方式进行取整。如下 3.9 mod函数
mod函数用于对数值进行求余运算。如下 四、其他函数
这一部分的函数就没有什么太大的规律了但也是日常使用时候可能需要的。
4.1 user函数
user函数用于获取MySQL连接的当前用户名和主机名。如下 4.2 md5函数
md5函数用于对一个字符串进行md5摘要摘要后得到一个32位字符串用在加密方面。如下 拓展 一般情况下公司内部数据库不会存储用户的明文密码而会将用户密码形成摘要后存储对应的摘要当用户登录账号时将用户输入的的密码形成摘要后与数据库中存储的摘要做对比如果对比成功则允许登录。 这么做的好处主要有两个第一个好处就是公司内部数据库中存储的不是用户的明文信息就算用户信息泄露了也不会产生太大影响第二个好处就是形成的摘要是定长的这样有利于数据库表结构的设计。 4.3 database函数
database函数用于显示当前正在使用的数据库。如下 4.4 ifnull函数
ifnull函数接受两个参数如果第一个参数不为null则返回第一个参数值否则返回第二个参数值。如下 总结
至此你已经掌握了 MySQL 中常用的字符串函数如 SUBSTRING()、REPLACE()、数值函数如 ABS()、CEIL()、日期函数如 NOW()、DATEDIFF()以及条件函数如 CASE...WHEN的使用方法。这些内置函数如同 SQL 的瑞士军刀能显著提升数据处理效率减少代码冗余。
下一讲《MySQL 第九讲---基础篇 复合查询 | 内外链接》 我们将进入更高级的查询领域 如何用 UNION 合并多表查询结果 怎样通过 INNER JOIN 关联订单与用户表 为什么 LEFT JOIN 能保留主表所有记录 子查询如何嵌套实现多层过滤
掌握复合查询和表连接技术你将真正释放 SQL 的关联分析能力轻松应对真实业务中的复杂数据关系。
我们下一讲见