diff --git a/day9/homework/h7.sql b/day9/homework/h7.sql new file mode 100644 index 0000000..30bfd67 --- /dev/null +++ b/day9/homework/h7.sql @@ -0,0 +1,94 @@ +/* +根据stu.sql脚本中的数据表完成下列操作: + +1) 查询学生选课表中的全部数据 + +2) 查询全体学生的姓名、学号和所在系。 + +3) 查询全体学生的姓名及其出生年份。 + +4) 查询计算机系全体学生的姓名。 + +5) 查询年龄在33岁以下的学生的姓名及年龄。 + +6)查询考试成绩有不及格的学生的学号 + +7)查询成绩在70~80分之间的学生,包括学号,课程号和成绩 + +【提示】stu.sql文件,在班级群中, 拿到stu.sql文件后,先在数据库创建新的库 studb2, 然后再source。 库中的表说明如下: +student 学生表 +teacher 教师表 +course 课程表 +sc 成绩表 + + 计算年龄的方式: floor(datediff(now(), age)/365) as age +*/ + +-- 删除已存在同名数据库 studb2 +drop database if exists studb2; + +-- 新建数据库 studb2 +create database studb2; + +-- 进入数据库 studb2 +use studb2; + +-- 导入 stu.sql 数据到数据库 stu +source stu.sql; + +-- 显示导入结果 +show tables; + +-- 查询学生选课表中的全部数据 +SELECT * +FROM course; + +-- 查询全体学生的姓名、学号和所在系 +SELECT + student.name AS '姓名', + student.sid AS '学号', + xb.name AS '所在系' +FROM student +JOIN xb +ON student.xid = xb.xid; + +-- 查询全体学生的姓名及其出生年份 +SELECT + name AS '学生姓名', + YEAR(age) AS '出生年份' +FROM student; + +-- 查询计算机系全体学生的姓名 +SELECT + xb.name AS '所在系', + student.name AS '姓名' +FROM xb +JOIN student +ON xb.xid = student.xid +WHERE xb.name = '计算机系'; + +-- 查询年龄在33岁以下的学生的姓名及年龄 +SELECT + name AS '姓名', + FLOOR(DATEDIFF(NOW(), age)/365) AS '年龄' +FROM student +WHERE FLOOR(DATEDIFF(NOW(), age)/365) < 33; + +-- 查询考试成绩有不及格的学生的学号 DISTINCT 用于结果行去重 +SELECT DISTINCT + student.sid AS '学号' +FROM student +JOIN sc +ON student.sid = sc.sid +WHERE sc.score < 60; + +-- 查询成绩在70-80分之间的学生,包括学号,课程号和成绩 +SELECT + student.sid AS '学号', + sc.cid AS '课程号', + sc.score AS '成绩' +FROM student +JOIN sc +ON student.sid = sc.sid +-- WHERE sc.score BETWEEN 70 AND 80; +WHERE sc.score >= 70 and sc.score <= 80; \ No newline at end of file