当前位置:   article > 正文

MySQL数据库(嵌套子查询)答案-武洪萍主编_数据库查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。

数据库查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。

MySQL数据库(嵌套子查询)答案-武洪萍主编

代码如下:

  1. 一,
  2. -- 1,创建数据库 t10
  3. 1,删除数据库
  4. DROP DATABASE IF EXISTS t10;
  5. 2,创建数据库
  6. CREATE DATABASE t10;
  7. 3,修改数据库编码方式和字符集排列顺序
  8. ALTER DATABASE t10 CHARACTER SET utf8 COLLATE utf8_bin;
  9. 4,使用数据库
  10. USE t10;
  11. -- 2, 表的结构数据从脚本a1导入
  12. -- 3,查询a1中所有的表记录,并用别名显示
  13. -- 查看各表数据
  14. SELECT*FROM course; -- [课程表]主键cno(课程编号)课程名称cname
  15. SELECT*FROM sc; -- [成绩表]双主键(sno,cno)外键sno参考学生表student,外键cno参考课程course,degree 分数,
  16. SELECT*FROM student; -- [学生表]主键sno(学号),姓名snmae,性别ssex,电话sphone,地址saddress,生日sbirthday,所属院系sdept,照片sphoto,专业speciality,
  17. SELECT*FROM suser; -- [用户表]用户名username,密码password,用户权限 userlevel
  18. SELECT*FROM teacher; -- [教师表]主键tno(教师编号)教师性别ssex,教师生日sbirthday,所属院系sdept,
  19. SELECT*FROM teaching; -- [授课表]课程编号cno(参考课程表),教师编号(教师表tno),开课学期cterm,
  20. -- 查看各表结构
  21. DESCRIBE course;
  22. DESCRIBE sc;
  23. DESCRIBE student;
  24. DESCRIBE suser;
  25. DESCRIBE teacher;
  26. DESCRIBE teaching;
  27. -- 四,嵌套子查询
  28. -- 1,查询‘李勇’同学所选课程的成绩
  29. SELECT degree 成绩
  30. FROM sc
  31. WHERE EXISTS(SELECT cno
  32. FROM student
  33. WHERE student.sno=sc.sno AND sname='李勇');
  34. -- 2,查询‘李新’教师所授课程的课程名称
  35. SELECT cname 课程名称
  36. FROM course a
  37. WHERE EXISTS(
  38. SELECT b.cno
  39. FROM teaching b,teacher c
  40. WHERE b.tno=c.tno AND b.cno=a.cno
  41. AND tname='李新'
  42. );
  43. -- 3,查询女教师所授课程的课程号及课程名称
  44. SELECT a.cno 课程号,cname 课程名称
  45. FROM course a
  46. WHERE EXISTS(
  47. SELECT cno
  48. FROM teacher b,teaching c
  49. WHERE b.tno=c.tno AND c. cno=a.cno
  50. AND tsex='女'
  51. );
  52. -- 4,查询‘王’的学生所学的课程名称
  53. SELECT cname 课程名称
  54. FROM course a
  55. WHERE EXISTS(
  56. SELECT c.cno
  57. FROM student b,sc c
  58. WHERE a.cno=c.cno AND b.sno=c.sno
  59. AND sname LIKE '王%'
  60. );
  61. -- 5,查询‘C02’课程不及格的学生信息
  62. SELECT *
  63. FROM student
  64. WHERE sno IN(
  65. SELECT sno
  66. FROM sc
  67. WHERE cno='c01'
  68. AND degree<60);
  69. -- 6,查询选修‘数据库’课程且成绩在80~90分的学生学号及成绩
  70. SELECT sno 学号,degree 成绩
  71. FROM sc a
  72. WHERE EXISTS(
  73. SELECT cno
  74. FROM course b
  75. WHERE a.cno=b.cno
  76. AND cname='数据库' AND degree BETWEEN 80 AND 90
  77. );
  78. -- 7,查询选修‘C04’课程的学生的平均年龄
  79. SELECT AVG(YEAR(CURDATE())-YEAR(sbirthday)) 平均年龄
  80. FROM student a
  81. WHERE EXISTS(
  82. SELECT a.sno
  83. FROM sc b
  84. WHERE a.sno=b.sno AND cno='c04'
  85. );
  86. -- 8,查询选修课程名为‘数学’的学生学号与姓名
  87. SELECT sno 学号,sname 姓名
  88. FROM student a
  89. WHERE EXISTS(
  90. SELECT b.cno
  91. FROM sc b,course c
  92. WHERE b.cno=c.cno AND a.sno=b.sno
  93. AND cname LIKE '%数学%'
  94. );
  95. -- 9,查询‘钱军’教师任课的课程号、选修其课程的学生的学号与成绩
  96. SELECT cno 课程号,sno 学号,degree 成绩
  97. FROM sc
  98. WHERE cno=(
  99. SELECT cno
  100. FROM teaching
  101. WHERE tno=(
  102. SELECT tno
  103. FROM teacher
  104. WHERE tname='钱军'
  105. )
  106. );
  107. -- 10,查询在第3学期所开课程的课程名称及学生的成绩
  108. SELECT cno 课程名称,degree 成绩
  109. FROM sc
  110. WHERE cno=ANY(
  111. SELECT cno
  112. FROM teaching
  113. WHERE cterm='2'
  114. );
  115. -- 11,查询与‘李勇’同一个系的学生姓名
  116. SELECT sname 姓名
  117. FROM student
  118. WHERE sdept=(
  119. SELECT sdept
  120. FROM student
  121. WHERE sname='李勇'
  122. )AND sname<>'李勇';
  123. -- 12,查询学号比刘晨学生的大,而出生日期比她的小的学生姓名
  124. SELECT sname 姓名
  125. FROM student
  126. WHERE (sno>(
  127. SELECT sno
  128. FROM student
  129. WHERE sname='刘晨'
  130. ))AND(sbirthday>(
  131. SELECT sbirthday
  132. FROM student
  133. WHERE sname='刘晨'
  134. )
  135. );
  136. -- 13,查询出生日期大于所有女生出生日期的男生的姓名及系别
  137. SELECT sname 姓名,sdept 系别
  138. FROM student
  139. WHERE (sbirthday>ALL(
  140. SELECT sbirthday
  141. FROM student
  142. WHERE ssex='女'
  143. ))AND ssex='男';
  144. -- 14,查询成绩比该课程平均成绩高的学生的学号和成绩
  145. SELECT sno 学号,degree 成绩
  146. FROM sc
  147. WHERE degree>=
  148. (SELECT AVG(degree)
  149. FROM sc
  150. WHERE sc.cno=sc.cno
  151. );
  152. -- 15,查询不讲授'C01'课的教师姓名
  153. SELECT tname 教师姓名
  154. FROM teacher
  155. WHERE EXISTS(
  156. SELECT tno
  157. FROM teaching
  158. WHERE cno<>'c01'
  159. );
  160. -- 16,查询没有选修‘C02’课程的学生学号及姓名
  161. SELECT sno 学号,sname 姓名
  162. FROM student
  163. WHERE sno IN(
  164. SELECT sno
  165. FROM sc
  166. WHERE cno<>'c02'
  167. );
  168. -- 17,查询选修‘数据库’课程的学生学号,姓名和系别
  169. SELECT sno 学号,sname 姓名,sdept 系别
  170. FROM student
  171. WHERE sno IN(
  172. SELECT sno
  173. FROM sc
  174. WHERE cno=(
  175. SELECT cno
  176. FROM course
  177. WHERE cname='数据库'
  178. ));

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/498821
推荐阅读
相关标签
  

闽ICP备14008679号