资源描述:
《SQL存储过程触发器实验复习.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验复习SQL查询操作SQL语句思考步骤1、哪些相关数据、哪里来?Select/from需要统计数据?统计函数2、需要过滤条件吗?分组前或多表连接where分组后having3、需要分组吗?Groupby4、需要排序吗?Orderby按顺序思考Select/from/where/group/having/order举例一:题2/4参考1.1学生的选修课程情况(课程号、人数)选修课程号(SC.Cno)人数(SC.Sno统计)selectcno,count(sno)fromscgroupbycno1.2检索至少有两个学生选修的课程号sele
2、ctcno,count(sno)fromscgroupbycnohavingcount(sno)>11.3检索至少有两个学生选修的课程名称p80统计值有多种情况时,必须分组;分组列为非统计列“至少有两个学生”这条件是在分组前还是分组后?1.3、检索至少有两个学生选修的课程名称选修课程名称(C.Cn)人数(SC.Sno统计)1.3.1学生的选修课程详细情况(课程名称、学号)selectcn,snofromc,scwherec.cno=sc.cno1.3.2学生的选修课程情况(课程名称、人数)selectcn,count(sno)fromc
3、,scwherec.cno=sc.cnogroupbycnhavingcount(sno)>1先组合两个来源表统计人数过滤条件举例二:题3参考2、检索没有女同学选修的课程号女同学(S.Sex)选修的课程号(SC.Cno)2.1学生选课详细信息(课程号、学号、性别)selects.sex,s.sno,sc.cnofroms,scwheres.sno=sc.sno2.2有女同学选课的课程号selectdistinctsc.cnofroms,scwheres.sno=sc.snoands.sex=‘女’先组合两个来源表2.3没有女学生选课的课
4、程号selectdistinctcnofromscwherecnonotin(selectdistinctsc.cnofroms,scwheres.sno=sc.snoands.sex=‘女’)selectcnofromcwherecnonotin(selectdistinctsc.cnofroms,scwheres.sno=sc.snoands.sex=‘女’)注意两个查询的区别举例三:题5/6/7参考3、检索选修了全部课程的学生姓名与学号姓名(S.sn)/选修课程的学生(SC.sno)/全部课程数量3.1学生的选修课程详细情况(课程
5、号、学号、姓名)selectcno,s.sno,snfroms,scwheres.sno=sc.sno3.2学生的选修课程情况(学号、姓名、课程数)selectcount(cno),s.sno,snfroms,scwheres.sno=sc.snogroupbys.sno,sn3.3选修课总数selectcount(cno)fromc3.4学生选课数量=选修课总数selectcount(cno),s.sno,snfroms,scwheres.sno=sc.snogroupbys.sno,snhavingcount(cno)=(selec
6、tcount(cno)fromc)根据相关数据判断是否需要SQL嵌套(分步法)举例四:题8/9参考4、统计学分为2的每门课程学生平均年龄学分(C.CT=2)/每门课/年龄(S.Age)4.1学分为2的课程所选学生年龄(组合表数据)Selectage,sc.cno,sc.snofroms,sc,cwheres.sno=sc.snoandc.cno=sc.cnoandct=2;4.2求平均年龄Selectavg(age),sc.cnofroms,sc,cwheres.sno=sc.snoandc.cno=sc.cnoandct=2group
7、bysc.cno根据相关数据判断可能用到的SQL多表组合连接+条件+分组统计举例五:5、求年龄大于男同学平均年龄的女学生姓名和年龄男同学平均年龄/姓名和年龄(女学生)5.1求男同学平均年龄selectavg(age)fromswheresex=‘男’5.2求年龄大于(步骤1年龄)的女学生姓名和年龄selectsn,agefromswhereage>(selectavg(age)fromswheresex=‘男’)根据相关数据判断1、SQL嵌套?2、可能用到的SQL?举例六:6、求年龄小于所有男同学年龄的女学生姓名和年龄所有男同学年龄/女
8、学生姓名和年龄6.1所有男同学年龄Selectdistinctagefromswheresex=‘男’6.2女学生姓名和年龄Selectsn,agefromswheresex=‘女’Andage>all(S