目录
前言:这一篇介绍MySQL的一些内置函数,如日期函数、字符串函数、数学函数,以及一些其它的函数。
一.日期函数
当前日期、当前时间:
当前时间戳:
创建birth表:
可以使用函数插入数据:
变更为datetime
插入当前日期及时间。
now函数不能单独用,需要配合select使用,得到当前日期及时间。
也可以用date只要日期:
可以在日期的基础上增加日期或者减少日期:
分别为date_add函数和date_sub函数,需要用interval。
可以使用now函数:
也可以减去分钟:
datediff可以计算两个日期的差:
这里是负的是因为前者减后者。
now函数也是可以的:
创建表:
插入信息:
看看有几条:
查询2分钟内发送的消息:
目前是没有的,那就插入几个再查询:
插入几个后再查找就能找到了。
二.字符串函数
1.charset
返回字符串的字符集。
charset是用来返回字符串字符集的,这里字符串默认的字符集都是utf8,所以返回显示的就是utf8。
这个时间返回的字符集则是binary。
如果插入数据后显示为乱码,那么就可以通过charset查看是否是编码问题。
2.concat
将字符串连接起来。
用法:
3.length
求字符串的长度,结果的单位是字节。
4.substring
截取字符串,第一个参数是要截取的字符串,第二个参数是从哪个位置开始截取,第三个参数是要截取几个字符串。
这个函数与string中的substr的用法基本相同,但是要注意的是,下标是从1开始的,如果写0,那么就什么都没有。
这里截取是按照字符截取的,而不是按照字节。
5.replace
第一个参数是想要该边的字符串,第二个参数是要改变什么,第三个参数是要将字符串中的第二个参数改变成什么。
这个改变,是将所有为xyz的都改成的XYZ。
6.ucase、lcase
(1)ucase
将字母转换为大写。
(2)lcase
将字母转换为小写。
以首字母小写的方式显示所有的名字:
首先通过substring截取字符串分割成两端,再通过lcase将首字母转换为小写。
然后再通过concat连接上。
最后重命名为newname。
7.instr
返回该串(第二个参数)在字符串(第一个参数)中出现的位置,如果没有出现就返回0。instr也是以字符为单位的。
查找名字中有O的:
可以使用like+where查找。
也可以使用instr+where查找。
8. strcmp
字符串大小比较,如果相等返回0,如果前面的大返回1,如果后面的大返回-1。
筛选job为CLERK的:
直接用where。
使用strcmp函数,这里一定要写上=0。
否则,所有>CLERK的job都会显示出来。
9.left、right
(1)left
从左边开始取字符,是以字符为单位的:
(2)right
从右边开始取字符,是以字符为单位的:
10.ltrim、rtrim、trim
去除前空格或后空格。
(1)trim
可以把前空格和后空格都去除。
(2)ltrim
可以去除前空格。
(3)rtrim
可以去除后空格。
三.数学函数
1.abs
绝对值。
这里只筛选出了绝对值大于1000的sql语句。
2.bin
十进制转换为二进制。
3.hex
十进制转换为十六进制。
4.conv
进制转换:将一个数字从什么进制转换到什么进制。
5.ceiling
向上取整。
即向正半轴方向去整。
6.floor
向下取整。
即向负半轴方向去整。
7.rand
返回随机浮点数,范围是[0.0, 1.0)
也可以通过乘一个数来变更其范围。
8.format
格式化。选择要格式化的数据所要保留的精度的位数(即小数位数)。
9.mod
取模,求余。
可以求正数的:
也可以求负数的:
小数也可以:
可以求工资不能被100整除的和能被100整除的。
四.其它函数
1.user()
查询当前用户。
这个mysql是安装mysql时一定有的数据库。
里面的表是数据库安装的一些基本信息。
用户的所有信息就是在这个user表中。
user()函数的本质就是显示了这里的信息。
2.md5
对一个字符串进行md5摘要,摘要后得到一个32位字符串。
这个authentication_string表示认证密码。
这个和md5形成的摘要的位数不同,这个是41位,md5是32位,但是本质上是相同的。
当记录用户信息的密码时,不能明文的直接显示密码,因此就可以用到md5形成摘要,防止泄密。
使用了md5后,sql语句中是不会记录那个insert语句的。
当用户输入密码登陆时,采用下面的方式来验证是否密码正确(对密码的比较,本质上是对摘要的比较)
3.password
mysql使用该函数对其加密:
MySQL有自己独特的加密方式,本质上与md5形成摘要是一样的,但是密码强度更强。
4.ifnull(val1, val2)
如果val1为null,返回val2,否则返回val1的值。
类似于三目运算符。