mysql sql查询

来源:互联网 发布:手机视频格式转换软件 编辑:程序博客网 时间:2024/04/27 08:21
  1. if Object_id('sc'is not null  
  2.   Drop table sc  
  3. if Object_id('student'is not null  
  4.   Drop table student  
  5. if Object_id('course'is not null  
  6.   Drop table course  
  7.   
  8. --定义SC表  
  9. create table sc(  
  10.   sno char(20),  
  11.   cno char(20),  
  12.   grade smallint,  
  13.   primary key(sno,cno)  
  14. );  
  15.   
  16. --定义student表  
  17. create table student(  
  18.    sno char(10) primary key,  
  19.    sname char(20) not null,  
  20.    sage smallint,  
  21.    ssex char(2),  
  22.    sdept varchar(20)  
  23. );  
  24.   
  25.   
  26. --定义course表  
  27. create table course(  
  28.     cno char(10) primary key,  
  29.     cname varchar(20) not null,  
  30.     credit smallint  
  31.   
  32. );  
  33.   
  34. --插入student表数据  
  35.   
  36. insert into student values('001','张三','20','f','CS');  
  37. insert into student values('002','李晨','21','f','E');  
  38. insert into student values('003','李丽','21','m','E');  
  39. insert into student values('004','高飞','23','f','MA');  
  40. insert into student values('005','苏瑞','20','f','CS');  
  41. insert into student values('006','赵达','22','f','MA');  
  42. insert into student values('007','韩愈','22','m','C');  
  43. insert into student values('008','郑乐','24','m','CS');  
  44. insert into student values('009','许三朵','23','f','MA');  
  45. insert into student values('010','王晓','20','m','C');  
  46. insert into student values('011','丁二','21','f','E');  
  47. insert into student values('012','钟瑜','23','f','CS');  
  48. insert into student values('013','刘莉莉','21','m','MA');  
  49. insert into student values('014','柳叶青','23','f','C');  
  50. insert into student values('015','张其安','22','m','CS');   
  51.   
  52.   
  53. --插入course表信息  
  54. insert into course values('c01','数据库','2');  
  55. insert into course values('c02','数学','4');  
  56. insert into course values('c03','物理','3');  
  57. insert into course values('c04','C语言','3');  
  58. insert into course values('c05','历史','2');  
  59. insert into course values('c06','操作系统','3');  
  60. insert into course values('c07','iOS开发','4');  
  61. insert into course values('c08','软件工程','2');  
  62. insert into course values('c09','汇编语言','2');  
  63. insert into course values('c10','英语','3');  
  64.   
  65.   
  66. --插入SC选课表  
  67.   
  68. --001学生选课  
  69. insert into sc values('001','c02','89');  
  70. insert into sc values('001','c04','70');  
  71. insert into sc values('001','c08','74');  
  72. insert into sc values('001','c10','87');  
  73. insert into sc values('001','c03','60');  
  74.   
  75. --002学生选课  
  76. insert into sc values('002','c01','77');  
  77. insert into sc values('002','c03','59');  
  78. insert into sc values('002','c02','90');  
  79. insert into sc values('002','c04','100');  
  80. insert into sc values('002','c05','45');  
  81. insert into sc values('002','c06','65');  
  82. insert into sc values('002','c07','80');  
  83. insert into sc values('002','c08','98');  
  84. insert into sc values('002','c09','66');  
  85. insert into sc values('002','c10','88');  
  86.   
  87.   
  88. --003学生选课  
  89. --未选课  
  90.   
  91. --004学生选课  
  92. insert into sc values('004','c09','90');  
  93. insert into sc values('004','c06','43');  
  94. insert into sc values('004','c10','85');  
  95. insert into sc values('004','c05','86');  
  96. insert into sc values('004','c07','60');  
  97. insert into sc values('004','c08','78');  
  98.   
  99. --005学生选课  
  100.   
  101. insert into sc values('005','c10','88');  
  102. insert into sc values('005','c02','69');  
  103. insert into sc values('005','c04','84');  
  104. insert into sc values('005','c05','88');  
  105. insert into sc values('005','c03','65');  
  106. insert into sc values('005','c06','70');  
  107. insert into sc values('005','c07','81');  
  108.   
  109.   
  110. --006学生选课  
  111.   
  112. insert into sc values('006','c10','62');  
  113. insert into sc values('006','c02','87');  
  114. insert into sc values('006','c04','60');  
  115. insert into sc values('006','c05','74');  
  116. insert into sc values('006','c03','63');  
  117. insert into sc values('006','c06','70');  
  118. insert into sc values('006','c07','91');  
  119. insert into sc values('006','c01','70');  
  120. insert into sc values('006','c09','81');  
  121.   
  122.   
  123. --007学生选课  
  124.   
  125. insert into sc values('007','c01','80');  
  126. insert into sc values('007','c02','67');  
  127. insert into sc values('007','c04','62');  
  128. insert into sc values('007','c05','74');  
  129. insert into sc values('007','c03','45');  
  130. insert into sc values('007','c08','68');  
  131. insert into sc values('007','c09','99');  
  132. insert into sc values('007','c10','100');  
  133.   
  134.   
  135. --008学生选课  
  136.   
  137. insert into sc values('008','c08','61');  
  138. insert into sc values('008','c02','82');  
  139. insert into sc values('008','c04','88');  
  140.   
  141.   
  142. --009学生选课  
  143.   
  144. insert into sc values('009','c02','67');  
  145. insert into sc values('009','c06','34');  
  146. insert into sc values('009','c08','78');  
  147. insert into sc values('009','c10','74');  
  148. insert into sc values('009','c03','80');  
  149. insert into sc values('009','c04','70');  
  150. insert into sc values('009','c07','94');  
  151.   
  152.   
  153. --010学生选课  
  154.   
  155. insert into sc values('010','c10','80');  
  156. insert into sc values('010','c02','84');  
  157. insert into sc values('010','c04','65');  
  158. insert into sc values('010','c05','72');  
  159. insert into sc values('010','c03','87');  
  160. insert into sc values('010','c08','70');  
  161. insert into sc values('010','c07','91');  
  162. insert into sc values('010','c01','70');  
  163. insert into sc values('010','c09','81');  
  164.   
  165.   
  166. --011学生选课  
  167.   
  168. insert into sc values('011','c04','64');  
  169. insert into sc values('011','c07','75');  
  170. insert into sc values('011','c09','60');  
  171. insert into sc values('011','c02','84');  
  172.   
  173.   
  174. --012学生选课  
  175.   
  176. insert into sc values('012','c01','97');  
  177. insert into sc values('012','c02','83');  
  178. insert into sc values('012','c03','60');  
  179. insert into sc values('012','c04','70');  
  180. insert into sc values('012','c05','88');  
  181. insert into sc values('012','c06','64');  
  182. insert into sc values('012','c07','91');  
  183. insert into sc values('012','c08','70');  
  184. insert into sc values('012','c09','84');  
  185. insert into sc values('012','c10','81');  
  186.   
  187.   
  188. --013学生选课  
  189.   
  190. insert into sc values('013','c01','95');  
  191. insert into sc values('013','c02','86');  
  192. insert into sc values('013','c04','70');  
  193. insert into sc values('013','c06','57');  
  194. insert into sc values('013','c08','63');  
  195. insert into sc values('013','c10','54');  
  196.   
  197. --014学生选课  
  198.   
  199. insert into sc values('014','c01','78');  
  200. insert into sc values('014','c02','87');  
  201. insert into sc values('014','c03','75');  
  202. insert into sc values('014','c05','99');  
  203. insert into sc values('014','c06','34');  
  204. insert into sc values('014','c07','48');  
  205. insert into sc values('014','c09','84');  
  206. insert into sc values('014','c10','89');  
  207.   
  208.   
  209. --015学生选课  
  210.   
  211. insert into sc values('015','c02','87');  
  212. insert into sc values('015','c07','96');  

--以下是老师布置的练习题,我觉得做完以后大有收获,拿出来大家交流一下

1、在Course表中添加“教师”列(20个长度的变长字符串)
2、为每门课程添加教师信息。
3、将教师列修改为非空列。
4、查询选修了刘老师的课程的学生。
5、检索选修了课程号为C01C02课程,且成绩高于或等于70分的学生的姓名,课程名和成绩。
6、检索所有学生的姓名、所选课程的课程名和成绩以及课程号,并且按成绩的降序和课程号的升序进行排列。
7. 列出没有选课的学生姓名
8. 列出平均分最高的学生所在系的所有学生的姓名
9.查询CSC01课程的成绩比C01课程的平均分高的学生学号
10.查询既选修了C01又选修了C02的学生
11.统计及格的课程数在四门以上的学生所选课程的平均成绩。最后按降序列出平均成绩名次名单来。
12.检索所有CS系学生都选修了的课程(列出课程号)
13.查询年龄高于其所在系的平均年龄的学生姓名
14.查询每位同学的选课中成绩最高的课程对应的学号,姓名,课程名,成绩
15.MA系学生选修必修课C05
16.CS,C01课程学生的成绩加10
17.将每位同学的最低分加10分(选)
18.数据库的选课记录全部删除
[sql] view plain copy
  1. --1、检索所有学生中年龄最大的学生的姓名及年龄。  
  2. select sno,sname from student  
  3. where sage=(select max(sage) from student)  
  4.   
  5. select sno,sname from student  
  6. where sage>=all(select sage from student)  
  7. --2、求每一个学生的最高分和最低分。  
  8. select sno,max(grade) as '最高分',min(grade) as '最低分'from sc  
  9. group by  sno;  
  10.   
  11. select sno,grade from sc  
  12. where grade>=all(select grade from student) or grade<=all(select grade from student)  
  13.   
  14. --3、查询CS系所有男同学考C05课程的成绩,列出这些学生的学号,姓名,成绩,并按成绩降序排列。  
  15. select student.sno,sname,grade from sc,student  
  16. where sdept='CS' and cno='c05'   
  17. and student.sno =sc.sno  
  18. order by grade desc;  
  19.   
  20. select sno,grade from sc  
  21. where sno in(select sno from student where sdept='cs')and cno='c05'  
  22. order by grade desc;  
  23. --4、检索选修了“C语言”课程的学生的姓名(可用子查询—IN或Exists)  
  24. --子查询in  
  25. select sname from student  
  26. where sno in(  
  27. select sno from sc   
  28. where cno in (  
  29. select cno from course where cname='C语言'))  
  30.   
  31. --子查询exists  
  32. select sname from student  
  33. where exists(  
  34. select * from sc   
  35. where sno=student.sno and exists(  
  36. select * from course where cno=sc.cno and cname='C语言'  
  37. )  
  38. )  
  39.   
  40. select sname from student,sc  
  41. where sc.sno=student.sno and cno=(select cno from course where cname='C语言')  
  42.   
  43.   
  44. --5、检索选修了课程号为C01或C02课程,且成绩高于或等于70分的学生的姓名,课程名和成绩。  
  45. select sname,cname,grade from student,sc,course  
  46. where student.sno=sc.sno   
  47. and sc.cno=course.cno   
  48. and sc.cno in('c01','c02'and grade>=70;  
  49.   
  50. --6、检索所有学生的姓名、所选课程的课程名和成绩以及课程号,并且按成绩的降序和课程号的升序进行排列(使用外连接将没有选课的同学列出来)。  
  51. select sname,sc.cno,grade from course,student, sc  
  52. where student.sno=sc.sno and course.cno=sc.cno  
  53. order by grade desc;  
  54.   
  55. --7. 列出没有选课的学生姓名  
  56. select sno,sname from student  
  57. where sno not in(select sno from sc)  
  58.   
  59. select sno,sname from student  
  60. where not exists(select sno from sc where sno=student.sno)  
  61. --8. 列出平均分最高的学生所在系的所有学生的姓名  
  62. select sname,sdept from student  
  63. where sdept in(  
  64. select sdept from student    
  65. where sno in(  
  66. select sno from sc   
  67. group by sno  
  68. having avg(grade)>=all(select avg(grade)from sc group by sno))  
  69. )  
  70.   
  71.   
  72. --9.查询CS系C01课程的成绩比C01课程的平均分高的学生学号  
  73. select student.sno from student,sc  
  74. where sc.sno=student.sno and sdept='CS'and sc.cno='c01'and grade>  
  75. (select avg(grade) from sc  
  76. where cno='c01');  
  77.   
  78.   
  79. --10.查询既选修了C01又选修了C02的学生  
  80. --in  
  81. select sno from student  
  82. where sno in(select sno from sc where cno='c01'and sno in(select sno from sc where cno='c02')  
  83.   
  84. select sno from student  
  85. where exists(select sno from sc where cno='c01' and sno=student.sno) and sno in(select sno from sc where cno='c02'and sno=student.sno)  
  86.   
  87. select sno from student  
  88. where sno in(select sno from sc   
  89. where cno='c01'   
  90. intersect  
  91. select sno from sc  
  92. where cno='c02')  
  93.   
  94. --11.统计及格的课程数在四门以上的学生所选课程的平均成绩。最后按降序列出平均成绩名次名单来。  
  95. select sno,avg(grade) from sc  
  96. where grade>=60  
  97. group by sno  
  98. having count(*)>4  
  99. order by avg(grade) desc;  
  100.   
  101. --12.检索所有CS系学生都选修了的课程(列出课程号)  
  102.   
  103. select cno from sc,student  
  104. where sc.sno=student.sno and student.sdept='CS'  
  105. group by cno  
  106. having count(*)=(select count(*) from student where sdept='CS')  
  107.   
  108.   
  109. select cno from course  
  110. where not exists(  
  111. select * from student  
  112. where sdept='CS' and not exists(  
  113. select * from sc  
  114. where student.sno=sc.sno and course.cno=sc.cno  
  115. )  
  116. )  
  117.   
  118. --没有选课的学生  
  119. select sno from student  
  120. where not exists(  
  121.  select * from sc where sc.sno=student.sno   
  122. )  
  123.   
  124. --13.查询年龄高于其所在系的平均年龄的学生姓名  
  125. select sname from student x  
  126. where sage>(select avg(sage) from student y where x.sdept=y.sdept)  
  127.   
  128.   
  129. --14.查询每位同学的选课中成绩最高的课程对应的学号,姓名,课程名,成绩  
  130. select sc.sno,sname,cname,grade from sc,student,course  
  131. where sc.sno=student.sno and sc.cno=course.cno   
  132. and grade=(select max(grade) from sc where sc.sno=student.sno)  
  133.   
  134.   
  135. select sc.sno,sname,cname,grade from sc,student,course  
  136. where sc.sno=student.sno and sc.cno=course.cno  
  137. and grade>=all(select grade from sc where student.sno=sc.sno)  
  138.   
  139. --创建视图然后查询  
  140. create view s1(sno,sname,cname,grade)  
  141. as  
  142. select sc.sno,sname,cname,grade from sc,student,course  
  143. where sc.sno=student.sno and course.cno=sc.cno  
  144.   
  145. --select sno,sname,max(grade) from s1  
  146. --group by (sno,sname)  
  147.   
  148. --15.为MA系学生选修必修课C05  
  149. insert into sc(sno,cno)   
  150. select sno,'c05' from student   
  151. where sdept = 'MA' and   
  152. sno not in (select sno from sc where cno='c05')  
  153.   
  154. insert into sc(sno,cno)  
  155. select sno,'c05' from student   
  156. where sdept='MA' and not exists(select sno from sc where cno='c05' and sno=student.sno )  
  157. --16.将CS系,C01课程学生的成绩加10分  
  158. update sc  
  159. set grade=grade-10  
  160. where cno='c01' and sno in(select sno from student where sdept='CS')   
  161.   
  162. select * from sc,student  
  163. where cno='c01' and student.sno=sc.sno and student.sdept='CS'  
  164. --17.将每位同学的最低分加10分(选)  
  165. update sc   
  166. set grade=grade+10  
  167. where grade=(select min(grade) from sc y where sc.sno=y.sno)  
  168.   
  169. update sc   
  170. set grade=grade-10  
  171. where grade=(select min(grade) from sc y   
  172. group by sno  
  173. having sc.sno=y.sno  
  174. )  
  175. --18.将”数据库”的选课记录全部删除  
  176. delete from sc  
  177. where '数据库'=(select cname from course where sc.cno=course.cno);  
  178.   
  179. delete from sc  
  180. where cno=(select cno from course where course.cname='数据库');  
0 0