内容正文:
举一反三考点练
《数据库原理与应用技术-MySQL》MySQL基础知识-课后自测
知识点一 MySQL运算符分类与使用规则
1.(SQL 语句题)请写出一条 SELECT 语句,计算表达式 17 DIV 5 与 17 % 5 的值,并把两列结果分别命名为 int_quo 和 int_mod。
2.(SQL 语句题)写出一条语句,查询 t_student 表中年龄 age 在 15 到 18 之间(含 15、18)且性别 sex 为 '女' 的学生全部字段。
3.(程序填空题)下列命令用于判断字段 bonus 是否为空,若为空则显示 0,否则显示原值,请补全空缺函数名。
SELECT ________(bonus,0) FROM t_salary;
4.(程序填空题)在 WHERE 子句中,若要把某字符串列 city 的“以 B 开头倒数第 3 字符为 e”的记录筛选出来,应使用 LIKE 模式:
city LIKE '_____%';
5.(综合应用题)
成绩表 t_grade
id
stu_id
score
course_id
1
1001
95.5
1
2
1002
88
1
3
1003
79.5
2
4
1004
84.5
2
5
1005
90
3
6
1006
89.99
3
7
1007
80
4
8
1008
77
4
课程表 t_course
id
name
1
高等数学
2
英语
3
NULL
4
物理
5
NULL
1) 用一条语句查询 t_grade 表中成绩 score 在 [80,90) 区间内的记录,只显示 id、stu_id、score 三列;
2) 再写一条语句统计上述区间成绩的学生人数,并把结果列命名为 cnt;
3) 写一条语句将 t_course 表中 name 值为 NULL 的记录查询出来,只返回 id 列。
知识点二 MySQL函数的分类与功能
1.(SQL 语句题)写出一条语句,查询 t_student 表,返回每名学生的姓名 name 及其姓名的字符长度(列别名 name_len)。
2.(SQL 语句题)使用数学函数,生成一个 1—100 之间(含 1 不含 100)的随机整数,并把该列别名设为 lucky。
3.(程序填空题)若要把字符串列 phone 的中间 4 位替换为星号,可写:
SELECT CONCAT(LEFT(phone,3),'____',RIGHT(phone,4)) FROM t_user;
4.(程序填空题)计算某列 birth(DATE 型)到今天的年龄(周岁),应写:
SELECT TIMESTAMPDIFF(______,birth,CURDATE()) AS age FROM t_user;
5.(综合应用题)
t_grade 成绩表
score
95.5
79.5
84.5
90
89.99
80
77
t_course 课程表
name
高等数学
英语
NULL
物理
NULL
1) 用聚合函数统计 t_grade 表的最高分、最低分、平均分,列别名分别为 max_s、min_s、avg_s;
2) 用字符串函数把课程名 name 列统一为大写并去掉首尾空格,返回两列:原 name、处理后的 name(别名 clean_name);
3) 用日期函数查询当前是星期几(英文全称),列别名 week_day。
知识点三 MySQL函数的实际应用与注意事项
1.(SQL 语句题)写出一条语句,查询 t_grade 表,若 score 为 NULL 则显示 0,否则显示原值,列别名 real_score。
2.(SQL 语句题)把 t_student 表按性别 sex 分组,统计每组人数,要求使用 COUNT 函数并去除同名学生(按 name 去重),结果列别名 cnt_dist。
3.(程序填空题)在批量插入后若想获取最近一次生成的自增 ID,应使用系统函数:
SELECT ________();
4.(程序填空题)当需要把价格列 price 保留 2 位小数并格式化为千分位字符串(如 1,234.56)时,应使用函数:
SELECT ________(price,2) FROM t_goods;
5.(综合应用题)
t_grade
id
stu_id
score
1
1001
95.5
2
1002
88
3
1003
79.5
4
1004
84.5
t_student
name
sex
age
张三
男
20
李四
女
17
王五
男
18
1) 用 ROUND 函数把 t_grade 表中 score 列四舍五入到整数,更新回原列;
2) 用日期函数查询今天距离 2026-06-07 00:00:00 还有多少天,列别名 days_left;
3) 用 IF 函数查询 t_student 表,返回 name、sex,并增加一列描述 desc,规则:若 age>=18 显示“成年”,否则显示“未成年”。
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
举一反三考点练
《数据库原理与应用技术-MySQL》MySQL基础知识-课后自测
知识点一 MySQL运算符分类与使用规则
1.(SQL 语句题)请写出一条 SELECT 语句,计算表达式 17 DIV 5 与 17 % 5 的值,并把两列结果分别命名为 int_quo 和 int_mod。
【答案】SELECT 17 DIV 5 AS int_quo, 17 % 5 AS int_mod;
2.(SQL 语句题)写出一条语句,查询 t_student 表中年龄 age 在 15 到 18 之间(含 15、18)且性别 sex 为 '女' 的学生全部字段。
【答案】SELECT * FROM t_student WHERE age BETWEEN 15 AND 18 AND sex='女';
3.(程序填空题)下列命令用于判断字段 bonus 是否为空,若为空则显示 0,否则显示原值,请补全空缺函数名。
SELECT ________(bonus,0) FROM t_salary;
【答案】IFNULL
4.(程序填空题)在 WHERE 子句中,若要把某字符串列 city 的“以 B 开头倒数第 3 字符为 e”的记录筛选出来,应使用 LIKE 模式:
city LIKE '_____%';
【答案】B%e__
5.(综合应用题)
成绩表 t_grade
id
stu_id
score
course_id
1
1001
95.5
1
2
1002
88
1
3
1003
79.5
2
4
1004
84.5
2
5
1005
90
3
6
1006
89.99
3
7
1007
80
4
8
1008
77
4
课程表 t_course
id
name
1
高等数学
2
英语
3
NULL
4
物理
5
NULL
1) 用一条语句查询 t_grade 表中成绩 score 在 [80,90) 区间内的记录,只显示 id、stu_id、score 三列;
2) 再写一条语句统计上述区间成绩的学生人数,并把结果列命名为 cnt;
3) 写一条语句将 t_course 表中 name 值为 NULL 的记录查询出来,只返回 id 列。
【答案】
1) SELECT id,stu_id,score FROM t_grade WHERE score BETWEEN 80 AND 89.999;
2) SELECT COUNT(*) AS cnt FROM t_grade WHERE score BETWEEN 80 AND 89.999;
3) SELECT id FROM t_course WHERE name IS NULL;
知识点二 MySQL函数的分类与功能
1.(SQL 语句题)写出一条语句,查询 t_student 表,返回每名学生的姓名 name 及其姓名的字符长度(列别名 name_len)。
【答案】SELECT name,CHAR_LENGTH(name) AS name_len FROM t_student;
2.(SQL 语句题)使用数学函数,生成一个 1—100 之间(含 1 不含 100)的随机整数,并把该列别名设为 lucky。
【答案】SELECT FLOOR(1+RAND()*99) AS lucky;
3.(程序填空题)若要把字符串列 phone 的中间 4 位替换为星号,可写:
SELECT CONCAT(LEFT(phone,3),'____',RIGHT(phone,4)) FROM t_user;
【答案】****
4.(程序填空题)计算某列 birth(DATE 型)到今天的年龄(周岁),应写:
SELECT TIMESTAMPDIFF(______,birth,CURDATE()) AS age FROM t_user;
【答案】YEAR
5.(综合应用题)
t_grade 成绩表
score
95.5
79.5
84.5
90
89.99
80
77
t_course 课程表
name
高等数学
英语
NULL
物理
NULL
1) 用聚合函数统计 t_grade 表的最高分、最低分、平均分,列别名分别为 max_s、min_s、avg_s;
2) 用字符串函数把课程名 name 列统一为大写并去掉首尾空格,返回两列:原 name、处理后的 name(别名 clean_name);
3) 用日期函数查询当前是星期几(英文全称),列别名 week_day。
【答案】
1) SELECT MAX(score) AS max_s,MIN(score) AS min_s,AVG(score) AS avg_s FROM t_grade;
2) SELECT name,UPPER(TRIM(name)) AS clean_name FROM t_course;
3) SELECT DAYNAME(NOW()) AS week_day;
知识点三 MySQL函数的实际应用与注意事项
1.(SQL 语句题)写出一条语句,查询 t_grade 表,若 score 为 NULL 则显示 0,否则显示原值,列别名 real_score。
【答案】SELECT IFNULL(score,0) AS real_score FROM t_grade;
2.(SQL 语句题)把 t_student 表按性别 sex 分组,统计每组人数,要求使用 COUNT 函数并去除同名学生(按 name 去重),结果列别名 cnt_dist。
【答案】SELECT sex,COUNT(DISTINCT name) AS cnt_dist FROM t_student GROUP BY sex;
3.(程序填空题)在批量插入后若想获取最近一次生成的自增 ID,应使用系统函数:
SELECT ________();
【答案】LAST_INSERT_ID
4.(程序填空题)当需要把价格列 price 保留 2 位小数并格式化为千分位字符串(如 1,234.56)时,应使用函数:
SELECT ________(price,2) FROM t_goods;
【答案】FORMAT
5.(综合应用题)
t_grade
id
stu_id
score
1
1001
95.5
2
1002
88
3
1003
79.5
4
1004
84.5
t_student
name
sex
age
张三
男
20
李四
女
17
王五
男
18
1) 用 ROUND 函数把 t_grade 表中 score 列四舍五入到整数,更新回原列;
2) 用日期函数查询今天距离 2026-06-07 00:00:00 还有多少天,列别名 days_left;
3) 用 IF 函数查询 t_student 表,返回 name、sex,并增加一列描述 desc,规则:若 age>=18 显示“成年”,否则显示“未成年”。
【答案】
1) UPDATE t_grade SET score=ROUND(score);
2) SELECT DATEDIFF('2026-06-07',CURDATE()) AS days_left;
3) SELECT name,sex,IF(age>=18,'成年','未成年') AS desc FROM t_student;
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$