SQL查询实验报告讲解 联系客服

发布时间 : 星期一 文章SQL查询实验报告讲解更新完毕开始阅读1ac5910e178884868762caaedd3383c4ba4cb405

--(3 )求选修课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则

按 学号升序排列。 select sno,grade from sc where cno=1

order by grade desc,sno asc --(4)查找选修课程的平均成绩位于前三名的学生的学号。 select top 3 sno from sc

group by sno

order by avg(grade) desc --(5)查询计算机系的姓刘且单名的学生的信息。 select * from student

where sdept=计算机 and sname like 刘_ --(6)查询至少选修两门课程的学生学号。 select sno from sc

group by sno

having count(*)>=2 --(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。

select sno,cno,grade,最高成绩百分比= grade*100/(select max(grade)from sc) from sc --(8)查询选修“数据库”课程,且成绩在分以上的学生的学号和成绩。 select sno,grade from course c,sc

where cname=数据库 and grade>80 and c.cno=sc.cno --(9)查询所有姓“王”的同学没有选修的课程名。(请分别用exists和in完成该查询) --exists方法 select cname from course c where not exists

( select s.sno from student s,sc where s.sno=sc.sno and sname like 王% and c.cno=sc.cno )

--in方法 select cname from course c where cno not in

(

select cno from student s,sc where s.sno=sc.sno and sname like 王% and c.cno=sc.cno ) --(10)查询选修了全部课程的学生的姓名。(请至少写出两种查询语句) --法一

select sname from student s where not exists

( )

--法二

select sname from student s where

( select count(*) from sc where sno = s.sno select * from course c where not exists

( ) select * from sc where sno = s.sno and cno = c.cno )=(select count(*) from course) --法三

select sname from student where sno in (

select sno from sc

group by sno

having count(*) = (select count(*) from course) ) --(11)求选修了学生“”所选修的全部课程的学生学号和姓名。 select s.sno,sname from student s,sc where sc.cno in ( select cno from sc

where sno=95001 )and s.sno=sc.sno group by s.sno,sname

having count(cno)=(select count(cno) --(12)查询每一门课的间接先修课。 select c1.cno,c2.cpno from course c1,course c2 where c1.cpno = c2.cno --(13)列出所有学生所有可能的选课情况。 select s.sno,s.sname,c.cno,c.cname from student s cross join course c

--(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。 select s.sno,sc.cno

from student s left outer join sc on s.sno = sc.sno --(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。(请至少写出两种查询语句) --法一 from student where sdept in

( select sdept from student where sname = 张三 and ssex =(select ssex from student

where sname= from sc where sno=95001) and s.sno!=95001 张三) )

group by sname having sname!=张三 --法二

select sname from student where sdept =

(篇四:sql数据的查询和更新实验报告报告 实验三、sql的数据查询 1、 实验目的 熟悉sql语句的数据查询语言,能够sql语句对数据库进行单表查询、连接查询、嵌套

查询、集合查询和统计查询。 2、 实验内容

实验内容主要是对数据库进行查询操作,包括如下四类查询方式: (1) 单表查询 ? 查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。 ? 使用distinct保留字消除重复行。

? 对查询结果排序和分组。 ? 集合分组使用集函数进行各项统计。 (2) 连接查询

? 笛卡儿连接和等值连接。 ? 自连接。 ? 外连接

? 复合条件连接。 ? 多表连接。 (3) 嵌套查询

? 通过实验验证对子查询的两个限制条件。 ? 体会相关子查询和不相关子查询的不同。 ? 考察四类谓词的用法,包括: 第一类,in、not in;

第二类,带有比较运算符的子查询; 第三类,some、any或all谓词的子查询,查询最大值和最小值; 第四类,带有exists谓词的子查询,实现“所有”等情况(如王宏的“所有”课程,“所有”女生选修的课程)

(4) 集合运算

? 使用保留字union进行集合或运算。 ? 采用逻辑运算符and或or来实现集合交和减运算。 3、 实验步骤 以university_mis数据库为例,该数据库中有四张如实验一,其中score是每门课的考试成绩,scredit是学生所有考试合格课程所获得的积分总数,ccredit每门课程的学分数。 在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。在表reports

中保存学生的选课记录和考试成绩。 1 请先输入如下元组,再对数据库进行有关的查询操作: 图1.1、students表 图1.2、teachers表 图1.3、courses表 图1.4、reports表 2 (1) 查询性别为“男”的所有学生的名称并按学号升序排列。 (2) 查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。积分 的计算公式为:[1+(考试成绩-60)*0.1]*ccredit。考试成绩>=60。 (3) 查询学分是3或4的课程的名称。 (4) 查询所有课程名称中含有“算法”的课程编号。 (5) 查询所有选课记录的课程号(不重复显示)。 (6) 统计所有老师的平均工资。 (7) 查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩 降序排列。

(8) 统计各个课程的选课人数和平均成绩。 (9) 查询至少选修了三门课程的学生编号和姓名。 (10)查询编号s26的学生所选的全部课程的课程名和成绩。 (11)查询所有选了“数据库原理及其应用”课程的学生编号和姓名。 (12)求出选择了同一个课程的学生。 (13)求出至少被两名学生选修的课程编号。 (14)查询选修了编号s26的学生所选的某个课程的学生编号。 (15)查询学生的基本信息及选修课程编号和成绩。 (16)查询学号s52的学生的姓名和选修的课程名称及成绩。 (17)查询和学号s52的学生同性别的所有学生资料。 (18)查询所有选课的学生的详细信息。 (19)查询没有学生选的课程的编号和名称。 (20)查询选修了课程名为c++的学生学号和姓名。 (21)找出选修课程uml或者课程c++的学生学号和姓名。 (22)找出和课程uml或课程c++的学分一样课程名称。 (23)查询所有选修编号c01的课程的学生的姓名。 (24)查询选修了所有课程的学生姓名。 (25)利用集合查询方式,查询选修课程c++或选择课程java的学生的编 号、姓名和积分。 4、 实验要求

完成以上实验步骤(1)-(25)所有sql数据定义操作,并将粗体部分的操作窗口剪贴到实

验报告中。 实验3报告 1、查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。积分的计算公式为:

[1+(考试成绩-60)*0.1]*ccredit。考试成绩>=60。 3 老师给的“insert into chencds_reports values(s52,t05,c05,909);”应该属于不小心打错了

2、查询所有课程名称中含有“算法”的课程编号 3、 查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排 列。 4、 查询至少选修了三门课程的学生编号和姓名。 4 5、查询所有选了“数据库原理及其应用”课程的学生编号和姓名。 6、求出选择了同一个课程的学生。