河南科技大学数据库实验报告_第1页
河南科技大学数据库实验报告_第2页
河南科技大学数据库实验报告_第3页
河南科技大学数据库实验报告_第4页
河南科技大学数据库实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一:数据定义及更新语句练习一实验目的:熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。二实验内容:(一)用SQL语句建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(教材第二章习题5中的四个表),要求实现关系的三类完整性。S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY)供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。零件表P由零件代码(PNO)、零件名(PNAME)、颜

2、色(COLOR)、重量(WEIGHT)组成。工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商 供应某种零件 给某工程项目的数量为QTY。(二)在数据库mySPJ中建立S,P,J,和SPJ四个基本表:按照实验内容给出的基本表结构在查询分析器窗口中书写SQL语句分别建立各表,并设置主键和外键约束;三完成情况USE masterGOCREATE DATABASE myspjON ( NAME = TEXTS_dat, FILENAM

3、E = F:数据库实验myspjdat.mdf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )LOG ON( NAME = TEXTS_log, FILENAME = F:数据库实验myspjlog.ldf, SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )bGOcreate table s(sno char(9) primary key,sname char(20),statu int,city char(20),);create table p(pno char(9) primary key,pname ch

4、ar(20),color char(20),weigh int,);create table j(jno char(9) primary key,jname char(20),city char(20),);create table spj(sno char(9),pno char(9),jno char(9),qty int,primary key(sno,pno,jno),foreign key (sno)references s(sno),foreign key (pno)references p(pno),foreign key (jno)references j(jno),);1.利

5、用Insert 语句将习题中给出的示例记录插入各表。insert into svalues(s1,精益,20,天津);insert into svalues(s2,盛锡,10,北京);insert into svalues(s3,东方红,30,北京);insert into svalues(s4,丰泰盛,20,天津);insert into svalues(s5,为民,30,上海);insert into pvalues(p1,螺母,红,12);insert into pvalues(p2,螺栓,绿,17);insert into pvalues(p3,螺丝刀,蓝,14);insert int

6、o pvalues(p4,螺丝刀,红,14);insert into pvalues(p5,凸轮,蓝,40);insert into pvalues(p6,齿轮,红,30);insert into jvalues(j1,三建,北京);insert into jvalues(j2,一汽,长春);insert into jvalues(j3,弹簧厂,天津);insert into jvalues(j4,造船厂,天津);insert into jvalues(j5,机车厂,唐山);insert into jvalues(j6,无线电厂,常州);insert into jvalues(j7,半导体厂,

7、南京);insert into spjvalues(s1,p1,j1,200);insert into spjvalues(s1,p1,j3,100);insert into spjvalues(s1,p1,j4,700);insert into spjvalues(s1,p2,j2,100);insert into spjvalues(s2,p31,j1,400);insert into spjvalues(s2,p3,j2,200);insert into spjvalues(s2,p3,j4,500);insert into spjvalues(s2,p3,j5,400);insert

8、into spjvalues(s2,p5,j1,400);insert into spjvalues(s2,p5,j2,100);insert into spjvalues(s3,p1,j1,200);insert into spjvalues(s3,p3,j1,200);insert into spjvalues(s4,p5,j1,100);insert into spjvalues(s4,p6,j3,300);insert into spjvalues(s4,p6,j4,200);insert into spjvalues(s5,p2,j4,100);insert into spjvalu

9、es(s5,p3,j1,200);insert into spjvalues(s5,p6,j2,200);2.利用Update更新表中的记录:1将p表中的所有红色零件的重量增加5。update pset weigh=weigh+5where color=红;2将spj表中所有天津供应商的QTY属性值减少10。用子查询。并记录在实验报告中。update spjset qty=qty-10where sno in(select sno from s where city=天津);3.利用Delete语句删除p表中的所有红色零件的记录。delete from p where color=红;思考题(

10、一) 在为各表设定关键字时弹出的页面中有关键字和索引选项,试通过给基本表设定这两个项目并说明二者的区别。答:关键字受主键影响,而索引不受主键影响(二) 在基本表中输入数据时,注意数据与字段的数据类型和长度以及能否为空的属性是否一致,保存时如有错误分析错误原因,及时改正并将错误报告写在实验报告中。七实验总结:心得体会,建议等。答:从这次实验中我明白一个道理:细节决定成败,尤其是要注意sql语言与c语言的差别。 实验二:简单查询和连接查询一实验目的:熟练掌握用SQL语句实现的简单查询和多个数据表连接查询。二实验内容:(一) 完成下面的简单查询:查询所有“天津”的供应商明细;查询所有“红色”的14公

