第1关 字符函数
1、字符串的常用函数:
函数 | 作用 |
---|---|
CONCAT() | 字符串的拼接 |
CONCAT_WS() | 使用指定的字符将目标字符串进行拼接 |
FORMAT() | 数字格式化 |
LOWER() | 字符串全部转换为小写 |
UPPER() | 字符串全部转换为大写 |
LEFT() | 获取左侧的字符串 |
RIGHT() | 获取右侧的字符串 |
LENGTH() | 计算字符串的长度 |
LTRIM() | 删除前导的空格 |
RTRIM() | 删除后续的空格 |
TRIM() | 删除前导和后续的空格 |
SUBSTRING() | 字符串截取 |
SUBSTRING_INDEX() | 分隔字符串 |
REPLACE() | 字符串替换 |
[NOT] LIKE | 模式匹配 |
2、编程要求
- 以首字母大写,其他字母小写的方式显示所有员工的姓名。
employee
员工表数据结构如下:
Id | Name |
---|---|
1 | lYN |
2 | wZQ |
3 | xLC |
4 | aLW |
5 | lZY |
########## Begin ##########
select CONCAT (upper(SUBSTR(NAME,1,1)),LOWER(SUBSTR(NAME,2,LENGTH(NAME)))) as Name from employee;
########## End ##########
第2关 数学函数
1、常与数值结合使用的函数:
函数 | 说明 |
---|---|
CEIL() | 进一(向上)取整 |
FLOOR() | 舍一(向下)取整 |
POWER() | 幂运算 |
SQRT() | 平方根运算 |
ROUND() | 四舍五入 |
ABS() | 绝对值计算 |
RAND() | 生产0-1 的随机数 |
TRUNCATE() | 数字截取 |
DIV | 整数除法 |
MOD | 取余数(取模) |
2、CEIL()和FLOOR()
这两个函数都是对值进行取整,CEIL()
函数是向上取整,FLOOR()
是向下取整:
3、MySQL
中还有比较运算符:
函数 | 说明 |
---|---|
[NOT] BETWEEN...AND... | [不]在范围内 |
[NOT] IN() | [不]在列出值范围内 |
IS [NOT] NULL | [不]为空 |
4、编程要求
在Begin - End
区域内进行代码补充,具体任务如下:
- 根据下面表达式修改学生的最终成绩,结果使用四舍五入保留两位小数:
########## Begin ##########
update Score set s_score=TRUNCATE(s_score-(round(sqrt((power(4,4)-power(3,3))/power(2,2)),2)),2);
########## End ##########
第3关 日期时间函数和流程控制函数
1、MySQL
中常用的日期时间函数:
函数 | 说明 |
---|---|
NOW() | 当前日期和时间 |
CURDATE() | 当前日期 |
CURTIME() | 当前时间 |
DATE_ADD() | 日期变化 |
DATEDIFF() | 日期差值 |
DATE_FORMAT() | 日期格式化 |
YEAR() | 返回日期的年份 |
MONTH() | 返回日期的月份 |
WEEK() | 返回日期的周号 |
2、以下是在format
字符串中常用的说明符,更多的说明符可在 MySQL 官方文档中进行查看:
格式 | 描述 |
---|---|
%d | 月的天,数值(00-31 ) |
%H | 小时 (00-23 ) |
%h | 小时 (01-12 ) |
%m | 月,数值(00-12 ) |
%p | AM 或 PM |
%s | 秒(00-59 ) |
%T | 时间,24 -小时(hh:mm:ss ) |
%Y | 年,4 位 |
3、流程控制类函数
函数 | 说明 |
---|---|
IF() | 判断,流程控制 |
IFNULL() | 字段值是否为空 |
CASE | 搜索语句 |
4、编程要求
在Begin - End
区域内进行代码补充,具体任务如下:
-
查询所有学生的出生年份及至
2019-01-01
时的年龄; -
查询所有课程中的最高分、最低分、平均分和及格率,按课程
id
升序输出。
########## Begin ##########
########## 查询学生出生年份及年龄 ##########
select year(s_birth) year,'2019-01-01'-s_birth '年龄' from Student;
########## 查询课程的最高分、最低分、平均分和及格率 #########
select c.c_id 课程id,
c_name 课程名,
max(s_score) 最高分,
min(s_score) '最低分',
round(avg(s_score),2) '平均分',
round((count(s_score>=60 or null)/count(s_score))*100,2) '及格率'
from Score s,Course c
where s.c_id=c.c_id
group by s.c_id;
########## End ##########
第4关 自定义函数
1、编程要求
在Begin - End
区域内进行代码补充,具体任务如下:
-
定义一个函数,输出三个数中的最大值,函数形式为:
-
fn_three_max(param_1 int, param_2 int, param_3 int)
。
########## Begin ##########
create function fn_three_max(param_1 int,param_2 int, param_3 int)returns int
return 999;
########## End ##########