数据库理论与技术实验报告2Word文件下载.docx
《数据库理论与技术实验报告2Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库理论与技术实验报告2Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
![数据库理论与技术实验报告2Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/16/a0e3ac02-ab04-4291-875d-9fc87c5947a4/a0e3ac02-ab04-4291-875d-9fc87c5947a41.gif)
1、实验目的:
深入理解连接查询和嵌套查询的语句格式、执行过程,掌握它们的使用方法;
理解数据更新语言INSERT、UPDATE、DELETE语句的格式和作用,掌握它们的使用方法和应用范围;
理解视图的概念,掌握其定义方法和应用方法。
2、实验要求:
在每次实验前,学生必须根据实验指导书设计出实验方案(程序和实验步骤);
在实验过程中要求独立进行程序调试和排错,学会使用在线帮助来解决实验中遇到的问题,同时运用理论的知识来分析问题和解决问题,记录下实验过程和结果。
上机结束后写出实验报告,并对实验过程进行分析和总结。
二、实验内容与步骤
1、在SQLSERVER2005上附加数据库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-身份证号码,
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,resume)
该表是教师基本情况表:
其中tno-教师编号;
tname-教师姓名;
ps-职称;
wday-入校日期;
dept-系别;
pay-工资;
marry-婚否;
resume-简历
要求:
以下
(1)~(9)查询要求写出每个查询的关系代数表达式(表达式书写如嫌麻烦,容许在打印稿上手工补写),相应的SQL语句及查询结果截屏。
这是对我们前一阶段学习的检验,希望每个同学认真做,很关键。
(1)查询选修课程学生的学号、姓名、所选课程号、课程名称以及所取得的成绩
SELECTSC.snoas学号,snameas姓名,SC.cnoas所选课程号,Cameas课程名,gradeas成绩
FromSC,Students,Course
WhereSC.sno=Students.snoandCo=SC.cno;
(2)查询每一门课程及其先修课程,查询结果中显示课程号、课程名和先修课程名
SELECTcnoas课程号,cnameas课程名,cpnoas先修课程名
FROMCourse;
(3)查询和“刘涛”在一个班级的学生的信息
思考:
该查询可用几种方法实现?
SELECT*
FROMStudents
Whereclassin(SELECTclassFROMStudentswheresname=’刘涛’);
(4)查询选修了‘计算机基础’课的学生的学号、姓名(分别用连接查询和嵌套查询的方法实现)SELECTsno,sname
WheresnoIN(SELECTsnoFROMSCWHEREcnoin(SELECTcnofromCourseWHEREcname=’计算机基础’));
(5)查询没有选修课程的学生的信息
WHEREsnoNOTIN(SELECTsnoFROMSC);
(6)查询其他班中比“03计算应用1”所有学生入学成绩高的学生的姓名和入学成绩(用两种方法实现)
SELECTsname,mgrade
Wheremgrade>
(SELECTmax(mgrade)fromStudentswhereclass=’03计算应用1’)andclass<
>
’03计算应用1’
(7)查询每个学生超过该门课程平均成绩的学号
SELECTdistinctsno
FromSCs2
Wheregrade>
(selectavg(grade)
FromSCs1
Whereo=o
Groupbycno)
(8)查询学生“0311102”选修课程的总学分
Selectsno
FromSCx
Wherenotexists
(selectcno
FromSCy
Wheresno=’0311102’andnotexists
(select*
FromSCz
Wherez.sno=x.snoando=o))
(9)查询既选修了“计算机基础”又选修了“C语言基础”的学生的学号
FromSC,Course
WhereSC.cno=Coandcname=’计算机基础’andsnoin
(selectsnofromSC,CoursewhereSC.cno>
Coandcname=’C语言基础’)
(10)同时显示students中学生以及teachers中教师的姓名、性别
Selectsname,ssex,Teachers.tname
FromStudents,Teachers
3、在jxgl中完成下列数据更新
(1)向course表添加一个新的元组。
(具体数据自拟,只要合法)
INSERTINTOcourse(cno,cname,cpno,ccredit)values('
0000038'
'
烹饪课'
001'
10'
)
(2)将“0301102”学生所选的“0000002”课程的成绩改为100分,绩点改为2
UpdateSCsetgrade=‘100’,point=‘2’wherecno=’0000002’
(3)删除
(1)中在course表中添加的记录
DELETEFROMCoursewherecno='
(4)统计每门课程的平均成绩并将统计结果存入到jxgl数据库中
如何将students表中班级名“03计算应用1”改为“03计算机应用1”
4、查询教师的编号、姓名、上课的课程号、课程名称及班级。
将该查询定义为一个视图。
createviewteacher_c(tno,tname,cno,cname,class)
asselectTC.tno,tname,TC.cno,cname,class
fromTeachers,TC,Course
WHERETeachers.tno=TC.tnoandTC.cno=Co
5、在第4题定义的视图中完成下列查询
(1)查询“姚明”所上课程和班级。
selectcname,class
fromteacher_c
wheretname='
姚明'
(2)统计每一位教师上课的数量
selecttno,tname,count(cno)as上课数量fromteacher_c
groupbytno,tname
6、[附加题,可不做,做了有加分]
附加题
(1)设计一个查询,要求用连接和嵌套两种方式完成。
查询读了”三重门”的读者的姓名
1.连接查询:
selectrname
fromreaders,L_R,BOOKS
wherereaders.rno=L_R.rnoandl_r.bookid=books.bookid
andbookname='
三重门'
2.嵌套查询:
fromreaders
wherernoin(selectrnofroml_r
wherebookidin(selectbookidfrombooks
wherebookname='
))
两种查询相同,结果如下:
(2)设计一个查询,要求用外连接的方式完成。
查询借过书的人的信息
select*
fromreadersrightouterjoinl_r
onreaders.rno=l_r.rno
(3)设计一个查询,要求用带exists或notexists相关子查询完成
查询王小丫借过的书名
查询结果如下:
(4)设计一个集合查询:
例如:
查询性别为男性或者spet='
信管'
的学生信息
(5)设计一个带复合条件连接的查询
查询每个学生借的书名字和他的姓名
(6)设计一个视图,并在该视图中完成添加、修改、删除数据的操作。
将查询学生的学号、姓名、性别、出生日期定义为一个视图。
CREATEVIEWreaders_students
asselectrno,rname,rsex,bday
fromreaders
添加一个学号为042011、姓名为李伟、性别为男、出生日期1986/7/70:
00:
00的学生的信息。
查询结果如下:
insertintoreaders_students(rno,rname,rsex,bday)
values('
04211'
李伟'
男'
1986/7/70:
00'
将学号为04201的学生姓名改为林丽
updatereaders_students
setrname='
林丽'
whererno='
04201'
(7)设计一个视图,并在该视图完成两个统计:
a.每位读者以及他的借书数量,按借书数量作降序排列b.每本书以及被借出的次数,按借出次数作降序排列
三、实验贡献情况(注意:
每个组员必须分开书写,组长分配每个组员的贡献值)
刘慧: