初识MYSQL —— 内置函数
一、日期函数
| 函数名称 | 描述 |
|---|---|
current_date() | 当前日期 |
current_time() | 当前时间 |
current_timestamp() | 当前时间戳 |
date(datetime) | 返回 datetime 参数的日期部分 |
date_add(date, interval d_value type) | 在 date 中添加日期或时间,interval 后的数值单位可以是:year、minute、second、day |
date_sub(date, interval d_value type) | 在 date 中减去日期或时间,interval 后的数值单位可以是:year、minute、second、day |
datediff(date1, date2) | 两个日期的差,单位是天 |
now() | 当前日期时间 |
1. 获取当前日期、时间
current_date()获取当前日期、current_time()获取当前时间、current_timestamp()获取当前时间戳;
而now()也可以获取当前时间,它获取的是当前日期 时间。

**date(datetime)**函数,它可以截取datetime(日期时间)中的日期部分。

2. 日期计算
date_add函数用来计算date加上val后的日期时间;
date_sub函数用来计算date减去val后的日期时间;
其中val的单位可以是year,month,day,hour,minute,second(年月日、时分秒)
datediff函数用来计算两个日期的时间差,返回结果单位是天。

有了日期时间相关的函数,在插入数据时,就可以直接获取当前时间进行插入;
二、字符串函数
| 函数名 | 功能描述 |
|---|---|
charset(str) | 返回字符串字符集 |
concat(string2 [, ...]) | 连接字符串 |
instr(string, substring) | 返回 substring 在 string 中出现的位置,没有返回 0 |
ucase(string2) | 转换成大写 |
lcase(string2) | 转换成小写 |
left(string2, length) | 从 string2 中的左边起取 length 个字符 |
length(string) | 返回 string 的长度 |
replace(str, search_str, replace_str) | 在 str 中用 replace_str 替换 search_str |
strcmp(string1, string2) | 逐字符比较两字符串大小 |
substring(str, position [, length]) | 从 str 的 position 开始,取 length 个字符 |
ltrim(string) | 去除左侧空格 |
rtrim(string) | 去除右侧空格 |
trim(string) | 去除前后空格 |
这里还是以上篇文章中的exam_result为例,实际使用一下这些函数;
1. 获取exam_result表中name的字符集
select charset(name) from exam_result;

2. 查询exam_result表中每一个学生的成绩
按照格式输出:XXX的语文是XXX分,数学XXX分,英语XXX分
按照格式输出,这里就可以使用字符串拼接函数concat
concat在使用时,传递的整数会被转化成字符串,然后拼接。
select concat(name,'的语文:',chinese,'分, 数学:',math,'分, 英语:',english) as 分数 from exam_result;

3. 求学生表中学生姓名占用的字节数
length可以求字符串的长度,单位字节。
select length(name) from exam_result;

这里mysql中一个字符占3个字节。
4. 将所有学生姓名中的孙修改成hello
replace(str, search_str, replace_str),将字符串str中的search_str替换成replace_str。
select relpace(name,'孙','上官') from exam_result;

5. 获取name字段的第二个到第三个字符
substring(str, pos [, length]),在字符串str中,从pos位置开始取length个字符(不传length就默认取完)。
注意:这里,下标是从1开始的
select substring(name,1) from exam_result;
select substring(name,2,2) from exam_result;

这里只是查询表,并没有对表内数据做修改。
6. 以首字母小写的方式显示stu表中的所有名字
stu表中数据如下:

要以首字母小写的方式显示所有名字,要将首字母变成小写,首先要取出首字母(使用substring),然后使用lcase转换成小写。
最后再将小写的首字符和后面的所有字母拼接在一起即可。
select concat(lcase(substring(name,1,1)), substring(name,2)) from stu;

三、数学函数
| 函数名称 | 描述 |
|---|---|
abs(number) | 绝对值函数 |
bin(decimal_number) | 十进制转换二进制 |
hex(decimalNumber) | 转换成十六进制 |
conv(number, from_base, to_base) | 进制转换 |
ceiling(number) | 向上去整 |
floor(number) | 向下去整 |
format(number, decimal_places) | 格式化,保留小数位数 |
rand() | 返回随机浮点数,范围 [0.0, 1.0) |
mod(number, denominator) | 取模,求余 |
这里数学函数就类似于C语言当中的函数;
这里像abs取绝对值、mod取模、rand随机数就不过多描述了。
1.进制转换
bin:十进制转换二进制
hex:十进制转换十六进制
conv(num,from_base,to_base):将数num从from_base进制转换为to_base进制

2. 取整
floor:向下取整;(保留整数部分)
ceiling:向上取整;(保留整数部分,有小数部分,整数部分加一)。

3. 浮点数格式化
format(nums,dec):格式化num,保留dec位小数
四、其他函数
1. 查看当前用户
user()函数,返回当前用户名称。
md5(str)函数,对字符串str进行md5摘要,得到一个32位字符串。
database()函数,显示当前正在使用的数据库。
ifnull(val1,val2):如果val1不为空就返回val1,否则就返回val2。
password():加密函数,mysql数据库使用该函数对用户加密。
称。
md5(str)函数,对字符串str进行md5摘要,得到一个32位字符串。
database()函数,显示当前正在使用的数据库。
ifnull(val1,val2):如果val1不为空就返回val1,否则就返回val2。
password():加密函数,mysql数据库使用该函数对用户加密。
本篇文章到这里就结束了,感谢支持
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws
