《数据库实验二(35页).doc》由会员分享,可在线阅读,更多相关《数据库实验二(35页).doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、- 计算机科学系实验报告 (首页)课程名称 数据库系统概论 班 级 网络工程2班 实验名称 数据库中数据的查询 指导教师 索剑 姓名 李文森 学 号 1214080613213 日 期 2014年 5月12日 一、实验目的学会使用SQL语言进行各种类型的查询,理解各种查询的异同及相互之间的转换。二、实验设备与环境SQL SERVER 2000、XP系统三、实验内容、程序清单及运行结果实验内容:练习单表查询、嵌套查询、连接查询及集合查询操作步骤:1) 打开实验1建立的数据库2) 在查询分析器中完成以下单表查询语句查询全体学生的姓名及其出生年份查询年龄不在2023岁之间的学生姓名、系别和年龄查询既
2、不是IS、MA,也不是CS系学生的姓名和性别查询所有姓刘的学生的姓名、学号和性别查询选修了3号课程的学生的学号及其成绩,结果按分数的降序排列计算1号课程的学生平均成绩查询选修了3门以上课程的学生学号3) 在查询分析器中完成以下连接查询语句查询每个学生及其选修课程的情况(使用自然连接、外连接分别完成)查询每一门课的间接先修课查询选修2号课程且成绩在90分以上的所有学生查询每个学生的学号、姓名、选修的课程名及成绩4) 在查询分析器中完成以下嵌套查询语句查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连
3、接分别完成)查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)查询没有选修1号课程的学生的姓名查询选修全部课程的学生姓名查询至少选修了学生95002选修的全部课程的学生号码5) 在查询分析器中完成以下集合查询语句查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)查询计算机科学系的学生及年龄不大于19岁的学生的差集6) 在企业管理器可视化环境下重新完成2-5步骤的内容程序清单及运行结果第一:查询7) 打开实验1建立的数据库8) 在查询分析器中完成以
4、下单表查询语句查询全体学生的姓名及其出生年份SELECT Sname,2014-Sage AS years FROM Student;查询选修了课程的学生学号(去掉重复行)SELECT DISTINCT Sno FROM SC;查询年龄不在2023岁之间的学生姓名、系别和年龄SELECT Sname,Sdept,Sage FROM Student where Sage not between 20 and 23;查询既不是IS、MA,也不是CS系学生的姓名和性别SELECT Sname,Sdept FROM Student WHERE Sdept not in(IS,MA,CS);查询所有姓刘
5、的学生的姓名、学号和性别SELECT Sname,Sno,Sage FROM Student WHERE Sname LIKE 刘%;查询选修了3号课程的学生的学号及其成绩,结果按分数的降序排列SELECT Sno,Grade FROM SC WHERE Cno=3 ORDER BY Grade DESC;计算1号课程的学生平均成绩SELECT AVG(Grade) FROM SC WHERE Cno=1 ;查询选修了3门以上课程的学生学号SELECT Sno from SC GROUP BY Sno HAVING COUNT(Cno)3;9) 在查询分析器中完成以下连接查询语句查询每个学生及
6、其选修课程的情况(使用自然连接、外连接分别完成)SELECT Student.*,SC.Cno FROM Student,SC WHERE Student.Sno=SC.Sno;SELECT Student.*,Cno FROM Student JOIN SC ON(Student.Sno=SC.Sno);查询每一门课的间接先修课SELECT first.Cno,second.Cpno from Course first,Course second WHERE first.Cpno=second.Cno;查询选修2号课程且成绩在90分以上的所有学生SELECT Sname FROM Stude
7、nt a,SC b WHERE a.Sno=b.Sno AND Cno=2 AND Grade90;查询每个学生的学号、姓名、选修的课程名及成绩SELECT a.Sno,Sname,c.Cname,Grade FROM Student a,SC b,Course c WHERE a.Sno=b.Sno AND b.Cno=c.Cno ;10) 在查询分析器中完成以下嵌套查询语句查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)1.嵌套查询SELECT * FROM Student a WHERE Sdept IN(SELECT Sdept FROM Student
8、 b WHERE b.Sname=刘晨 ); 2.自身连接SELECT a.* FROM Student a,Student b WHERE b.Sname=刘晨 AND a.Sdept=b.Sdept ; 3.比较查询SELECT * FROM Student a WHERE Sdept=(SELECT Sdept FROM Student b WHERE b.Sname=刘晨 );查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)1.嵌套查询SELECT Sno,Sname FROM Student WHERE Sno IN(SELECT Sno FROM S
9、C WHERE Cno IN(SELECT Cno FROM Course WHERE Cname=信息系统 ) ) ;2.自然连接SELECT a.Sno,Sname FROM Student a,SC b ,Course c WHERE a.Sno=b.Sno AND b.Cno=c.Cno AND Cname=信息系统;查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)1.ANY谓词SELECT Sname,Sage FROM Student WHERE SageANY( SELECT Sage FROM Student WHERE Sdept=IS )
10、 AND SdeptIS;2.聚集函数SELECT Sname,Sage FROM Student WHERE Sage(SELECT MAX(Sage) FROM Student WHERE Sdept=IS )AND SdeptIS;查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)1.比较运算符2.INSELECT Sname FROM Student WHERE Sno IN(SELECT Sno FROM SC WHERE Cno=1 );3.EXISTSSELECT Sname FROM Student WHERE EXISTS(SELECT * FROM
11、SC WHERE Sno=Student.Sno AND Cno=1 );查询没有选修1号课程的学生的姓名查询选修全部课程的学生姓名SELECT Sname FROM Student WHERE NOT EXISTS(SELECT * FROM Course WHERE NOT EXISTS(SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno) );查询至少选修了学生95002选修的全部课程的学生号码SELECT DISTINCT Sno FROM SC a WHERE NOT EXISTS(SELECT * FROM SC b
12、WHERE b.Sno=95002 AND NOT EXISTS(SELECT * FROM SC c WHERE c.Sno=a.Sno AND c.Cno=b.Cno);11) 在查询分析器中完成以下集合查询语句查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)单表查询:SELECT * FROM Student WHERE Sdept=CS OR Sage=19 ORDER BY Sno;集合查询:SELECT * FROM Student WHERE Sdept=CS UNION SELECT * FROM Student WHERE Sage
13、19;第二:可视化实现结果1. 查询全体学生的姓名及其出生年份2.查询选修了课程的学生学号(去掉重复行)3.查询年龄不在2023岁之间的学生姓名、系别和年龄4.查询既不是IS、MA,也不是CS系学生的姓名和性别5.查询所有姓刘的学生的姓名、学号和性别6.查询选修了3号课程的学生的学号及其成绩,结果按分数的降序排列7.计算1号课程的学生平均成绩8.查询选修了3门以上课程的学生学号9.在查询分析器中完成以下连接查询语句查询每个学生及其选修课程的情况(使用自然连接、外连接分别完成)10.查询每一门课的间接先修课11查询选修2号课程且成绩在90分以上的所有学生12查询每个学生的学号、姓名、选修的课程名
14、及成绩13在查询分析器中完成以下嵌套查询语句查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)1.嵌套查询 2.自身连接 3.比较查询查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)1.嵌套查询2.自然连接14查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)1.ANY谓词2.聚集函数15.查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)1.比较运算符2.IN3.EXISTS查询没有选修1号课程的学生的姓名查询选修全部课程的学生姓名SELECT Sname FROM Stu
15、dent WHERE NOT EXISTS(SELECT * FROM Course WHERE NOT EXISTS(SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno) );查询至少选修了学生95002选修的全部课程的学生号码在查询分析器中完成以下集合查询语句查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)单表查询:SELECT * FROM Student WHERE Sdept=CS OR Sage=19 ORDER BY Sno;集合查询:SELECT * FROM Student WHERE Sdept=CS UNION SELECT * FROM Student WHERE Sage19;四、实验体会数据库的逻辑关系很强,通过做实验,让我更容易的知道其中的奥秘,通过不断的实验来锻炼自己逻辑分析能力也是一个不错的选择。-第 35 页-