初识muysql之常见函数

目录

一、日期时间函数

1. 常见的日期时间函数

2. current_date()

3. current_time()

4. current_timestamp()

5. now()

6. date(datetime)

7. date_add(date, interval d_value_type)

8. date_sub(date, d_value_type)

9. datediff(date1, date2)

10. 题目示例

10.1 创建一张生日表,记录生日

10.2 创建一个留言表

10.3 请查找前两分钟内发布的帖子

二、字符串函数

1. 常见字符串函数

2. charset(str)

3. concat(string2 [, ...])

4. instr(string, substring)

5. ucase(string)

6. lcase(string)

5. left(string, length)

6. length(string) 

7. replace(str, search_str, replace_str)

8. strcmp(string1, string2)

9. substring(str, position, [, length])

10. ltrim(string)、rtrim(string)和trim(string)

11. 题目案例

11.1 获取emp表的ename列的字符集

11.2 显示exam_result表中的信息,显示格式为“学生姓名:xxx,语文成绩:xxx,数学成绩:xxx,英语成绩xxx”

11.3 查询exam_result表中的学生姓名占用的字节数

11.4 显示时将emp表中的所有名字中的S替换为“上海”

11.5 截取emp表中的ename中的第二个到第三个字符

11.6 以首字符小写的方式显示emp表中所有员工的姓名 

三、数学函数

1. bin(decimal_namber)

2. conv(number, from_base, to_base)

3. format(number, decimal_places)

4. rand()

5. ceiling(number)j和floor(number)

四、其他函数

1. user()

2. database() 

3. md5()与password()

4. ifnull(val1, val2)


一、日期时间函数

1. 常见的日期时间函数

在以前的文章中提到过,mysql中是存在函数的,这些函数在我们查找数据、创建表等情况时都可能用到。在这篇文章中就简单的介绍一下mysql中的一些常见函数。

首先是日期函数,在看日期函数之间,我们要先建立一个观念,在mysql中,日期指的是年月日,而时间指的是时分秒。常见的日期函数如下图所示:

初识muysql之常见函数_第1张图片

要知道,在数据库中,日期时间是很重要的,因此,上图的这些函数大家也都需要了解一下。这里就简单的介绍一下。

注意,在mysql中的很多函数都是需要搭配select语句使用的,下面的函数示范也是如此。

2. current_date()

current_date()函数是用于获取当前日期的。

初识muysql之常见函数_第2张图片

3. current_time()

current_time()函数是用于获取当前时间的。

初识muysql之常见函数_第3张图片

4. current_timestamp()

current_timestamp()函数是用于获取时间戳的。大家知道,时间戳是一串数字,但是在mysql中获取时间戳时,它并不是直接显示对应的数字,而是显示时间戳转换后形成的日期时间

初识muysql之常见函数_第4张图片

简单来讲,就是当前的日期时间。

5. now()

now()函数是返回当前的日期时间,其实和current_timestamp()返回的内容是一模一样的。

初识muysql之常见函数_第5张图片

6. date(datetime)

date(datetime)函数会将传入的datetime参数做切割,返回其中的日期部分

datetime可以是一个日期时间

初识muysql之常见函数_第6张图片

也可以是一个函数,例如now()或者datestamp():

初识muysql之常见函数_第7张图片

7. date_add(date, interval d_value_type)

date_add(date, interval d_value_type)函数可以用于增加date中的日期或时间interval是一个必须写的关键字,后面的d_value_type就是要添加的数值单位,可以是“year、minute、second、day”

同样的,既可以自己写日期:

初识muysql之常见函数_第8张图片

也可以用其他如now、current_date等函数:

初识muysql之常见函数_第9张图片

8. date_sub(date, d_value_type)

date_sub(date, d_value_type)是用于减去date中的日期时间的。作用和date_sub相反,参数的含义都是一样的,就不再过多赘述。

初识muysql之常见函数_第10张图片

9. datediff(date1, date2)

datediff(date1, date2)函数用于获取date1和date2之间的日期差,单位是天

