# day27 SQL强化和实践
课程目标:练习常见的SQL语句和表结构的设计。
课程概要:
- SQL强化
- 表结构设计(博客系统)
# 1. SQL强化
- 根据上图创建 数据库 & 表结构 并 录入数据(可以自行创造数据)。
- 创建用户 luffy 并赋予此数据库的所有权限。
- 查询姓“李”的老师的个数。
- 查询姓“张”的学生名单。
- 查询男生、女生的人数。
- 查询同名同姓学生名单,并统计同名人数。
- 查询 “三年二班” 的所有学生。
- 查询 每个 班级的 班级名称、班级人数。
- 查询成绩小于60分的同学的学号、姓名、成绩、课程名称。
- 查询选修了 “生物课” 的所有学生ID、学生姓名、成绩。
- 查询选修了 “生物课” 且分数低于60的的所有学生ID、学生姓名、成绩。
- 查询所有同学的学号、姓名、选课数、总成绩。
- 查询各科被选修的学生数。
- 查询各科成绩的总分、最高分、最低分,显示:课程ID、课程名称、总分、最高分、最低分。
- 查询各科成绩的平均分,显示:课程ID、课程名称、平均分。
- 查询各科成绩的平均分,显示:课程ID、课程名称、平均分(按平均分从大到小排序)。
- 查询各科成绩的平均分和及格率,显示:课程ID、课程名称、平均分、及格率。
- 查询平均成绩大于60的所有学生的学号、平均成绩;。
- 查询平均成绩大于85的所有学生的学号、平均成绩、姓名。
- 查询 “三年二班” 每个学生的 学号、姓名、总成绩、平均成绩。
- 查询各个班级的班级名称、总成绩、平均成绩、及格率(按平均成绩从大到小排序)。
- 查询学过 “波多” 老师课的同学的学号、姓名。
- 查询没学过 “波多” 老师课的同学的学号、姓名。
- 查询选修 “苍空” 老师所授课程的学生中,成绩最高的学生姓名及其成绩(不考虑并列)。
- 查询选修 “苍空” 老师所授课程的学生中,成绩最高的学生姓名及其成绩(考虑并列)。
- 查询只选修了一门课程的全部学生的学号、姓名。
- 查询至少选修两门课程的学生学号、学生姓名、选修课程数量。
- 查询两门及以上不及格的同学的学号、学生姓名、选修课程数量。
- 查询选修了所有课程的学生的学号、姓名。
- 查询未选修所有课程的学生的学号、姓名。
- 查询所有学生都选修了的课程的课程号、课程名。
- 查询选修 “生物” 和 “物理” 课程的所有学生学号、姓名。
- 查询至少有一门课与学号为“1”的学生所选的课程相同的其他学生学号 和 姓名 。
- 查询与学号为 “2” 的同学选修的课程完全相同的其他 学生学号 和 姓名 。
- 查询“生物”课程比“物理”课程成绩高的所有学生的学号;
- 查询每门课程成绩最好的前3名 (不考虑成绩并列情况) 。
- 查询每门课程成绩最好的前3名 (考虑成绩并列情况) 。
- 创建一个表
sc
,然后将 score 表中所有数据插入到 sc 表中。 - 向 sc 表中插入一些记录,这些记录要求符合以下条件:
- 学生ID为:没上过课程ID为 “2” 课程的学生的 学号;
- 课程ID为:2
- 成绩为:80
- 向 sc 表中插入一些记录,这些记录要求符合以下条件:
- 学生ID为:没上过课程ID为 “2” 课程的学生的 学号。
- 课程ID为:2。
- 成绩为:课程ID为3的最高分。
# 2. 设计表结构
根据如下的业务需求设计相应的表结构,内部需涵盖如下功能。
- 注册
- 登录
- 发布博客
- 查看博客列表,显示博客标题、创建时间、阅读数量、评论数量、赞数量等。
- 博客详细,显示博文详细、评论 等。
- 发表评论
- 赞 or 踩
- 阅读数量 + 1
参考如下图片请根据如下功能来设计相应的表结构。
注意:只需要设计表结构,不需要用python代码实现具体的功能(再学一点知识点后再更好的去实现)。
# 2.1 注册和登录
# 2.2 文章列表
# 2.3 文章详细
# 2.4 评论 & 阅读 & 赞 & 踩
注意:假设都是一级评论(不能回复评论)。