实验3数据查询Word文档格式.docx
《实验3数据查询Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验3数据查询Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
2.在表S、C、SC上进行连接查询;
3.在表S、C、SC上进行嵌套查询;
4.使用聚合函数的查询;
5.对数据的分组查询;
6.对数据的排序查询。
具体内容:
在表S,C,SC上完成以下查询:
1.查询学生的基本信息;
2.查询“CS”系学生的基本信息;
3.查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;
4.找出所有学生中的最大年龄;
5.找出“CS”系年龄最大的学生,显示其学号、姓名;
6.找出各系年龄最大的学生,显示其学号、姓名;
7.统计“CS”系学生的人数;
8.统计各系学生的人数,结果按升序排列;
9.按系统计各系学生的平均年龄,结果按降序排列;
10.查询每门课程的课程名;
11.查询无先修课的课程的课程名和学时数;
12.统计无先修课的课程的学时总数;
13.统计每位学生选修课程的门数、学分及其平均成绩;
14.统计选修每门课程的学生人数及各门课程的平均成绩;
15.找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列;
16.查询选修了“1”或“2”号课程的学生学号和姓名;
17.查询选修了“1”和“2”号课程的学生学号和姓名;
18.查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;
19.查询每位学生选修了课程的学生信息(显示:
学号,姓名,课程号,课程名,成绩);
20.查询没有选修课程的学生的基本信息;
21.查询选修了3门以上课程的学生学号;
22.查询选修课程成绩至少有一门在80分以上的学生学号;
23.查询选修课程成绩均在80分以上的学生学号;
24.查询选修课程平均成绩在80分以上的学生学号;
25.选做:
针对SPJ数据库中的四个表S,P,J,SPJ,完成教材P74-75--习题5中的查询及教材P127--习题5中的查询。
四、实验步骤
1.打开SQLserver;
2.进入查询分析器;
3.创建S数据库;
4.建立S、C、SC三个学生关系表;
5.根据要求,对三个关系表进行操作;
6.用SQL命令语句完成实验要求,详见源程序;
7.将调试过程及结果,截图保存。
五、调试过程及实验结果
查询学生的基本信息
查询“CS”系学生的基本信息
查询“CS”系学生年龄不在19到21之间的学生的学号、姓名
找出所有学生中的最大年龄
找出“CS”系年龄最大的学生,显示其学号、姓名
找出各系年龄最大的学生,显示其学号、姓名
统计“CS”系学生的人数
统计各系学生的人数,结果按升序排列
按系统计各系学生的平均年龄,结果按降序排列
查询每门课程的课程名
查询无先修课的课程的课程名和学时数
统计无先修课的课程的学时总数
统计每位学生选修课程的门数、学分及其平均成绩
统计选修每门课程的学生人数及各门课程的平均成绩
找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列
查询选修了“1”或“2”号课程的学生学号和姓名
查询选修了“1”和“2”号课程的学生学号和姓名
查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩
查询每位学生选修了课程的学生信息(显示:
学号,姓名,课程号,课程名,成绩)
查询没有选修课程的学生的基本信息
查询选修了3门以上课程的学生学号
查询选修课程成绩至少有一门在80分以上的学生学号
查询选修课程成绩均在80分以上的学生学号
查询选修课程平均成绩在80分以上的学生学号
六、总结
通过本次实验,我基本掌握了SQL语句中的各种查询方式,简单查询、连接查询、嵌套查询、使用聚合函数的查询、对数据的分组查询、对数据的排序查询等,但是对比较复杂的查询方式,还不能熟练运用,特别是其WHERE条件,有时,还不能够准确描述,这将在以后的练习中有所加强。
七、源程序清单
建立S数据库
CREATEDATABASES;
建立关系表Student
CREATETABLEStudent
(SnoCHAR(9)PRIMARYKEY,
SnameCHAR(20),
SsexCHAR
(2),
SageSMALLINT,
SdeptCHAR(20)
);
建立关系表Course
createtableCourse
(Cnochar(4)primarykey,
Cnamechar(40),
Cpnochar(4),
Ccreditsmallint,
foreignkey(Cpno)referencesCourse(Cno)
);
建立关系表SC
CREATETABLESC
(Snochar(9),
Cnochar(4),
Gradesmallint,
primarykey(Sno,Cno),
foreignkey(Sno)referencesStudent(Sno),
foreignkey(Cno)referencesCourse(Cno)
向学生表Student中插入数据
INSERT
INTOStudent
VALUES('
200215121'
'
李勇'
男'
20,'
CS'
200215122'
刘晨'
女'
19,'
200215123'
王敏'
18,'
MA'
VALUES('
200215125'
张立'
IS'
向课程表Course中插入数据
INTOCourse
2'
数学'
NULL,2);
6'
数据处理'
4'
操作系统'
3);
7'
PASCAL语言'
4);
5'
数据结构'
1'
数据库'
3'
信息系统'
向学生选课表SC中插入数据
INTOSC
92);
85);
88);
90);
INTOSC(Sno,Cno,Grade)
80);
SELECT*fromstudent;
SELECT*fromstudentwheresdept='
cs'
;
SELECTsno,sname,sdept
fromstudent
wheresdept='
andsagenotbetween19and21;
SELECTSno,Sname,Ssex,Sdept,SageMAXSage
FROMStudent
WHERESage=(
SELECTMAX(Sage)
FROMStudent
SELECTSno,Sname,Ssex,Sdept
WHERESdept='
SELECTSdept,MAX(Sage)
GROUPBYSdept;
SELECTSdept,COUNT(*)NumStudent
WHERESdept='
GROUPBYSdept
ORDERBYNumStudentASC;
SELECTSdept,AVG(Sage)AVGSage
ORDERBYAVGSageDESC;
SELECTCno课程编号,Cname课程名称
FROMCourse;
SELECTCname,Ccredit
FROMCourse
WHERECno!
=ALL(SELECTCno
FROMCourse
WHERECpno!
='
NULL'
SELECTSUM(Ccredit)无先修课的课程学分总数
SELECTSno,COUNT(SC.Cno)选修课程总数,AVG(Grade)平均成绩,SUM(Ccredit)总学分
FROMCourse,SC
WHERECourse.Cno=SC.Cno
GROUPBYSno;
SELECTCno,COUNT(Sno)课程选修人数,AVG(Grade)平均成绩
FROMSC
GROUPBYCno;
15.找出平均成绩在85分以上的学生,结果按系分组,并按平