资源描述
民办四川天一学院
实训报告
学 号:
姓 名:
院 系:
专 业:
教 师:
月
实训一 SQL数据查询实验
实训时间
实训地点
同组人员
成绩
4月26日
无
一、 实训目
1. 纯熟掌握基本查询命令select… from… where语法构造;
2. 纯熟掌握多表查询命令设计办法;
3. 纯熟掌握分组聚合查询应用方式办法;
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(studentNo,courseNo,score)
实训内容:
任务1:在学生Student表中查询年龄不不大于或等于19岁同窗学号、姓名和出生日期。
任务2:在选课Score表中查询成绩在80~90分之间同窗学号、课程号和相应成绩。
任务3:在班级Class表中查询班级名称中具有会计班级信息。
任务4:在学生 Student表中查询籍贯不是“南昌”或“上海”同窗姓名、籍贯和所属班级编号,并按籍贯降序排序输出。
任务5:查找会计学院全体同窗学号、姓名、籍贯、班级编号和所在班级名称。
任务6:查找选修了课程名称为“计算机原理”同窗学号、姓名。
任务7:查询每个同窗选课门数、平均分和最高分。
任务9:查询平均分在80分以上每个同窗选课门数、平均分和最高分。
实训规定:设计T_SQL命令,并在SQL Server Management Studio查询分析器中执行命令,观测并分析成果。
三、 实训过程
任务1:在学生Student表中查询年龄不不大于或等于19岁同窗学号、姓名和出生日期。
任务分析:由任务可知,所需查询属性都位于一张表student中,因而可以直接进行简朴查询,查询条件是...
Year(getdate())-year(birthday)
查询语句设计如下:
select studentNo ,studentName from student where
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:在班级Class表中查询班级名称中具有会计班级信息。
任务分析:由任务可知,所查询属性都位于一张表Score中,因而可以直接进行简朴查询,查询条件是:
Where (className like '%会计%')
查询语句设计如下:
use ScoreDB
select * from Class where className like '%会计%'
查询成果:
任务4:在学生 Student表中查询籍贯不是“南昌”或“上海”同窗姓名、籍贯和所属班级编号,并按籍贯降序排序输出。
任务分析:由任务可知,所查询属性都位于一张表Score中,因而可以直接进行简朴查询,查询条件是:
where [native] not in ('南昌','上海')
查询语句设计如下:
use ScoreDB
select StudentName,[native],classNo
from Student
where [native] not in ('南昌','上海')
查询成果:
任务5:查找会计学院全体同窗学号、姓名、籍贯、班级编号和所在班级名称。
任务分析:由任务可知,所查询属性在两张关系中,要查询须使用交叉连接,查询条件是:
where a.classNo=b.classNo and institute='会计学院'
查询语句设计如下:
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 courseName='计算机原理'
查询语句设计如下:
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中,因而可以使用使用直接进行简朴查询,
使用简朴查询,查询完了之后依照学号进行分组,查询条件是:
group by studentNo
查询语句设计如下:
use ScoreDB
select Studentno,COUNT(studentno),MAX(score),AVG(score)
from Score
group by studentNo
查询成果:
任务9:查询平均分在80分以上每个同窗选课门数、平均分和最高分。
任务分析:由任务可知,所查询属性都位于一张表Score中,因而可以使用简朴查询,查询成果依照学号进行分组,最后进行筛选。查询条件:
group by studentNo 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语句查询,但是思想上没有理解还是无法做到完全掌握。
展开阅读全文