《数据库实验3(7页).doc》由会员分享,可在线阅读,更多相关《数据库实验3(7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-数据库实验3-第 5 页宁波工程学院数据库理论与技术课程实验报告学院: 电子与信息工程学院 专业: 计算机科学与技术 年级: 实验时间: 组名: 组长: 组员姓名: 指导教师签字: 成绩: 实验三、SQL-数据查询语言一、实验目的和要求1、实验目的:深入理解连接查询和嵌套查询的语句格式、执行过程,掌握它们的使用方法;理解数据更新语言INSERT、UPDATE、DELETE语句的格式和作用,掌握它们的使用方法和应用范围;理解视图的概念,掌握其定义方法和应用方法。2、实验要求:在每次实验前,学生必须根据实验指导书设计出实验方案(程序和实验步骤);在实验过程中要求独立进行程序调试和排错,学会使用在
2、线帮助来解决实验中遇到的问题,同时运用理论的知识来分析问题和解决问题,记录下实验过程和结果。上机结束后写出实验报告,并对实验过程进行分析和总结。二、实验内容与步骤1、在SQL SERVER 2005上附加数据库jxgl和ReadBook。2、在jxgl中完成下列查询jxgl数据库中表及表中字段说明:Students(sno, sname,class,ssex,bday,bplace,mgrade,photo,sfzh,zxf)该表是学生基本信息表 其中:sno学号,sname姓名,class班级,ssex性别,bday出生日期,bplace籍贯,mgrade入学成绩,photo照片,sfzh身
3、份证号码,zxf总学分Course(cno,cname,cpno,credit) 该表是课程情况表 其中:cno课程号,cname课程名称,cpno先修课程号,credit学分SC(term,sno,cno,grade,point) 该表是学生选课成绩表 其中:term学期,sno学号,cno课程号,grade成绩,point绩点TC(term,class,cno,tno,period)该表是教师上课情况表 其中:list序号,term学期;class班级;cno课程号;tno教师编号; period学时Teachers (tno,tname,ps,wday,dept,pay,marry,re
4、sume)该表是教师基本情况表:其中tno教师编号;tname教师姓名;ps职称; wday入校日期;dept系别;pay工资;marry婚否;resume简历(1)查询选修课程学生的学号、姓名、所选课程号、课程名称以及所取得的成绩(2)查询每一门课程及其先修课程,查询结果中显示课程号、课程名和先修课程名(3)查询和“刘涛”在一个班级的学生的信息思考:该查询可用几种方法实现?(4)查询选修了计算机基础课的学生的学号、姓名(分别用连接查询和嵌套查询的方法实现)(5)查询没有选修课程的学生的信息(6)查询其他班中比“03计算应用1”所有学生入学成绩高的学生的姓名和入学成绩(用两种方法实现)(7)查
5、询每个学生超过该门课程平均成绩的学号(8)查询至少选修了“0311102”学生所选全部课程的学生的学号(9)查询既选修了“计算机基础”又选修了“C语言基础”的学生的学号3、在jxgl中完成下列数据更新(1)向course表添加一个新的元组。(2)将“0301102”学生所选的“0000002”课程的成绩改为100分,绩点改为2(3)删除(1)中在course表中添加的记录(4)统计每门课程的平均成绩并将统计结果存入到jxgl数据库中思考:如何将students表中班级名 “03计算应用1”改为“03计算机应用1”(可调用函数完成)4、查询教师的编号、姓名、上课的课程号、课程名称及班级。将该查询
6、定义为一个视图。5、在第4题定义的视图中完成下列查询(1)查询“姚明”所上课程和班级。(2)统计每一位教师上课的数量6、附加题,做了有加分利用数据库ReadBook完成下列查询及视图设计。(在SQL SERVER2005上附加数据库ReadBook)(1)设计一个查询,要求用连接和嵌套两种方式完成。(2)设计一个查询,要求用外连接的方式完成。(3)设计一个查询,要求用带exists或not exists相关子查询完成(4)设计一个集合查询(5)设计一个带复合条件连接的查询(6)设计一个视图,并在该视图中完成添加、修改、删除数据的操作。(7)设计一个视图,并在该视图完成两个统计:a.每位读者以及
7、他的借书数量,按借书数量作降序排列 b.每本书以及被借出的次数,按借出次数作降序排列。注意在实验报告中说明查询的目的和对应的语句。三、实验过程及数据记录步骤2(1)查询选修课程学生的学号、姓名、所选课程号、课程名称以及所取得的成绩 查询结果如下:(1) 查询每一门课程及其先修课程,查询结果中显示课程号、课程名和先修课程名 查询结果如下:(3)查询和“刘涛”在一个班级的学生的信息 思考:该查询可用几种方法实现? 查询结果如下:(4) 查询选修了计算机基础课的学生的学号、姓名(分别用连接查询和嵌套查询的方法 实现) 查询结果如下: 1.连接查询 2.嵌套查询(5) 查询没有选修课程的学生的信息 查
8、询结果如下:select * from Students where sno not in (select sno from sc) (6)查询其他班中比“03计算应用1”所有学生入学成绩高的学生的姓名和入学成绩(用两种方法实现) 查询结果如下: 1.方法一:使用ALL关键字 2.方法二:调用内置函数MAX()(7)查询每个学生超过该门课程平均成绩的学号 查询结果如下:(8)查询至少选修了“0311102”学生所选全部课程的学生的学号 查询结果如下:(9)查询既选修了“计算机基础”又选修了“C语言基础”的学生的学号 查询结果如下:步骤3(1) 向course表添加一个新的元组。 查询结果如下:
9、(2) 将“0301102”学生所选的“0000002”课程的成绩改为100分,绩点改为2 查询结果如下: (3) 删除(1)中在course表中添加的记录 查询结果如下:(4) 统计每门课程的平均成绩并将统计结果存入到jxgl数据库中 查询结果如下:思考:如何将students表中班级名 “03计算应用1”改为“03计算机应用1”(可调用函数完成) 查询结果如下:步骤4查询教师的编号、姓名、上课的课程号、课程名称及班级。将该查询定义为一个视图。 查询结果如下: create view teacher_c(tno,tname,cno,cname,class) as select TC.tno
10、,tname,TC.cno,cname,class from Teachers,TC,Course WHERE Teachers.tno=TC.tno and TC.cno=Co go步骤5在第4题定义的视图中完成下列查询(1) 查询“姚明”所上课程和班级。 查询结果如下: select cname,class from teacher_c where tname=姚明 Go(2) 统计每一位教师上课的数量 查询结果如下: select tno,tname,count(cno) as 上课数量 from teacher_c group by tno,tname附加题(1) 设计一个查询,要求用
11、连接和嵌套两种方式完成。 查询读了”三重门”的读者的姓名1. 连接查询: select rname from readers,L_R,BOOKS where readers.rno=L_R.rno and l_r.bookid=books.bookid and bookname=三重门 2. 嵌套查询: select rname from readers where rno in(select rno from l_r where bookid in(select bookid from books where bookname=三重门) 两种查询相同,结果如下:(2) 设计一个查询,要求用外
12、连接的方式完成。 查询借过书的人的信息 select * from readers right outer join l_r on readers.rno=l_r.rno(3)设计一个查询,要求用带exists或not exists相关子查询完成 查询王小丫借过的书名 查询结果如下:(4)设计一个集合查询:查询性别为男性或者spet=信管的学生信息 查询结果如下:(5) 设计一个带复合条件连接的查询 查询每个学生借的书名字和他的姓名 查询结果如下:(6) 设计一个视图,并在该视图中完成添加、修改、删除数据的操作。 将查询学生的学号、姓名、性别、出生日期定义为一个视图。 查询结果如下: CREA
13、TE VIEW readers_students as select rno,rname,rsex,bday from readers添加一个学号为042011、姓名为李伟、性别为男、出生日期1986/7/7 0:00:00的学生的信息。查询结果如下: insert into readers_students(rno,rname,rsex,bday)values(04211,李伟,男,1986/7/7 0:00:00)将学号为04201的学生姓名改为林丽查询结果如下:update readers_studentsset rname=林丽where rno=04201(7) 设计一个视图,并在该视图完成两个统计:a.每位读者以及他的借书数量,按借书数量作降序排列 b.每本书以及被借出的次数,按借出次数作降序排列。四、 实验结果分析 1. 使用选择语句时,选择的属性涉及多个表,要具体指出那个表。 2. 使用嵌套查询的方法时,要依次嵌套表,并学会使用ALL,MAX查询方法。 3. 在进行查询和“刘涛”在一个班级的学生的信息时,将其中的语言编辑为where sname=“刘涛”时出错,将其改为where sname=刘涛时运行正确。SQL 2005软件只能识别英文的单引号而不能识别双引号。五、 实验贡献情况(注意:每个组员必须分开书写,组长分配每个组员的贡献值)
限制150内