一、 实验目的

掌握SQL程序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询等。掌握视图的使用。掌握SQL嵌套查询和集合查询等各种高级查询的设计方法。熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、修改、删除操作。熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。

二、 实验内容

  1. 查询SC表中的全部数据。
  2. 查询计算机系学生的姓名和年龄
  3. 查询成绩在70~80分的学生的学号、课程号和成绩
  4. 查询计算机系年龄在18~20岁的男生姓名和年龄
  5. 查询C001课程的最高分
  6. 查询计算机系学生的最大年龄和最小年龄
  7. 统计每个系的学生人数
  8. 统计每门课程的选课人数和最高成绩
  9. 计算每个学生的选课门数和考试总成绩,并按选课门数升序显示结果
  10. 列出总成绩超过200的学生的学号和总成绩
  11. 查询选了C002课程的学生姓名和所在系
  12. 查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果
  13. 查询与VB在同一学期开设的课程的课程名和开课学期
  14. 查询与李勇年龄相同的学生的姓名、所在系和年龄
  15. 查询哪些课程没有学生选修,列出课程号和课程名
  16. 查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号
  17. 查询计算机系哪些学生没有选课,列出学生姓名
  18. 查询计算机系年龄最大的三个学生的姓名和年龄,top 3
  19. 列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩,top3
  20. 查询选课门数最多的前2位学生,列出学号和选课门数, top 2
  21. 查询通信工程系成绩80分以上的学生的学号和姓名
  22. 查询计算机系学生考试成绩高于计算机系学生平均成绩的学生的姓名、考试的课程名和考试成绩
  23. 统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”;如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。
  24. 删除没人选的课程的基本信息
  25. 包含学生的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图
  26. 包含学生的学号、姓名、选修的课程名和考试成绩的视图
  27. 统计每个学生的选课门数,要求列出学生学号和选课门数的视图
  28. 统计每个学生的修课总学分,要求列出学生学号和总学分的视图(说明:考试成绩大于等于60才可获得此门课程的学分)。
  29. 利用视图查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
  30. 利用视图查询选课门数超过3门的学生的学号和选课门数。
  31. 利用视图查询计算机系选课门数超过3门的学生的姓名和选课门数。
  32. 利用视图查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
  33. 利用视图查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
  34. 再创建一个“计算机系”同学的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。
    增加一条记录,
    0841101 张新 计算机系 20 C001 高等数学 4
    修改这条记录为
    0841101 张新 物理系 20 C001 高等数学 4

三、 实验环境

MySQL、Navicat 15 for MySQL

四、 实验前准备

实验数据,使用第一次实验创建的表和数据

五、 实验步骤

  1. 查询SC表中的全部数据。
  2. MySQL数据查询实训报告小结 数据库查询实训报告_sql

  3. 查询计算机系学生的姓名和年龄,并使用别名
  4. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_02

  5. 查询成绩在70~80分的学生的学号、课程号和成绩
  6. MySQL数据查询实训报告小结 数据库查询实训报告_sql_03

  7. 查询计算机系年龄在18~20岁的男生姓名和年龄
  8. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_04

  9. 查询C001课程的最高分
  10. MySQL数据查询实训报告小结 数据库查询实训报告_数据_05

  11. 查询计算机系学生的最大年龄和最小年龄
  12. MySQL数据查询实训报告小结 数据库查询实训报告_数据_06

  13. 统计每个系的学生人数
  14. MySQL数据查询实训报告小结 数据库查询实训报告_sql_07

  15. 统计每门课程的选课人数和最高成绩
  16. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_08

  17. 计算每个学生的选课门数和考试总成绩,并按选课门数升序显示结果
  18. MySQL数据查询实训报告小结 数据库查询实训报告_数据_09

  19. 列出总成绩超过200的学生的学号和总成绩
  20. MySQL数据查询实训报告小结 数据库查询实训报告_数据_10

  21. 查询选了C002课程的学生姓名和所在系
  22. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_11

  23. 查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果
  24. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_12

  25. 查询与VB在同一学期开设的课程的课程名和开课学期
  26. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_13

  27. 查询与李勇年龄相同的学生的姓名、所在系和年龄
  28. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_14

  29. 查询哪些课程没有学生选修,列出课程号和课程名
  30. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_15

  31. 查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号
  32. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_16

  33. 查询计算机系哪些学生没有选课,列出学生姓名
  34. MySQL数据查询实训报告小结 数据库查询实训报告_sql_17

  35. 查询计算机系年龄最大的三个学生的姓名和年龄,top 3
  36. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_18

  37. 列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩,top3
  38. MySQL数据查询实训报告小结 数据库查询实训报告_数据_19

  39. 查询选课门数最多的前2位学生,列出学号和选课门数, top 2
  40. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_20

  41. 查询通信工程系成绩80分以上的学生的学号和姓名
  42. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_21

  43. 查询计算机系学生考试成绩高于计算机系学生平均成绩的学生的姓名、考试的课程名和考试成绩
  44. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_22

  45. 统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”;如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。
  46. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_23

  47. 删除没人选的课程的基本信息
  48. MySQL数据查询实训报告小结 数据库查询实训报告_数据_24

  49. 包含学生的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图
  50. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_25

  51. 包含学生的学号、姓名、选修的课程名和考试成绩的视图
  52. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_26

  53. 统计每个学生的选课门数,要求列出学生学号和选课门数的视图
  54. MySQL数据查询实训报告小结 数据库查询实训报告_sql_27

  55. 统计每个学生的修课总学分,要求列出学生学号和总学分的视图(说明:考试成绩大于等于60才可获得此门课程的学分)。
  56. MySQL数据查询实训报告小结 数据库查询实训报告_sql_28

  57. 利用视图查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
  58. MySQL数据查询实训报告小结 数据库查询实训报告_数据_29

  59. 利用视图查询选课门数超过3门的学生的学号和选课门数。
  60. MySQL数据查询实训报告小结 数据库查询实训报告_sql_30

  61. 利用视图查询计算机系选课门数超过3门的学生的姓名和选课门数
  62. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_31

  63. 利用视图查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
  64. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_32

  65. 利用视图查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
  66. MySQL数据查询实训报告小结 数据库查询实训报告_sql_33

  67. 再创建一个“计算机系”同学的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。
    增加一条记录,
    0841101 张新 计算机系 20 C001 高等数学 4
    修改这条记录为
    0841101 张新 物理系 20 C001 高等数学 4
  68. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_34


  69. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_35

