数据库实验二Word文档下载推荐.docx
《数据库实验二Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库实验二Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
2.求选修了课程的学生学号
3.求选修课程号为‘1’的学生号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。
4.求选修课程号为‘1’且成绩在80~90之间的学生学号和成绩,并将成绩乘以0.8输出。
5.求数学系或计算机系姓张的学生的信息。
6.求缺少了成绩的学生的学号和课程号
(二)连接查询操作。
该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
1.查询每个学生的情况以及他所选修的课程
2.求学生的学号、姓名、选修的课程及成绩
3.求选修课程号为‘1’且成绩在90以上的学生学号、姓名和成绩
4.查询每一门课程的间接先行课(即先行课的先行课)
(三)嵌套查询操作:
在SQLServer查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
具体完成以下各题。
将它们用SQL语句表示,在学生选课中实现其数据嵌套查询操作。
1.求选修了高等数学的学号和姓名
2.求‘1’课程的成绩高于刘晨的学生学号和成绩
3.求其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)
4.求其他系中比计算机系学生年龄都小的学生
5.求选修了‘2’课程的学生姓名
6.求没有选修‘2’课程的学生姓名
7.查询选修了全部课程的学生姓名
8.求至少选修了学号为“95002”的学生所选修全部课程的学生学号和姓名
(四)集合查询和统计查询:
1)分组查询实验。
该实验包括分组条件表达、选择组条件表达的方法。
2)使用函数查询的实验。
该实验包括统计函数和分组统计函数的使用方法。
3)集合查询实验。
该实验并操作UNION、交操作INTERSECT和差操作MINUS的实现方法。
具体完成以下例题,将它们用SQL语句表示,在学生选课中实现其数据查询操作。
1.求学生的总人数
2.求选修了课程的学生人数
3.求课程和选修了该课程的学生人数
4.求选修超过3门课的学生学号
5.查询计算机科学系的学生及年龄不大于19岁的学生
6.查询计算机科学系的学生与年龄不大于19岁的学生的交集
7.查询计算机科学系的学生与年龄不大于19岁的学生的差集
8.查询选修课程‘1’的学生集合与选修课程‘2’的学生集合的交集
9.查询选修课程‘1’的学生集合与选修课程‘2’的学生集合的差集
三、实验方法
将查询需求用SQL语言表示;
在SQLServer查询分析器的输入区中输入SQL查询语句;
设置查询分析器的结果区为StandardExecute(标准执行)或ExecutetoGrid(网格执行)方式;
发布执行命令,并在结果区中查看查询结果;
如果结果不正确,要进行修改,直到正确为止。
所使用的学生管理库中的三张表为:
(1)STUDENT(学生信息表)
SNO(学号)
SNAME(姓名)
SEX(性别)
SAGE(年龄)
SDEPT(所在系)
95001
李勇
男
20
CS
95002
刘晨
女
19
IS
95003
王名
18
MA
95004
张立
95005
李明
22
95006
张小梅
23
95007
封晓文
(2)COURSE(课程表)
CNO(课程号)
CNAME(课程名)
CPNO(先行课)
CCREDIT(学分)
1
数据库
5
4
2
数学
3
信息系统
操作系统
6
数据结构
7
数据处理
PASCAL语言
(3)SC(选修表)
Grade(成绩)
92
85
88
90
80
78
60
89
65
四、实验结果与分析(SQL代码及查询结果截图)
源代码:
1.1
SELECTSNO,SNAME
FROMSTUDENT
WHERESDEPT='
MA'
;
1.2
SELECTDISTINCTSNO
FROMSC;
1.3
SELECTSNO,Grade
FROMSC
WHERECNO='
1'
ORDERBYGradeDESC,SNO;
1.4
SELECTSNO,Grade*0.8
ANDGradeBETWEEN80AND90
1.5
SELECT*
WHERESDEPTIN('
CS'
'
)ANDSNAMELIKE'
张%'
1.6
SELECTSNO,CNO
WHEREGradeISNULL;
2.1
SELECTSTUDENT.*,SC.*
FROMSTUDENT,SC
WHERESTUDENT.SNO=SC.SNO;
2.2
SELECTSTUDENT.SNO,SNAME,SC.CNO,Grade
2.3
SELECTSTUDENT.SNO,SNAME,Grade
WHERESTUDENT.SNO=SC.SNOAND
SC.CNO='
ANDSC.Grade>
90;
2.4
SELECTFIRST.CNO,SECOND.CPNO
FROMCOURSEFIRST,COURSESECOND
WHEREFIRST.CPNO=SECOND.CNO;
3.1
SELECTSTUDENT.SNO,SNAME
FROMSTUDENT,SC,COURSE
SC.CNO=COURSE.CNOAND
COURSE.CNAME='
数学'
3.3
SELECTSNAME,SAGE
WHERESAGE<
ANY(SELECTSAGE
FROMSTUDENT
WHERESDEPT='
)
ANDSDEPT<
>
'
3.4
ALL(SELECTSAGE
3.5
SELECTSNAME
WHEREEXISTS
(SELECT*
WHERESNO=STUDENT.SNOANDCNO=2);
3.6
WHERENOTEXISTS
3.7
FROMCOURSE
WHERESNO=STUDENT.SNO
ANDCNO=COURSE.CNO));
截图: