一、字符串函数练习题(10 题)
- 分别查询
'MySQL数据库'的字节长度和字符个数 - 拼接字符串:
'学号:'、1001、姓名:、'李四' - 使用分隔符
-拼接'2026'、04、09 - 将
'mysql study'转为大写,'MYSQL STUDY'转为小写 - 去除
' MySQL 实战 '左右两侧空格 - 截取
'hello mysql'从第 3 个字符开始的 4 个字符 - 获取
'abcdefgh'左侧 3 个字符、右侧 2 个字符 - 将
'我喜欢Java'中的Java替换为MySQL - 查询
'mysql is good'中good首次出现的位置 - 查询
'mysql'和'学习'拼接后的总字节长度
<details><summary>答案</summary>
sql
SELECT LENGTH('MySQL数据库'), CHAR_LENGTH('MySQL数据库');
结果:13、9
sql
SELECT CONCAT('学号:',1001,' 姓名:','李四');
结果:学号:1001 姓名:李四
sql
SELECT CONCAT_WS('-','2026','04','09');
结果:2026-04-09
sql
SELECT UPPER('mysql study'), LOWER('MYSQL STUDY');
结果:MYSQL STUDY、mysql study
sql
SELECT TRIM(' MySQL 实战 ');
结果:MySQL 实战
sql
SELECT SUBSTRING('hello mysql',3,4);
结果:llo
sql
SELECT LEFT('abcdefgh',3), RIGHT('abcdefgh',2);
结果:abc、gh
sql
SELECT REPLACE('我喜欢Java','Java','MySQL');
结果:我喜欢 MySQL
sql
SELECT INSTR('mysql is good','good');
结果:9
sql
SELECT LENGTH(CONCAT('mysql','学习'));
结果:9
</details>
二、数值函数练习题(10 题)
- 查询
-25的绝对值 - 计算
27除以4的余数 - 对
3.1415926四舍五入保留 3 位小数 - 对
6.2向上取整,对9.8向下取整 - 计算
4的 3 次方 - 求
49的平方根 - 生成 0~1 之间的随机数
- 查询圆周率 π 的值
- 对
8.5四舍五入取整数 - 计算
ABS(-10) + PI()的结果
<details><summary>答案</summary>
SELECT ABS(-25);→ 25SELECT MOD(27,4);→ 3SELECT ROUND(3.1415926,3);→ 3.142SELECT CEIL(6.2), FLOOR(9.8);→ 7、9SELECT POW(4,3);→ 64SELECT SQRT(49);→ 7SELECT RAND();→ 随机小数SELECT PI();→ 3.141593SELECT ROUND(8.5);→ 9SELECT ABS(-10)+PI();→ 13.141593
</details>
三、日期时间函数练习题(15 题)
- 查询当前完整日期时间(NOW ())
- 查询当前系统实时时间(SYSDATE ())
- 查询当前时间戳(CURRENT_TIMESTAMP ())
- 查询本地当前时间(LOCALTIME ())
- 查询当前日期(不含时间)
- 查询当前时间(不含日期)
- 提取当前时间的年份、月份、日期
- 提取当前时间的小时、分钟、秒
- 格式化当前日期为
YYYY年MM月DD日 - 计算
2026-10-01与2026-04-09相差天数 - 在当前日期上加 2 个月
- 在当前日期上减 10 天
- 查询
NOW()和SYSDATE()是否相等 - 提取
'2026-04-09 15:30:25'的小时数 - 格式化当前时间为
HH时ii分ss秒
<details><summary>答案</summary>
SELECT NOW();SELECT SYSDATE();SELECT CURRENT_TIMESTAMP();SELECT LOCALTIME();SELECT CURDATE();SELECT CURTIME();SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());SELECT HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');SELECT DATEDIFF('2026-10-01','2026-04-09');→ 175SELECT DATE_ADD(CURDATE(),INTERVAL 2 MONTH);SELECT DATE_SUB(CURDATE(),INTERVAL 10 DAY);SELECT NOW()=SYSDATE();→ 一般为 1(相等)SELECT HOUR('2026-04-09 15:30:25');→15SELECT DATE_FORMAT(NOW(),'%H时%i分%s秒');
</details>
四、条件判断函数练习题(6 题)
- 判断
75是否≥60,是返回及格,否返回不及格 - 若字段值为 NULL,显示
无成绩,否则显示原值(用 IFNULL) - 比较
10和10,相等返回 NULL,否则返回前者 - 对成绩 92 分级:≥90 优秀,≥60 及格,否则不及格
- 对成绩 NULL 显示
缺考,59 显示不及格,85 显示及格 - 使用 CASE WHEN 判断 150 是否大于 100,返回
是/否
<details><summary>答案</summary>
sql
SELECT IF(75>=60,'及格','不及格');
→ 及格
sql
SELECT IFNULL(NULL,'无成绩');
→ 无成绩
sql
SELECT NULLIF(10,10);
→ NULL
sql
SELECT CASE WHEN 92>=90 THEN '优秀' WHEN 92>=60 THEN '及格' ELSE '不及格' END;
→ 优秀
sql
SELECT CASE WHEN NULL IS NULL THEN '缺考' WHEN 59<60 THEN '不及格' ELSE '及格' END;
→ 缺考
sql
SELECT CASE WHEN 150>100 THEN '是' ELSE '否' END;
→ 是
</details>
五、系统信息函数练习题(4 题)
- 查询当前 MySQL 版本号
- 查询当前正在使用的数据库名
- 查询当前登录数据库的用户
- 对字符串
'123456'进行 MD5 加密
<details><summary>答案</summary>
SELECT VERSION();SELECT DATABASE();SELECT USER();SELECT MD5('123456');→ e10adc3949ba59abbe56e057f20f883e
</details>
六、综合练习题(5 题)
- 查询
'MySQL'的字符长度 + 圆周率的整数部分 - 拼接当前日期和
'学习打卡',格式:2026-04-09 学习打卡 - 对成绩 88.6 四舍五入为整数,并判断是否及格
- 去除
' mysql函数练习 '空格后转大写 - 查询当前时间的年份减去 2020 的结果
<details><summary>答案</summary>
SELECT CHAR_LENGTH('MySQL')+FLOOR(PI());→ 5+3=8SELECT CONCAT(CURDATE(),'学习打卡');SELECT IF(ROUND(88.6)>=60,'及格','不及格');→ 及格SELECT UPPER(TRIM(' mysql函数练习 '));→ MYSQL 函数练习SELECT YEAR(NOW())-2020;→ 6
</details>