1、 民办四川天一学院 实训报告 学 号: 姓 名: 院 系: 专 业: 教 师: 月 实训一 SQL数据查询实验 实训时间 实训地点 同组人员 成绩 4月26日 无 一、 实训目 1. 纯熟掌握基本查询命令select… from… where语法构造; 2. 纯熟掌握多表查询命令设计办法; 3. 纯熟掌握分组聚合查询应用方式
2、办法; 4. 通过观测查询成果, 体会查询语句实际应用。 二、 实训原理和内容 (内容宋体小四号,行距固定值24磅,首行缩进2字符) 实训数据库为学生成绩管理数据库ScoreDB,数据库关系模式如下: Student(studentNo,studentName,sex,birthday,native,nation,classNo) Class(classNo,className,institute,grade,classNum) Course(courseNo,courseName,creditHour,courseHour,priorCourse) Score(student
3、No,courseNo,score) 实训内容: 任务1:在学生Student表中查询年龄不不大于或等于19岁同窗学号、姓名和出生日期。 任务2:在选课Score表中查询成绩在80~90分之间同窗学号、课程号和相应成绩。 任务3:在班级Class表中查询班级名称中具有会计班级信息。 任务4:在学生 Student表中查询籍贯不是“南昌”或“上海”同窗姓名、籍贯和所属班级编号,并按籍贯降序排序输出。 任务5:查找会计学院全体同窗学号、姓名、籍贯、班级编号和所在班级名称。 任务6:查找选修了课程名称为“计算机原理”同窗学号、姓名。 任务7:查询每个同窗选课门数、平均分和最高分。
4、任务9:查询平均分在80分以上每个同窗选课门数、平均分和最高分。 实训规定:设计T_SQL命令,并在SQL Server Management Studio查询分析器中执行命令,观测并分析成果。 三、 实训过程 任务1:在学生Student表中查询年龄不不大于或等于19岁同窗学号、姓名和出生日期。 任务分析:由任务可知,所需查询属性都位于一张表student中,因而可以直接进行简朴查询,查询条件是... Year(getdate())-year(birthday) 查询语句设计如下: select studentNo ,studentName from student wher
5、e year(getdate())-year(birthday)>19 and sex='女' 查询成果: 任务2:在选课Score表中查询成绩在80~90分之间同窗学号、课程号和相应成绩。 任务分析:由任务可知,所查询属性都位于一张表Score中,因而可以直接进行简朴查询,查询条件是: Where (score>=80 and score<=90) 查询语句设计如下: use ScoreDB select * from Score where score>=80 and score<=90 查询成果: … 任务3:在班级Clas
6、s表中查询班级名称中具有会计班级信息。 任务分析:由任务可知,所查询属性都位于一张表Score中,因而可以直接进行简朴查询,查询条件是: Where (className like '%会计%') 查询语句设计如下: use ScoreDB select * from Class where className like '%会计%' 查询成果: 任务4:在学生 Student表中查询籍贯不是“南昌”或“上海”同窗姓名、籍贯和所属班级编号,并按籍贯降序排序输出。 任务分析:由任务可知,所查询属性都位于一张表Score中,因而可以直接进行简朴查询,查询条件是: wh
7、ere [native] not in ('南昌','上海') 查询语句设计如下: use ScoreDB select StudentName,[native],classNo from Student where [native] not in ('南昌','上海') 查询成果: 任务5:查找会计学院全体同窗学号、姓名、籍贯、班级编号和所在班级名称。 任务分析:由任务可知,所查询属性在两张关系中,要查询须使用交叉连接,查询条件是: where a.classNo=b.classNo and institute='会计学院' 查询语句设计如下:
8、 use ScoreDB select studentno,studentname,[native],a.classno,classname from Student a,Class b where a.classNo=b.classNo and institute='会计学院' 查询成果: 任务6:查找选修了课程名称为“计算机原理”同窗学号、姓名。 任务分析:由任务可知,所查询属性在三张关系中,因此要使用自然连接,查询条件是: where a.studentNo=b.studentNo and b.courseNo=c.courseNo and cou
9、rseName='计算机原理' 查询语句设计如下: use ScoreDB select a.studentName,studentName from Student a,Score b,Course c where a.studentNo=b.studentNo and b.courseNo=c.courseNo and courseName='计算机原理' 查询成果: 任务7:查询每个同窗选课门数、平均分和最高分。 任务分析:由任务可知,所查询属性都位于一张表Score中,因而可以使用使用直接进行简朴查询, 使用简朴查询
10、查询完了之后依照学号进行分组,查询条件是: group by studentNo 查询语句设计如下: use ScoreDB select Studentno,COUNT(studentno),MAX(score),AVG(score) from Score group by studentNo 查询成果: 任务9:查询平均分在80分以上每个同窗选课门数、平均分和最高分。 任务分析:由任务可知,所查询属性都位于一张表Score中,因而可以使用简朴查询,查询成果依照学号进行分组,最后进行筛选。查询条件: group by studentN
11、o having avg(score)>80 查询语句设计如下: use ScoreDB select Studentno,COUNT(studentno),MAX(score),AVG(score) from score group by studentNo having avg(score)>80 查询成果: 四、 实训总结 通过本次实训,掌握了SQL查询命令基本使用,以及语法构造 其中对SQL投影,连接,有了初步结识。相信在后来实训任务中可以继续加强掌握SQL查询使用及理解。 在设计运营SQL命令中发既有时候会查询不出来,浮现错误等问题,重要因素是SQL;命令格式错误或语法和逻辑上错误。 在实训中体会到SQL这种中大型数据库使用非常以便,使用起来大大提高了工作效率,且语法简朴,但有些细节逻辑问题还是要自己理解清晰,否则虽然会使用SQL语句查询,但是思想上没有理解还是无法做到完全掌握。






