DB2302690梁猛.docx
《DB2302690梁猛.docx》由会员分享,可在线阅读,更多相关《DB2302690梁猛.docx(18页珍藏版)》请在冰豆网上搜索。
![DB2302690梁猛.docx](https://file1.bdocx.com/fileroot1/2023-6/6/3941ec4c-7da5-458b-8ea3-4fa5c8b43da9/3941ec4c-7da5-458b-8ea3-4fa5c8b43da91.gif)
DB2302690梁猛
《数据库原理》实验报告
题目:
实验二
基本表的数据操作
学号
姓名
班级
日期
2014302690
梁猛
10021401
16/10/14
一、实验内容、步骤以及结果
1.在图形用户界面中对表中的数据进行更新。
(6分,每小题2分)
(1)按照实验一图2.1-图2.4中所示数据,输入SPJ数据库所含四张表中的数据。
(2)修改S表的任意一条数据
(3)删除S表的任意一条数据。
实验具体步骤:
(1)按照实验一图2.1-图2.4中所示数据,输入SPJ数据库所含四张表中的数据。
结果如图所示:
S表
P表
J表
SPJ表
(2)修改S表中任意一条数据
注意:
修改第一行数据(把天津改为上海)
结果如图所示:
(3)删除S表中任意一条数据
注意:
删除第一行数据(上海删除)
结果如图:
2.针对SPJ数据库,用SQL语句完成下面的数据更新。
(12分,每小题3分)
(1)第五版教材第三章第5题的8-11小题。
具体实验步骤:
第8:
把全部红色零件改为蓝色
代码如下:
updateP
setcolor='蓝'
wherecolor='红'
结果如图:
第9:
由s5供给J4的零件P6改为由S3供应
代码如下:
updateSPJ
setsno='S3'
wheresno='s5'andjno='J4'andpno='P6'
结果如图:
第10:
从供应商关系中删除S2的记录,并从相应的供应关系中删除相应的记录
代码如下:
delete
fromS
wheresno='s2'
delete
fromspj
wheresno='s2'
结果如图:
S表
SPJ表
3.针对SPJ数据库,用SQL语句完成下面的数据查询。
(52分,每小题4分)
(1)第五版教材第三章第4题。
(5道小题)
(2)第五版教材第三章第5题的1-7小题。
(7道小题)
(3)查询这样的工程:
供给该工程的零件P1的平均供应量大于供给工程J1的任何一种零件的最大供应量。
实验具体步骤:
(1)第五版教材第三章第4题。
(5道小题)
--1.求供应工程J1零件的供应商号码sno:
SQL代码:
selectdistinctsno
fromspj
wherejno='j1'
结果如图:
--2.求供应工程J1零件p1的供应商号码sno:
SQL代码:
selectsno
fromspj
wherejno='j1'andpno='p1'
结果如图:
--3.求供应工程j1零件为红色的供应商号码sno:
SQL代码:
selectspj.sno
fromspj,p
wherep.color='红'andp.pnO=spj.pnoandspj.jno='j1'
结果如图:
--4.求没有使用天津供应商生产的红色零件的工程号jno:
SQL代码:
selectdistinctspj.jno
fromspj
except
selectdistinctspj.jno
fromspj
whereEXISTS
(select*
fromS,P
whereS.city='天津'
andp.color='红'andspj.pno=p.pnoandspj.sno=s.sno
)
结果如图:
--5.求至少使用了供应商s1所供应的全部零件的工程号jno:
SQL代码:
selectdistinctjno
fromspjspjx
wherenotexists
(select*
fromspjspjy
wherespjy.sno='s1'andnotexists
(
select*
fromspjspjz
wherespjx.jno=spjz.jnoandspjz.pno=spjy.pno
)
)
结果如图:
(2)第五版教材第三章第5题的1-7小题。
(7道小题)
---1.找出全部供应商所在城市和姓名
代码如下:
selectsno,sname,city
fromS
结果如图:
--2.找出所有零件的名称颜色和重量
代码如下:
selectpno,pname,color,weight
fromp
结果如图:
--3.找出使用供应商S1所供应零件的工程号码
代码如下:
selectdistinctjno
fromspj
wherespj.sno='s1'
结果如图:
--4.找出工程项目J2使用的各种零件的名称及数量
代码如下:
selectpname,sum(qty)
fromspj,p
wherespj.jno='j2'andp.pno=spj.pno
groupbypname
结果如图:
--5.找出上海厂商所供应的所用零件的号码
代码如下:
selectpno
Fromspj
wherespj.snoin
(selectdistinctsno
froms
wheres.city='上海'
)
结果如图:
--6.找出使用上海产的零件的工程名
代码如下:
selectdistinctjname
fromspj,j
wherespj.jno=j.jnoandspj.snoin
(selectdistinctsno
froms
wheres.city='上海'
)
结果如下:
--7.找出没有使用天津产的零件的工程号码
代码如下:
selectjno
fromspj
except
selectdistinctjno
fromspj
wherespj.snoin
(selectdistinctsno
froms
wheres.city='天津'
)
结果如图:
(3)查询这样的工程:
供给该工程的零件P1的平均供应量大于供给工程J1的任何一种零件的最大供应量。
代码如下:
selectjno
fromspj
wherepno='p1'
groupbyjno
havingavg(qty)>
(selectmax(qty)
fromspj
wherespj.jno='j1'
)
结果如图:
4.针对Student数据库用SQL语句完成下面的数据查询。
(12分,每小题4分)
(1)查询不选修“C语言”课程的学生学号。
(2)查询每个学生已经获得的学分的总分(成绩及格表示获得该门课的学分),并按照所获学分由高到低的顺序输出学号,姓名,所获学分。
(3)查询这样的学生姓名:
该学生选修了全部课程并且其中一门课在90分以上。
具体实验步骤:
(1)求不选修C语言课程的学生学号。
代码如下:
selectsno
froms
except
selectsno
fromsc
wherecno=
(selectcno
fromc
wherecname='c语言'
)
结果如下:
(2)查询每个学生已经获得的学分的总分(成绩及格表示获得该门课的学分),并按照所获学分由高到低的顺序输出学号,姓名,所获学分。
代码如下:
SelectS.sno,sname,sum(ccredit)totalcredit
FromS,SC,C
where
S.sno=SC.snoandSC.cno=C.cnoandgrade>=60
groupbyS.sno,sname
orderbytotalcredit
结果如下:
(3)查询这样的学生姓名:
该学生选修了全部课程并且其中一门课在90分以上。
代码如下:
selectsname
froms
wheresnoin
(selectsno
fromsc
wheresnoin
(selectsno
froms
wherenotexists
(select*
fromc
wherenotexists
(select*
fromsc
wheresno=s.snoandcno=o
)
)
)
groupbysno
havingmax(grade)>90
)
结果如下:
没有结果
5.针对Student数据库用至少三种不同的SQL语句进行查询:
查询选修了课程名为“数据库原理”的学生学号和姓名,然后自己设计实验,用数据比较分析三种查询的效率。
(18分)
第一种:
selectS.sno,snamefromS,SC,C
whereS.sno=SC.snoandSC.cno=C.cnoandcname='数据库'
第二种:
selectS.sno,snamefromSwheresnoin(
selectsnofromSCwherecnoin(
selectcnofromCwherecname='数据库'
)
)
第三种:
selectdistinctS.sno,sname
fromS,SC,C
whereS.sno=SC.snoandSC.cnoin
(
selectcnofromCwherecname='数据库'
)
结论:
第二种效率最高。
二、实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)
(1)遇到的问题最让我难受的是数据库中表被修改后,找不到撤销的方法,只能重新还原或者重新输入修改。
还有就是表中列的属性后来修改老是弹出错误,提示不允许修改属性值,最后通过网络查询才解决了问题。
(2)SQL语言很符合人思考逻辑,但是这需要不断地练习才能举足轻重的编出代码,这次实验让我感受到了编程的多样化以及效率的提高。
(3)通过这次实验,使我加深了对数据库的兴趣,锻炼了动手操作能力。
希望在以后的实验课上经过努力是自己的数据库知识越来越丰富,能力越来越强。
批阅者:
批阅日期:
实验成绩:
批注: