一、 实验目的
掌握SQL程序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询等。掌握视图的使用。掌握SQL嵌套查询和集合查询等各种高级查询的设计方法。熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、修改、删除操作。熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。
二、 实验内容
- 查询SC表中的全部数据。
- 查询计算机系学生的姓名和年龄
- 查询成绩在70~80分的学生的学号、课程号和成绩
- 查询计算机系年龄在18~20岁的男生姓名和年龄
- 查询C001课程的最高分
- 查询计算机系学生的最大年龄和最小年龄
- 统计每个系的学生人数
- 统计每门课程的选课人数和最高成绩
- 计算每个学生的选课门数和考试总成绩,并按选课门数升序显示结果
- 列出总成绩超过200的学生的学号和总成绩
- 查询选了C002课程的学生姓名和所在系
- 查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果
- 查询与VB在同一学期开设的课程的课程名和开课学期
- 查询与李勇年龄相同的学生的姓名、所在系和年龄
- 查询哪些课程没有学生选修,列出课程号和课程名
- 查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号
- 查询计算机系哪些学生没有选课,列出学生姓名
- 查询计算机系年龄最大的三个学生的姓名和年龄,top 3
- 列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩,top3
- 查询选课门数最多的前2位学生,列出学号和选课门数, top 2
- 查询通信工程系成绩80分以上的学生的学号和姓名
- 查询计算机系学生考试成绩高于计算机系学生平均成绩的学生的姓名、考试的课程名和考试成绩
- 统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”;如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。
- 删除没人选的课程的基本信息
- 包含学生的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图
- 包含学生的学号、姓名、选修的课程名和考试成绩的视图
- 统计每个学生的选课门数,要求列出学生学号和选课门数的视图
- 统计每个学生的修课总学分,要求列出学生学号和总学分的视图(说明:考试成绩大于等于60才可获得此门课程的学分)。
- 利用视图查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
- 利用视图查询选课门数超过3门的学生的学号和选课门数。
- 利用视图查询计算机系选课门数超过3门的学生的姓名和选课门数。
- 利用视图查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
- 利用视图查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
- 再创建一个“计算机系”同学的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。
增加一条记录,
0841101 张新 计算机系 20 C001 高等数学 4
修改这条记录为
0841101 张新 物理系 20 C001 高等数学 4
三、 实验环境
MySQL、Navicat 15 for MySQL
四、 实验前准备
实验数据,使用第一次实验创建的表和数据
五、 实验步骤
-
查询SC表中的全部数据。
-
查询计算机系学生的姓名和年龄,并使用别名
-
查询成绩在70~80分的学生的学号、课程号和成绩
-
查询计算机系年龄在18~20岁的男生姓名和年龄
-
查询C001课程的最高分
-
查询计算机系学生的最大年龄和最小年龄
-
统计每个系的学生人数
-
统计每门课程的选课人数和最高成绩
-
计算每个学生的选课门数和考试总成绩,并按选课门数升序显示结果
-
列出总成绩超过200的学生的学号和总成绩
-
查询选了C002课程的学生姓名和所在系
-
查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果
-
查询与VB在同一学期开设的课程的课程名和开课学期
-
查询与李勇年龄相同的学生的姓名、所在系和年龄
-
查询哪些课程没有学生选修,列出课程号和课程名
-
查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号
-
查询计算机系哪些学生没有选课,列出学生姓名
-
查询计算机系年龄最大的三个学生的姓名和年龄,top 3
-
列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩,top3
-
查询选课门数最多的前2位学生,列出学号和选课门数, top 2
-
查询通信工程系成绩80分以上的学生的学号和姓名
-
查询计算机系学生考试成绩高于计算机系学生平均成绩的学生的姓名、考试的课程名和考试成绩
-
统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”;如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。
-
删除没人选的课程的基本信息
-
包含学生的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图
-
包含学生的学号、姓名、选修的课程名和考试成绩的视图
-
统计每个学生的选课门数,要求列出学生学号和选课门数的视图
-
统计每个学生的修课总学分,要求列出学生学号和总学分的视图(说明:考试成绩大于等于60才可获得此门课程的学分)。
-
利用视图查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
-
利用视图查询选课门数超过3门的学生的学号和选课门数。
-
利用视图查询计算机系选课门数超过3门的学生的姓名和选课门数
-
利用视图查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
-
利用视图查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
-
再创建一个“计算机系”同学的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。
增加一条记录,
0841101 张新 计算机系 20 C001 高等数学 4
修改这条记录为
0841101 张新 物理系 20 C001 高等数学 4
六、实验结果
-
查询SC表中的全部数据。
-
查询计算机系学生的姓名和年龄
-
查询成绩在70~80分的学生的学号、课程号和成绩
-
查询计算机系年龄在18~20岁的男生姓名和年龄
-
查询C001课程的最高分
-
查询计算机系学生的最大年龄和最小年龄
-
统计每个系的学生人数
-
统计每门课程的选课人数和最高成绩
-
计算每个学生的选课门数和考试总成绩,并按选课门数升序显示结果
-
列出总成绩超过200的学生的学号和总成绩
-
查询选了C002课程的学生姓名和所在系
-
查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果
-
查询与VB在同一学期开设的课程的课程名和开课学期
-
查询与李勇年龄相同的学生的姓名、所在系和年龄
-
查询哪些课程没有学生选修,列出课程号和课程名
-
查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号
-
查询计算机系哪些学生没有选课,列出学生姓名
-
查询计算机系年龄最大的三个学生的姓名和年龄,top 3
-
列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩,top3
-
查询选课门数最多的前2位学生,列出学号和选课门数, top 2
-
查询通信工程系成绩80分以上的学生的学号和姓名
-
查询计算机系学生考试成绩高于计算机系学生平均成绩的学生的姓名、考试的课程名和考试成绩
-
统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”;如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。
-
删除没人选的课程的基本信息
-
包含学生的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图
-
包含学生的学号、姓名、选修的课程名和考试成绩的视图
-
统计每个学生的选课门数,要求列出学生学号和选课门数的视图
-
统计每个学生的修课总学分,要求列出学生学号和总学分的视图(说明:考试成绩大于等于60才可获得此门课程的学分)。
-
利用视图查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
-
利用视图查询选课门数超过3门的学生的学号和选课门数。
-
利用视图查询计算机系选课门数超过3门的学生的姓名和选课门数。
-
利用视图查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
-
利用视图查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
-
再创建一个“计算机系”同学的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。
增加一条记录,
0841101 张新 计算机系 20 C001 高等数学 4
修改这条记录为
0841101 张新 物理系 20 C001 高等数学 4
注意:不能在一张由多张关联表连接而成的视图上做同时修改两张表的操作。