初识muysql之常见函数_第11张图片

传入的参数也可以是函数,这里就不再演示。

10. 题目示例

为了让大家更好的理解这几个函数的使用,在这里就用几个题目来示范一下。

10.1 创建一张生日表,记录生日

先创建如下一张生日表:

一般来讲,我们的生日都是记录到年月日的。因此,在这个表里面的birthday列就是用的date数据类型。

此时就可以插入数据了:

初识muysql之常见函数_第12张图片

无论是自己写,还是函数都是可以插入的。

虽然birthday列的数据类型是date,但是如果我们给它插入一些带有时间的函数,例如current_time、current_timestamp()呢?它能否插入?如果能插入结果又是什么呢?测试一下:

初识muysql之常见函数_第13张图片

可以看到,它也能插入,但是插入的就是当前日期。对于这类情况,大家可以认为这些函数在获取结果时,其实是将日期和时间都拿到了,但是只根据需求显示特定的部分。而birthday的数据类型为date,因此就将得到的结果中的日期截取出来了。

因此,在这个题目中,如果你想用带有时间的函数,就可以用date将它括起来,告诉对方这里要的就只是日期:

因此,如果我们手动输入一个时间,就无法插入了:

10.2 创建一个留言表

在留言表中,我们要能够标识每条留言,这些留言也需要有一个时间来记录发表时间。一般来讲,留言的记录时间是按照年月日时分秒来记录的。

创建如下一个msg表:

由于需要记录时分秒,所以这里用的就是datetime类型。

此时就可以正常插入数据了:

初识muysql之常见函数_第14张图片

当然,如果我们在查看的的时候只想看到日期,不想看时间,就可以手动给其指定要查看的内容:

初识muysql之常见函数_第15张图片

10.3 请查找前两分钟内发布的帖子

为了看到两分钟发布的帖子,我们先来想想如何判断帖子是前两分钟内发布的帖子,很简单,就是用当前时间减去帖子的发布时间即可。此时就可以用上文中将的date_sub()函数。

为了方便看到实际场景,我们先插入一条信息,然后马上查找,以复现查找前两分钟内发布的帖子。

初识muysql之常见函数_第16张图片

可以看到,此时就可以查找到前两分钟内发布的帖子了。

二、字符串函数

 1. 常见字符串函数

在mysql中,有很多函数都可以用来处理字符串,下图中就是一些常见的可以用于处理字符串的函数。在这里简单介绍一下:

初识muysql之常见函数_第17张图片

注意,这些函数是否会修改数据库内的内容取决于你使用什么语句。例如如果你是在select语句中使用,就只是修改显示时的数据,而不会修改数据库内的数据;但如果你是用update语句,它就可能会修改数据库内的内容

2. charset(str)

charset(str)函数用于返回字符串字符集。参数str就是对应的字符

初识muysql之常见函数_第18张图片

3. concat(string2 [, ...])