六、实验结果

  1. 查询SC表中的全部数据。
  2. MySQL数据查询实训报告小结 数据库查询实训报告_sql_36

  3. 查询计算机系学生的姓名和年龄
  4. MySQL数据查询实训报告小结 数据库查询实训报告_sql_37

  5. 查询成绩在70~80分的学生的学号、课程号和成绩
  6. MySQL数据查询实训报告小结 数据库查询实训报告_sql_38

  7. 查询计算机系年龄在18~20岁的男生姓名和年龄
  8. MySQL数据查询实训报告小结 数据库查询实训报告_sql_39

  9. 查询C001课程的最高分
  10. MySQL数据查询实训报告小结 数据库查询实训报告_sql_40

  11. 查询计算机系学生的最大年龄和最小年龄
  12. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_41

  13. 统计每个系的学生人数
  14. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_42

  15. 统计每门课程的选课人数和最高成绩
  16. MySQL数据查询实训报告小结 数据库查询实训报告_sql_43

  17. 计算每个学生的选课门数和考试总成绩,并按选课门数升序显示结果
  18. MySQL数据查询实训报告小结 数据库查询实训报告_数据_44

  19. 列出总成绩超过200的学生的学号和总成绩
  20. MySQL数据查询实训报告小结 数据库查询实训报告_数据_45

  21. 查询选了C002课程的学生姓名和所在系
  22. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_46

  23. 查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果
  24. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_47

  25. 查询与VB在同一学期开设的课程的课程名和开课学期
  26. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_48

  27. 查询与李勇年龄相同的学生的姓名、所在系和年龄
  28. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_49

  29. 查询哪些课程没有学生选修,列出课程号和课程名
  30. MySQL数据查询实训报告小结 数据库查询实训报告_数据_50

  31. 查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号
  32. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_51


  33. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_52

  34. 查询计算机系哪些学生没有选课,列出学生姓名
  35. MySQL数据查询实训报告小结 数据库查询实训报告_数据_53

  36. 查询计算机系年龄最大的三个学生的姓名和年龄,top 3
  37. MySQL数据查询实训报告小结 数据库查询实训报告_数据_54

  38. 列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩,top3
  39. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_55

  40. 查询选课门数最多的前2位学生,列出学号和选课门数, top 2
  41. MySQL数据查询实训报告小结 数据库查询实训报告_数据_56

  42. 查询通信工程系成绩80分以上的学生的学号和姓名
  43. MySQL数据查询实训报告小结 数据库查询实训报告_sql_57

  44. 查询计算机系学生考试成绩高于计算机系学生平均成绩的学生的姓名、考试的课程名和考试成绩
  45. MySQL数据查询实训报告小结 数据库查询实训报告_sql_58

  46. 统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”;如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。
  47. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_59

  48. 删除没人选的课程的基本信息
  49. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_60

  50. 包含学生的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图
  51. MySQL数据查询实训报告小结 数据库查询实训报告_数据库_61

  52. 包含学生的学号、姓名、选修的课程名和考试成绩的视图
  53. MySQL数据查询实训报告小结 数据库查询实训报告_sql_62

  54. 统计每个学生的选课门数,要求列出学生学号和选课门数的视图
  55. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_63

  56. 统计每个学生的修课总学分,要求列出学生学号和总学分的视图(说明:考试成绩大于等于60才可获得此门课程的学分)。
  57. MySQL数据查询实训报告小结 数据库查询实训报告_数据_64

  58. 利用视图查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
  59. MySQL数据查询实训报告小结 数据库查询实训报告_MySQL数据查询实训报告小结_65

  60. 利用视图查询选课门数超过3门的学生的学号和选课门数。
  61. MySQL数据查询实训报告小结 数据库查询实训报告_sql_66

  62. 利用视图查询计算机系选课门数超过3门的学生的姓名和选课门数。
  63. MySQL数据查询实训报告小结 数据库查询实训报告_sql_67

  64. 利用视图查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
  65. MySQL数据查询实训报告小结 数据库查询实训报告_数据_68

  66. 利用视图查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
  67. MySQL数据查询实训报告小结 数据库查询实训报告_sql_69

  68. 再创建一个“计算机系”同学的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。
    增加一条记录,
    0841101 张新 计算机系 20 C001 高等数学 4
    修改这条记录为
    0841101 张新 物理系 20 C001 高等数学 4
  69. MySQL数据查询实训报告小结 数据库查询实训报告_SQL_70

注意:不能在一张由多张关联表连接而成的视图上做同时修改两张表的操作。