数据库原理与应用 第 15 章 · 第六节
课程第 15 章第六节 七类函数数学函数字符串函数日期函数格式符系统信息信息举例聚合统计例15-8加密函数其他函数 版式
第 15 章 存储过程与函数 · 第六节

常用内置函数

本 节 知 识 点
  1. 41MySQL 自己带的一大堆现成工具
  2. 42取整那几个最容易混
  3. 43拼、切、找、补、数长度
  4. 44取一段、算差、加减、换格式
  5. 45DATE_FORMAT 那一串百分号
  6. 46问服务器它自己的情况
  7. 47一句话把几件事全问出来
  8. 48第 6 章那五个的老朋友
  9. 49每人几门课,平均几分
  10. 50MD5 是单向的,回不去
  11. 51控制流函数与类型转换
41
第 15 章 · 第六节

MySQL 自己带的一大堆现成工具

数学、字符串、日期、系统、聚合、加密、其他。

第 41 页课件

试一试六类各挑六个试一试

哪一类
写法结果

重 点

这一节不用背,知道有哪几类、遇到需求会查手册就够了。

上机做

上机三第 1 题 照着课件敲一遍

42
第 15 章 · 第六节

取整那几个最容易混

ROUND 四舍五入,TRUNCATE 直接砍掉。

第 42 页课件

分清楚四个取整

函数3.19 变成
ROUND(x,1)3.2
TRUNCATE(x,1)3.1
CEILING(x)4
FLOOR(x)3

重 点

算钱的时候用哪一个要想清楚,差一分钱账就对不上。

想一想

银行算利息该用 ROUND 还是 TRUNCATE?

43
第 15 章 · 第六节

拼、切、找、补、数长度

数长度那两个不一样,中文差三倍。

第 43 页课件

重 点

LENGTH 数的是字节,CHAR_LENGTH 数的是字符。一个汉字三个字节。

知道更多

第 4 章讲字符集时埋的那个坑,到这里才有函数把它数出来。

上机做

上机三第 2 题 两个长度函数比一比

想一想

限制姓名不超过十个字,该用哪一个?

44
第 15 章 · 第六节

取一段、算差、加减、换格式

存的时候用 DATE,这一批函数才用得上。

第 44 页课件

记牢它四类日期函数

  1. 取当前时刻
  2. 取年月日
  3. 算相差几天
  4. 加减一段时间

重 点

1 月 31 日加一个月是 2 月 28 日,MySQL 自己会缩到当月最后一天。

知道更多

第 14 章说日期不要用字符串存,这一批函数就是那样做的回报。

45
第 15 章 · 第六节

DATE_FORMAT 那一串百分号

记住四个常用的,剩下的用时再查。

第 45 页课件

记牢它四个常用

  1. %Y 四位年
  2. %m 两位月
  3. %d 两位日
  4. %W 星期几

重 点

'%Y年%m月%d日' 就能把 2026-09-08 变成中式写法。

上机做

上机三第 3 题 日期函数一组

46
第 15 章 · 第六节

问服务器它自己的情况

版本、当前库、当前用户、连接号。

第 46 页课件

记牢它四个常用

  1. VERSION()
  2. DATABASE()
  3. USER()
  4. CONNECTION_ID()

重 点

出问题时先敲这几条,很多时候答案就是「连错库了」。

47
第 15 章 · 第六节

一句话把几件事全问出来

这几个函数不带参数,括号也不能省。

第 47 页课件

重 点

USER() 是你连进来时报的名字,CURRENT_USER() 是服务器实际认下的账号。

知道更多

第 8 章讲过这两个不一定一样,匿名账号那一节就是拿它俩看出来的。

想一想

什么情况下这两个会不一样?

48
第 15 章 · 第六节

第 6 章那五个的老朋友

这一节多了标准差和方差两个。

第 48 页课件

重 点

COUNT(列名) 不数 NULL,COUNT(*) 数。这一条第 6 章讲过,还是常错。

分清楚两种数法

写法空值算吗
COUNT(*)
COUNT(score)不算

上机做

上机三第 5 题 两种数法比一比

49
第 15 章 · 第六节

每人几门课,平均几分

一句 GROUP BY 就做完了。

第 49 页课件

重 点

题目说的是「已选课同学」,所以只有七行,一门没选的那位不在里面。

知道更多

平均分带六位小数,是因为 score 是 DECIMAL(5,2),AVG 会往后加四位。

想一想

要把没选课的也列出来,该怎么改?

50
第 15 章 · 第六节

MD5 是单向的,回不去

所以密码列存的是摘要,不是明文。

第 50 页课件

重 点

MD5 出来永远 32 位,第 14 章那个 char(32) 的密码列就是给它留的。

知道更多

登录时把用户输入的口令再算一次 MD5,跟库里那一串对着比就行。

上机做

上机三第 4 题 算一个摘要看看

想一想

两个人口令一样,库里存的摘要一样吗?

51
第 15 章 · 第六节

控制流函数与类型转换

在一句 SQL 里就能拐弯,不用写存储过程。

第 51 页课件

分清楚同名两样

写法用在哪
IF(a,b,c)任何 SQL 里
IF…THEN过程体里

重 点

IFNULL(x,0) 把空值换成零,报表里最常用的一个函数。

练一练

SELECT LENGTH('数据库') 的结果是?
  1. A3
  2. B6
  3. C9
  4. D报错
答案 C

LENGTH 数字节。utf8mb4 里一个汉字占三个字节,三个字就是 9。数字数用 CHAR_LENGTH。

保山学院·人工智能教研室·曹鼎鼎