concat(string2 [, ...]函数可以将所有的参数拼接起来。参数部分就是要拼接的字符串。

初识muysql之常见函数_第19张图片

4. instr(string, substring)

 instr(string, substring)函数是用来查看string中是否出现substring的,如果存在,就返回起始下标;如果不存在,就返回0。

初识muysql之常见函数_第20张图片

注意,mysql中的字符串起始位置和C\C++的不同,它的起始位置下标是从1开始的,而不是从0开始

初识muysql之常见函数_第21张图片

5. ucase(string)

ucase(string)函数是用于将小写字母转大写的。如果不是字母,就不做处理。

初识muysql之常见函数_第22张图片

6. lcase(string)

lcase(string)函数是用于将大写字母转小写的,如果不是字母,就不做处理。

初识muysql之常见函数_第23张图片

5. left(string, length)

left(string, length)函数是从string的左边的起始位置开始提取length个字符。

初识muysql之常见函数_第24张图片

既然有left(), 当然就有right()函数。它们的参数作用是一样的,不同的只是right函数是从字符串的右边起始位置向左提取length个字符。

初识muysql之常见函数_第25张图片

6. length(string) 

length(string)函数返回string的长度。注意,这个长度计算的是字节,而非字符

初识muysql之常见函数_第26张图片

在utf8中,中文字符占3个字节,因此这里返回的是12。

7. replace(str, search_str, replace_str)

replace(str, search_str, replace_str)函数会将str中的search_str替换为replace_str。如果没有找到,就什么都不做。

初识muysql之常见函数_第27张图片

初识muysql之常见函数_第28张图片

8. strcmp(string1, string2)

strcmp(string1, string2)函数会比较两个字符串的大小。这个函数比较的是字符串的字节数,而不是字符长度。当string1 > string2时,返回1;当string1 < string2时,返回-1;如果双方相等,返回0。

初识muysql之常见函数_第29张图片

9. substring(str, position, [, length])

substring(str, position, [, length])函数会从str的position位置截取length个字符。注意,该函数的起始位置下标是1,而非0。

初识muysql之常见函数_第30张图片

10. ltrim(string)、rtrim(string)和trim(string)

ltrim(string)、rtrim(string)和trim(string)三个函数都是用于去除字符串中的空格的。其中ltrim去除左边的空格rtim去除右边的空格trim去除两边的空格。注意,它们不会去除字符串中间的空格

初识muysql之常见函数_第31张图片

这几个函数还是很重要的,因为它可以防止在某些情况下输入的信息多了前导空格或后导空格。例如用户在输入账号时,因为网络传输或程序员的程序有点问题,不小心给账号加了空格,如果没有这几个函数去除空格,用户的账号就会一直登陆失败。并且空格是不可见的,很多时候我们肉眼也无法看出来是空格的问题。 

11. 题目案例

为了方便大家理解,在这里就举几个题目的例子,让大家更好的理解这些字符串函数的使用。

11.1 获取emp表的ename列的字符集

对于emp表,在上一篇文章中已经讲过了,这里就不再赘述,直接使用。

初识muysql之常见函数_第32张图片

要查看它的ename列的字符集很简单。

初识muysql之常见函数_第33张图片

一般来讲我们不会查看表的字符集,但有些特殊情况,如表中插入的数据出现了乱码等问题,就需要查看对应列的字符集,看是不是字符集有问题。

11.2 显示exam_result表中的信息,显示格式为“学生姓名:xxx,语文成绩:xxx,数学成绩:xxx,英语成绩xxx”

exam_result表也是在上一篇文章“mysql数据库的增删查改”中写过了,这里不再赘述。

初识muysql之常见函数_第34张图片

在这里的显示成绩时,不能按照上面的形式显示,需要特定的格式。此时就可以使用concat函数。

初识muysql之常见函数_第35张图片

11.3 查询exam_result表中的学生姓名占用的字节数

要统计字节数,就需要使用length函数。

初识muysql之常见函数_第36张图片

11.4 显示时将emp表中的所有名字中的S替换为“上海”

要替换字符,就需要使用replace函数。

初识muysql之常见函数_第37张图片

11.5 截取emp表中的ename中的第二个到第三个字符

要截取从position位置开始的字符,就要用substing函数。要截取第二个到第三个,即截取两个字符。

初识muysql之常见函数_第38张图片

11.6 以首字符小写的方式显示emp表中所有员工的姓名 

要以小写方式显示首字符,因此首先就要将姓名中的首字符切割出来,然后用lcase转为小写,再将转换后的字符与被姓名中的第二个字符及其后面的字符相拼接。在substring 中,如果不填截取长度,则默认截取到结尾。

初识muysql之常见函数_第39张图片

三、数学函数

在mysql中还存在很多用于数学计算的函数,在这里也简单介绍几个。

初识muysql之常见函数_第40张图片

对于这些数学函数,大家应该很容易就能知道它的作用,这里就不再一一介绍了,而是介绍几个比较不好理解的函数。

1. bin(decimal_namber)

bin(decimal_namber)函数用于十进制转二进制,但是它只会转为整数的二进制,如果是小数,则只转化整数部分,去除小数部分

初识muysql之常见函数_第41张图片

后面hex函数也是如此,只转化整数部分,不转化小数部分。 

初识muysql之常见函数_第42张图片

2. conv(number, from_base, to_base)

conv(number, from_base, to_base)函数是将一个数字从from_base进制转化为to_base进制。用于进制转换。

初识muysql之常见函数_第43张图片

3. format(number, decimal_places)

format(number, decimal_places)函数是用于格式化小数位的。其中number是需要格式化的数字decimal_places是要保留的位数

初识muysql之常见函数_第44张图片

初识muysql之常见函数_第45张图片

 4. rand()

rand()函数是用于生成随机数的,但是随机数范围是[0, 1]

初识muysql之常见函数_第46张图片

如果大家想获得一个随机整数,就直接乘以对应位数,然后用format函数格式化即可。 

初识muysql之常见函数_第47张图片

5. ceiling(number)j和floor(number)

ceiling(number)j和floor(number)函数分别是用于向上取整向下取整的。大家可能不太理解什么是向上/向下取整。这里介绍一下,大家在日常生活中应该都用过“四舍五入”,这其实就是一种取整方法。

除了四舍五入的取整方法外,还有向上/向下取整、0向取整等方法。

0向取整其实就是当数字有小数时,向接近0的方向取整。例如3.14和3.59,采用0向取整就是变为3。而-3.14就是取整为-3。

向上取整就是向较大数方向取整。例如3.14就要变为4;-3.14就要变为-3。

向下取整就是向较小数方向取整。例如3.14就要变为3;-3.14就要变为-4。

大家可以将这三种方法看成如下图所示:

初识muysql之常见函数_第48张图片

由此,我们也可以实际试验一下。

向上取整:

初识muysql之常见函数_第49张图片

向下取整:

初识muysql之常见函数_第50张图片

四、其他函数

1. user()

user()函数可以用于查询当前用户

初识muysql之常见函数_第51张图片

2. database() 

database()函数可以用于查询当前使用的数据库

初识muysql之常见函数_第52张图片

3. md5()与password()

大家应该知道,数据库中是会保存用户信息的,其中就包括用户的账号密码。而用户的密码在数据库中保存的时候,是不能够以明文的方式保存的。必须进行加密。否则一旦数据库泄漏,就会导致严重的用户信息泄漏。因此,我们需要用特定的方法对密码加密。说是加密,其实就是用hash函数对用户密码做映射,形成一个字符串,将这个字符串保存在数据库内。

md5()就是一个数据加密函数。采用的就是md5加密方法。这个加密方法会将密码进行映射后形成一个长度为32字节的数字加字母字符串

为了方便测试,创建如下一个user表:

初识muysql之常见函数_第53张图片

如果我们直接向里面插入数据,就是以明文方式显示:

初识muysql之常见函数_第54张图片

注意,如果大家在用sql语句时发现自己上翻下翻以前的语句时找不到sql语句,其实就是因为这条语句里面可能带有password,mysql会将带有这个字段的sql语句隐藏,不再显示。

很明显,明文保存是非常不安全的。此时,我们就可以用md5()加密:

初识muysql之常见函数_第55张图片

此时就是一个32字节的字符串。当然,我们也可以用password()函数加密,效果是一样的

初识muysql之常见函数_第56张图片

只不过password()和md5()采用的加密算法不同

当有用户登录时,账号密码就需要进行匹配。匹配方法也很简单,就是用同样的加密算法加密用户传过来的密码, 然后拿着账号和加密后的密码去数据库找即可。

初识muysql之常见函数_第57张图片

4. ifnull(val1, val2)

ifnull(val1, val2)函数其实很像我们以前学的三目运算符。它的含义就是,如果val1是null,就显示val2;如果val1不是null,就显示val1。

初识muysql之常见函数_第58张图片

你可能感兴趣的:(mysql数据库,mysql,数据库)