11、斤以上的零件。查询工程名称中含有“厂”字的工程明细。(二) 完成下面的连接查询:等值连接:求s表和j表的相同城市的等值连接。自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。笛卡尔积:求s和p表的笛卡尔积左连接:求j表和spj表的左连接。右连接:求spj表和j表的右连接。三完成情况(三) 完成下面的简单查询:询所有“天津”的供应商明细; select *from s where city=天津;查询所有“红色”的14公斤以上的零件。select pnofrom p where color=红and weigh14;查询工程名称中含有“厂”字的工程明细。

12、select *from j where jname like%厂;(四) 完成下面的连接查询:值连接:求s表和j表的相同城市的等值连接。 select s.*,j.*from s,jwhere s.city=j.city;自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。select s.sname,p.pname ,j.jname from s,p,j,spjwhere s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno;笛卡尔积:求s和p表的笛卡尔select *from s,p左连接:求j表和sp

13、j表的左连接。select j.*,sno,pno,qtyfrom j left outer join spj on (j.jno=spj.jno);右连接:求spj表和j表的右连接。select j.*,sno,pno,qtyfrom spj right outer join j on (j.jno=spj.jno);回答思考题提出的问题,查看实验内容2中左连接和右连接的执行结果是否一致,为什么?答:不一样,左连接是输出第一个表的全部,二右连接是输出第二个表的全部。七实验总结:心得体会,建议等。答:从这次实验中我明白一个道理:细节决定成败,尤其是要注意sql语言与c语言的差别。实验三:分组查

14、询和嵌套查询1、 实验目的:熟练掌握用SQL语句实现多个数据表的分组查询和嵌套查询。2、 实验内容:完成下面的查询:(一) 完成下面的查询:1、分组查询:1 求各种颜色零件的平均重量。 select color,AVG(weigh)weight from p group by color;2 求北京供应商和天津供应商的总个数。 select COUNT(city)个数 from s where city=北京or city=天津;3 求各供应商供应的零件总数。 select sno,sum(qty)数目 from spj group by sno order by 数目 asc;4 求各供应商

15、供应给各工程的零件总数。 select sno,jno,sum(qty)数目 from spj group by sno,jno;5 求使用了100个以上P1零件的工程名称。 select jname from j where jno in ( select jno from spj where pno=p1 and qty100 );6 求各工程使用的各城市供应的零件总数。 select jname from j where jno in ( select jno from spj where pno=p1 and qty100 );(二) 嵌套查询:1. in连接谓词查询: 查询没有使用天

16、津供应商供应的红色零件的工程名称。 select jname from j where jno not in ( select jno from s,p,spj where spj.sno=s.sno and spj.pno=p.pno and p.color=红and s.city=天津 ) 查询供应了1000个以上零件的供应商名称。(having) select sname from s where sno in ( select sno from spj group by sno having SUM(qty)1000 )2. 比较运算符:求重量大于所有零件平均重量的零件名称。 sele

17、ct pname from p where weigh( select AVG(weigh) from p3. )Exists连接谓词: 查询供应J1的所有的零件都是红色的供应商名称。 select sname from s where exists( select * from p,spj where p.pno=spj.pno and spj.sno=s.sno and jno=j1and color=红); 至少用了供应商S1所供应的全部零件的工程号JNO。实验五:触发器和存储过程一、 实验报告要求:(一) 实验目的: 理解触发器和存储过程的含义,掌握用SQL语句实现触发器和存储过程的编

18、写,并初步掌握什么情况下使用事务。(二) 实验内容:有一个小型的图书管理数据库,包含的表为:bookstore(bookid,bookname,bookauthor,purchasedate,state);-图书库存表borrowcard(cardid,ownername);-借书证表borrowlog(cardid,bookid,borrowdate,returndate);-借书记录表写一个存储过程,实现借书操作,要求有事务处理。(1)读者借书,要先设置书籍不在库标志state(借出),然后增加借书记录,在同一事务中完成。 (2)要求在事务执行过程中引入错误触发事件,以此体会事务的错误保护

19、机制和事务编程的作用。(3)要求用触发器实现表的完整性控制。(三)完成情况(附上设计的SQL语句)。建立数据库:create database bookstoruse bookstorcreate table bookstore(bookid int,bookname char(20),bookauthor char(20),purchasedate char(20),stat char(6),primary key(bookid),Check(stat in(在库,不在库),);create table borrowcard(cardid int primary key,ownername

20、char(20),);create table borrowlog(cardid int,bookid int,borrowdate char(20),returndate char(20),primary key(cardid,bookid),foreign key(cardid)references borrowcard(cardid),foreign key(bookid)references bookstore(bookid),); 存储过程:create procedure dbo.jieshu(cardid int,bookid int,borrowdate char(20),returndate char(20)asbegin transactioninsertinto borro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论