MySQL数据库学习笔记(7)- DQL之内置函数

MySQL中的内置函数通常包括下面几种, 文本处理函数日期与时间处理函数数值处理函数聚合函数条件判断函数 等。 这些函数可以帮助用户方便的处理表中的数据,简化用户操作。

1. 文本处理函数

函数说明
Left()返回字符串左边的字符
Length()返回字符串的长度
Locate()找出字符串的一个子串
Lower()将字符串转换为小写
LTrim()去掉字符串左边的空格
Right()返回字符串右边的字符
RTrim()去掉字符串右边的空格
Soundex()返回字符串的SOUNDEX值
SubString()返回字串的字符
Upper()简字符串转换为大写

下面是简单的示例,将表 person 中的名字,查询时显示为大写:

SELECT Upper(name) AS Up_Name FROM person;

2. 时间和日期处理函数

函数说明
AddDate()增加一个日期(天、周等)
AddTime()添加一个时间(时、分等)
CurDate()返回当前日期
CurTime()返回当前时间
Date()返回日期时间的日期部分
DateDiff()计算日期之差
Date_Format()返回一个格式化的日期或时间字符串
Day()返回一个日期的天数部分
DayOfWeek()返回一个日期的对应星期
Hour()返回一个时间的小时部分
Minute()返回一个时间的分钟部分
Month()返回一个日期的月份部分
Now()返回当前的日期和时间
Second()返回一个时间的秒部分
Time()返回一个日期时间的时间部分
Year()返回一个日期的年部分

下面是一个简单的示例:

SELECT Date_Format(Now(), '%Y/%m/%d %H%i%s');

3. 数值处理函数

函数说明
Abs()返回一个数的绝对值
Cos()返回一个角度的余弦
Exp()返回一个数的指数值
Mod()返回除操作的余数
Pi()圆周率
Rand()返回一个随机数
Sin()返回一个角度的正弦
Sqrt()返回一个数的平方根
Tan()返回一个角度的正切值

4. 聚合函数

函数说明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某一列的最大值
MIN()返回某一列的最小值
SUM()返回某列的和
注意 : 这里聚合函数均会忽略值为 NULL 的行,想统计全部的行(包括NULL)可以使用 COUNT(*)

下面是简单的示例,统计员工工资中的各个聚合函数中的数值:

SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary), COUNT(*) FROM employee;

输出结果如下
±------------±------------±------------±------------±---------+
| AVG(salary) | MAX(salary) | MIN(salary) | SUM(salary) | COUNT(*) |
±------------±------------±------------±------------±---------+
| 17875.0000 | 30000 | 8000 | 143000 | 8 |
±------------±------------±------------±------------±---------+


5. 条件判断函数

常用的条件判断函数有:IF、IFNULL、CASE WHEN等

(1) IFNULL 的使用

函数 IFNULL() 用于处理NULL值。
例如:IFNULL(v1, v2); 如果v1的值不为 NULL ,返回v1,否则返回v2。

例如如下语句:

SELECT IFNULL(1/0, 0);

结果如下:
±---------------+
| IFNULL(1/0, 0) |
±---------------+
| 0.0000 |
±---------------+

(2) CASE WHEN 语句

case when 是流程控制语句,可以在SQL语句中使用 case when 来获取更加准确和直接的结果。
SQL中的 case when 类似于编程语言中的 if else 或者 switch

比如我们将表employee中的sex字段内容,如果为男则修改为1,如果女修改为2,否则修改为3

# 修改值
UPDATE employee SET sex = CASE sex WHEN '男' THEN '1' WHEN '女' THEN '2' ELSE '3' END;
# 查询显示
ELECT *, CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '未知' END AS SEX_STR FROM employee;
不会飞的纸飞机
扫一扫二维码,了解我的更多动态。

下一篇文章:MySQL数据库学习笔记(8)- DQL之分组数据