养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

sql server 实验9 连接查询

时间:2024-11-01 08:48:41

利用sqlserver1.掌握涉及一个以上数据表的查询方法。2.掌握等值连接3.掌握自然连接4.掌握非等值连接5.掌握自身连接、外连接和复合条件连接

工具/原料

sqlserver

方法/步骤

1、 查询不同课程成绩相同的学生的学号、课程号、学生成绩(自身连接)selecta.*fromsca,scbwherea.score=b.scoreanda.cno<>b.cno

sql server 实验9 连接查询

2、 查询课程编号为c001且课程成绩在80分以上的学生的学号和姓名selectstudent.sno,snamefromstudent,scwherestudent.sno=sc.snoandsc.cno='c001'andscore>=80

sql server 实验9 连接查询

3、 查询不及格的课程,并按课程成绩降序排列selectsc.sno,cname,scorefromsc,coursewheresc.cno=course.cnoandsc.score<60orderbyscoredesc

sql server 实验9 连接查询

4、 查询课程成绩在70分以上的姓名、课程名称和分数;selectsname,cname,scorefromsc,student,coursewheresc.sno=student.snoandsc.cno=course.cnoandsc.score>70

sql server 实验9 连接查询

5、 查询课程名称为“Oracle”,且分数低于60的学生姓名和分数selectsname,scorefromstudent,sc,coursewheresc.sno=student.snoandsc.cno=course.cnoandcourse.cname='Oracle'andscourse.score<60

sql server 实验9 连接查询

6、 查询平均成绩大于85的所有学生的学号、姓名和平均成绩selectstudent.sno,sname,avg(score)as平均成绩fromstudentjoinsconstudent.sno=sc.snogroupbystudent.sno,snamehavingavg(score)>85

sql server 实验9 连接查询

7、笪瞵岔语 查询出只选修了一门课程的全部学生的学号和姓名selectstudent.sno,snamef鸡堕樱陨romstudentleftjoinsconstudent.sno=sc.snogroupbystudent.sno,snamehavingcount(cno)=1注意:havingcount(cno)不能写成havingcount(*),因为没有成绩的学生信息也有一行数据。也可以:selectstudent.sno,snamefromstudent,scwherestudent.sno=sc.snogroupbystudent.sno,snamehavingcount(cno)=1

sql server 实验9 连接查询

8、笪瞵岔语 统计列印各科成绩,各分数段人数:课程编号,课程名称,[100-85],[85-70], [70幻腾寂埒-60],[<60]selectcourse.cno,cname,sum(casewhenscore<60then1else0end)as'[<60]',sum(casewhenscore>=60andscore<70then1else0end)as'[70-60]',sum(casewhenscore>=70andscore<85then1else0end)as'[85-70]',sum(casewhenscore>=85andscore<100then1else0end)as'[100-85]'fromsc,coursewheresc.cno=course.cnogroupbycourse.cno,cname

sql server 实验9 连接查询

9、笪瞵岔语 查询不同老师所教不同课程平均分从高到低显示,平均分最多保留两位小数。selectsc.cno荑樊综鲶,teacher.tname,cname,round(avg(score),2)as平均成绩fromcourse,sc,teacherwherecourse.cno=sc.cnoandcourse.tno=teacher.tnogroupbyteacher.tname,sc.cno,cnameorderbyavg(score)desc

sql server 实验9 连接查询

10、若不想把cname放在groupby里,也可以放在一些聚集函数,但不影响它的值,如max(cname) 查询所有课程成绩小于60分的同学的学号、姓名selectstudent.sno,snamefromstudent,scwherestudent.sno=sc.snogroupbystudent.sno,snamehavingsum(casewhenscore<60then1else0end)=count(*)

sql server 实验9 连接查询

© 一点知识