搜索
您的当前位置:首页数据库实验报告二

数据库实验报告二

来源:乌哈旅游
 实验成绩

《数据库系统原理及应用》实验报告 实验二:T-SQL简单数据库查询

专业班级:软件1402姓名 魏振方 学号 201416920306完成时间:2016.10.17 一、实验目的

牢记SELECT 语句的基本语法格式;掌握利用SQL语句进行多表内/外连接查询和嵌套查询的方法;掌握GROUP BY子句、HAVING子句、ORDER BY子句的用法;掌握(NOT)IN、(NOT)EXISTS等谓词的用法;掌握SUM、AVG、COUNT、MAX、MIN等集合函数的用法。 二、实验内容及要求

实验详细内容如下:在实验一中建立的三张表(student、course、sc)的基础上,完成如下内容的练习: 1.单表查询:

(1)查询计算机系学生的信息; (2)查询全体学生的人数; (3)查询全体男生人数和女生人数;

(4)查询每个系中的男生人数并按人数的降序排列; (5)查询名字中带“阳”的学生信息;

(6)求被选修的各门课程的平均成绩和选修该课程的人数; (7)查找选修课程超过2门且成绩都在80分以上的学生的学号。 2.多表查询:

(1)查询未选课的学生学号、姓名和所在系;

(2)查询每个学生的选课情况包含学生学号、姓名、所选课程、成绩;

(3)查询没有学生选的课程信息;

(4)查询每个学生选课的总学分数,并按总学分数的降序排列;

(5)查询选修了数据库课程且成绩在80分以上的学生的学号、姓名、课程名及成绩;

(6)查询选修数据库课程并且成绩在90分以上的学生学号和姓名; (7)查找每个学生的选修课程情况(只查看选课的学生情况); (8)查找所有学生的选课情况(若学生未选课也要包括在内); (9)查找被选修了的课程的选课情况和所有开设的课程名; 三、实验结果(包含每一个正确查询的sql语句和运行结果截屏) 1.单表查询:

(1)查询计算机系学生的信息;

select student.* from Student where Sdept='cs'

(2)查询全体学生的人数;

select count(*) 全体学生人数 from Student

(3)查询全体男生人数和女生人数;

select ssex, count(Ssex) 人数 from Student

group by ssex

(4)查询每个系中的男生人数并按人数的降序排列;

from Student

group by Ssex ,Sdept having Ssex='男'

select sdept,ssex,count(Sdept) 人数

(5)查询名字中带“阳”的学生信息;

select Student.* from Student

where Sname like '%阳'

(6)求被选修的各门课程的平均成绩和选修该课程的人数;

select cno 课程号,count(sno) 人数,AVG(grade) 平均成绩 from sc

where grade is not null group by Cno

(7)查找选修课程超过2门且成绩都在80分以上的学生的学号。

select sno from sc where Grade>80 group by sno

having count(Sno)>1

2.多表查询:

(1)查询未选课的学生学号、姓名和所在系;

select student.sno 学号,Sname 姓名,Sdept 系,Cno from student left outer join sc on(Student.sno=sc.Sno) where cno is nul

(2)查询每个学生的选课情况包含学生学号、姓名、所选课程、成绩;

select student.sno 学号,Sname 姓名,Cname,Grade

from student left outer join sc on(Student.Sno=sc.Sno) left outer join Course on(sc.Cno=course.Cno)

(3)查询没有学生选的课程信息;

select Course.Cno,Cname,Sno

from sc right outer join Course on(sc.Cno=Course.Cno) where Sno is null

(4)查询每个学生选课的总学分数,并按总学分数的降序排列;

select sum(Ccredit) 总学分,Sno from sc,Course

where sc.Cno=Course.Cno group by Sno

order by(sum(Ccredit))desc

(5)查询选修了数据库课程且成绩在80分以上的学生的学号、姓名、课程名及成绩;

select Student.Sno,Sname,Cname,grade from student,sc,Course where sc.Cno=Course.Cno and

Student.Sno=sc.Sno and Cname='数据库' and Grade>80

(6)查询选修数据库课程并且成绩在90分以上的学生学号和姓名;

select Student.Sno,Sname from student,sc,Course where sc.Cno=Course.Cno and

Student.Sno=sc.Sno and Cname='数据库' and Grade>90

(7)查找每个学生的选修课程情况(只查看选课的学生情况);

select Student.sno,Sname,Sdept,Cno,Grade

from Student left outer join sc on(student.sno=sc.sno) where cno is not null

(8)查找所有学生的选课情况(若学生未选课也要包括在内);

select Student.sno,Sname,Sdept,Cno,Grade

from Student left outer join sc on(student.sno=sc.sno)

(9)查找被选修了的课程的选课情况和所有开设的课程名;

select Course.cno,cname,sno

from Course left outer join sc on(Course.cno=sc.cno)

四、实验中遇到的问题及解决(或未解决)的方案

用了大量课余时间实践基本语法,题目要求的语句虽不能直接打出,但经过尝试并观察执行结果,修改后可实现题目要求,基本知识虽以大概掌握但经验不足,还需积累.

对count,group by,等语句还有不理解的地方,还需心存问题,在以后的使用中观察,思考.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top