实验三,查询数据库原理实验.doc

西安石油大学实验报告 课 程 数据库原理与应用 实验名称 查询数据库 院 系___计算机___专业班级_ 姓 名__学 号201107120202 实验日期 2013 年 11 月 5 日 10月29日 11月12日 实验报告日期 2013 年 11月 12日 1.实验目的 1) 熟悉SQL Server 查询分析器环境。

2) 掌握基本的SELECT查询及其相关子句的使用。

3) 掌握复杂的SELECT查询,如多表查询、子查询、连接和联合查询。

2.实验内容 1 启动SQL Server 查询分析器环境。

2 简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。具体完成以下题目,将它们转换为SQL语句表示,在XSCJ数据库中实现其数据查询操作。

a 查询计算机系学生的学号和姓名 b 查询选修了课程的学生学号 c 查询选修课程号为‘101’的学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。

d 查询选修课程号为‘101’且成绩在8090之间的学生学号和成绩,并成绩乘以0.8输出。

e 查询水利系或计算机系姓陈的学生的信息

f 查询缺少了成绩的学生的学号和课程号 g 在KC表中查询学分低于3的课程信息,并按课程号升序排列。

h 查询全体学生的姓名, 出生年份,和所在系 i 查询 计算机, 经济系的所有学生的姓名和性别 j 查询没有先行课的课程的课程号和课程名 3 连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。

a 查询107号课程不及格的学生信息学号,姓名,联系电话。

b 查询学生的学号、姓名、选修的课程号及成绩 c 查询选修课程号为‘101’且成绩在90以上的学生学号、姓名和成绩 d 查询每一门课程的间接先修课(即先修课的先修课) SELECT课程名 FROM xs_kc A JOIN xs_kc B Where A. 先修课程B.课程名 and先修课程 is not null e 用连接查询在XSQK表中查询住在同一寝室的学生,即其联系电话相同 SELECT A.学号,A.姓名,A.联系电话 FROM XSQK A JOIN XSQK B ON A.联系电话B.联系电话 WHERE A.学号B.学号 4嵌套查询 a 查询与’ 杨颖’在同一个系学习的学生的信息 select * from XSQK where所在系in select所在系from XSQK where姓名杨颖 比较 select * from XSQK where 所在系 select所在系from XSQK where姓名杨颖 的异同 b 查询选修了课程名为’ 计算机原理’ 的学生的学号和姓名 select 学号,姓名 from xsqk where学号inselect学号from sc where课程号in select课程号from kc where课程名计算机原理 比较 select学号,姓名 from xsqk where 学号 in select 学号 from xs_kc, kc where xs_kc.课程号kc.课程号and 课程名计算机原理 c 查询选修了课程’ 101’和课程’ 102’的学生的学号 d 查询所有选修了101号课程的学生姓名 e 查询没有选修了1号课程的学生姓名 f 查询选修了全部课程的学生姓名 h 查询没有人选修的课程号和课程名 i 查询每个学生的课程成绩最高的成绩信息sno,cno,grade 5 数据库的集合查询和统计查询 a 在XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列。

b 在XS_KC表中查询选修了3门以上课程的学生学号。

c 按学号对不及格的成绩记录进行明细汇总。

e 查询所有课程的总学分数和平均学分数,以及最高学分和最低学分 f 计算101号课程的学生的平均成绩, 最高分和最低分 g*. 查询每个学生的课程成绩最高的成绩信息学号,课程号,成绩 h*. 查询成绩低于该门课程平均成绩的学生的成绩信息学号,课程号,成绩 i. 查询各系的学生的人数并按人数从多到少排序 j 查询各系的男女生学生总数, 并按系别,升序排列, 女生排在前 k 查询选修了3门课程已上的学生的学号和姓名 l 查询每个学生所选课程的平均成绩, 最高分, 最低分,和选课门数select m 查询平均分超过80分的学生的学号和平均分 n 查询计算机系中选修了2门课程以上的学生的学号 o 查询选修了101号课程或102号课程的学生的学号 3. 实验步骤 1 启动SQL Server 查询分析器环境。

2 简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。具体完成以下题目,将它们转换为SQL语句表示,在XSCJ数据库中实现其数据查询操作。

a 查询计算机系学生的学号和姓名 b 查询选修了课程的学生学号 c 查询选修课程号为‘101’的学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。

d 查询选修课程号为‘101’且成绩在8090之间的学生学号和成绩,并成绩乘以0.8输出。

e 查询水利系或计算机系姓陈的学生的信息。

f 查询缺少了成绩的学生的学号和课程号 g 在KC表中查询学分小于等于3的课程信息,并按课程号升序排列。

h 查询全体学生的姓名, 出生年份,和所在系 i 查询 计算机, 经济系的所有学生的姓名和性别 j 查询没有先行课的课程的课程号和课程名 3 连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。

a 查询107号课程不及格的学生信息学号,姓名,联系电话。

b 查询学生的学号、姓名、选修的课程号及成绩 c 查询选修课程号为‘101’且成绩在90以上的学生学号、姓名和成绩 d 查询每一门课程的间接先修课(即先修课的先修课) e 用连接查询在XSQK表中查询住在同一寝室的学生,即其联系电话相同 SELECT A.学号,A.姓名,A.联系电话 FROM XSQK A JOIN XSQK B ON A.联系电话B.联系电话 WHERE A.学号B.学号 4嵌套查询 a 查询与’ 杨颖’在同一个系学习的学生的信息 select * from XSQK where所在系in select所在系from XSQK where姓名杨颖 比较 select * from XSQK where 所在系 select所在系from XSQK where姓名杨颖 的异同 b 查询选修了课程名为’ 计算机原理’ 的学生的学号和姓名 select 学号,姓名 from xsqk where学号inselect学号from sc where课程号in select课程号from kc where课程名计算机原理 比较 select学号,姓名 from xsqk where 学号 in select 学号 from xs_kc, kc where xs_kc.课程号kc.课程号and 课程名计算机原理 c 查询选修了课程’ 101’和课程’ 102’的学生的学号 d 查询所有选修了101号课程的学生姓名 e 查询没有选修了101号课程的学生姓名 f 查询选修了全部课程的学生姓名 h 查询没有人选修的课程号和课程名 i 查询每个学生的课程成绩最高的成绩信息sno,cno,grade 5 数据库的集合查询和统计查询 a 在XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列。

b 在XS_KC表中查询选修了1门以上课程的学生学号。

c 按学号对不及格的成绩记录进行明细汇总。

e 查询所有课程的总学分数和平均学分数,以及最高学分和最低学分 f 计算101号课程的学生的平均成绩, 最高分和最低分 g*. 查询每个学生的课程成绩最高的成绩信息学号,课程号,成绩 h*. 查询成绩低于该门课程平均成绩的学生的成绩信息学号,课程号,成绩 i. 查询各系的学生的人数并按人数从多到少排序 j 查询各系的男女生学生总数, 并按系别,升序排列, 女生排在前 k 查询选修了2门课程已上的学生的学号和姓名 l 查询每个学生所选课程的平均成绩, 最高分, 最低分,和选课门数 m 查询平均分超过80分的学生的学号和平均分 n 查询计算机系中选修了2门课程以上的学生的学号 o 查询选修了101号课程或102号课程的学生的学号