《数据库原理》实验指导书.docx
《《数据库原理》实验指导书.docx》由会员分享,可在线阅读,更多相关《《数据库原理》实验指导书.docx(11页珍藏版)》请在冰豆网上搜索。
《数据库原理》实验指导书
《数据库原理实验指导书》
河南科技大学电子信息工程学院
目录
实验规则2
实验报告要求3
基本实验方法3
实验环境3
实验一:
数据定义及更新语句练习4
实验二:
简单查询和连接查询6
实验三:
分组查询和嵌套查询8
实验四:
视图操作和数据控制10
实验五:
触发器和存储过程12
选作题目14
实验规则
为了顺利完成实验教学任务,确保人身设备安全,培养严谨、踏实、实事求是的科学作风和爱护国家财产的优良品质,特制定以下实验规则:
1、实验纪律
(1)在实验室不得做和实验无关的事情。
(2)遵守纪律,不迟到,不旷课。
(3)不能拆卸硬件,更不能拿走实验设备或仪器。
(4)保持实验室安静、整洁,爱护公物。
2、实验过程
(1)预习实验内容。
自行设计SQL语句。
(2)上机操作。
每执行一句记录执行情况,主要是错误信息和错误原因。
(3)检查操作结果是否正确。
(4)根据实验过程的记录书写实验报告。
实验报告要求
1、报告用纸采用统一的河南科技大学实验报告用纸,不得用别的纸张代替。
2、实验报告封面内容
实验名称:
(如实验一数据库创建)
班级名称:
(如计031班)
学生学号:
学生姓名:
实验时间:
3、实验报告内容
见各具体实验项目的要求。
基本实验方法
本实验要求熟悉SQLServer环境和数据库的相关知识。
实验环境
MicrosoftSQLServer2000
实验一:
数据定义及更新语句练习
一、实验目的:
熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。
二、预习要求:
实验前复习讲授过的有关创建数据库、基本表的SQL语句,预习SQLServer2000环境,特别是资源管理器和查询分析器的相关用法。
三、实验内容:
(一)用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)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
(二)分别使用插入、删除、修改的方式更新基本表中的数据。
四、实验方法和步骤:
(一)使用MicrosoftSQLServer企业管理器和查询分析器建立数据库mySPJ:
1.打开“开始->程序->MicrosoftSQLServer->企业管理器”;
2.在企业管理器左边的树标签中依次打开“MicrosoftSQLServer->SQLServer组->(local)(WindowsNT)->数据库”,(local)(WindowsNT)前的红色标记转化为绿色标记表明NT服务已启动;
3.从企业管理器的“工具”菜单中选择“SQL查询分析器”,打开查询分析器后,在其窗口书写创建数据库mySPJ的SQL语句,点击执行按钮(或F5键)执行该SQL语句;
4.在企业管理器左边的树标签中查看数据库是否建立成功。
(二)在数据库mySPJ中建立S,P,J,和SPJ四个基本表:
按照实验内容给出的基本表结构在查询分析器窗口中书写SQL语句分别建立各表,并设置主键和外键约束;
(三)更新表数据:
1.利用Insert语句将习题中给出的示例记录插入各表。
2.利用Update更新表中的记录:
①将p表中的所有红色零件的重量增加5。
②将spj表中所有天津供应商的QTY属性值减少10。
用子查询。
3.利用Delete语句删除p表中的所有红色零件的记录。
4.SQL语句执行后返回基本表查看更新后的结果,如果与期望不符,分析原因并记录在实验报告中。
五、思考题:
(一)在为各表设定关键字时弹出的页面中有关键字和索引选项,试通过给基本表设定这两个项目并说明二者的区别。
(二)在基本表中输入数据时,注意数据与字段的数据类型和长度以及能否为空的属性是否一致,保存时如有错误分析错误原因,及时改正并将错误报告写在实验报告中。
六、实验报告要求:
(一)实验目的:
熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。
(二)实验内容:
需要创建的数据库及其四个基本表:
零件表、供应商表、工程表、供应关系表的表结构、创建过程。
(三)完成情况(附上设计的SQL语句)。
(四)实验结果:
如果是查询语句,将查询结果记录列出来,其它可以不写。
(五)问题及解决:
首先写出执行语句不成功的时候系统报告的错误信息。
然后分析错误原因,并给出解决办法。
(六)回答思考题提出的问题,
(七)实验总结:
心得体会,建议等。
实验二:
简单查询和连接查询
一、实验目的:
熟练掌握用SQL语句实现的简单查询和多个数据表连接查询。
二、预习要求:
实验前复习讲授过的有关简单查询与多表查询的知识,编写相应的SQL语句。
三、实验内容:
(一)完成下面的简单查询:
①查询所有“天津”的供应商明细;
②查询所有“红色”的14公斤以上的零件。
③查询工程名称中含有“厂”字的工程明细。
(二)完成下面的连接查询:
①等值连接:
求s表和j表的相同城市的等值连接。
②自然连接:
查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
③笛卡尔积:
求s和p表的笛卡尔积
④左连接:
求j表和spj表的左连接。
⑤右连接:
求spj表和j表的右连接。
四、实验方法和步骤:
参照实验一中给出的使用MicrosoftSQLServer企业管理器和SQL查询分析器的方法,将实验内容中所要求的查询项目依次用SQL语句实现,并记录下执行结果。
五、思考题:
查看实验内容2中左连接和右连接的执行结果是否一致,为什么?
六、实验报告要求:
(一)实验目的:
熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。
(二)实验内容:
需要创建的数据库及其四个基本表:
零件表、供应商表、工程表、供应关系表的表结构、创建过程。
(三)完成情况(附上设计的SQL语句)。
(四)实验结果:
如果是查询语句,将查询结果记录列出来,其它可以不写。
(五)问题及解决:
首先写出执行语句不成功的时候系统报告的错误信息。
然后分析错误原因,并给出解决办法。
(六)回答思考题提出的问题,
(七)实验总结:
心得体会,建议等。
实验三:
分组查询和嵌套查询
一、实验目的:
熟练掌握用SQL语句实现多个数据表的分组查询和嵌套查询。
二、预习要求:
实验前复习讲授过的有关分组查询和嵌套查询的知识,编写相应的SQL语句。
三、实验内容:
(一)分组查询:
1.求各种颜色零件的平均重量。
2.求北京供应商和天津供应商的总个数。
3.求各供应商供应的零件总数。
4.求各供应商供应给各工程的零件总数。
5.求使用了100个以上P1零件的工程名称。
6.求各工程使用的各城市供应的零件总数。
(二)嵌套查询:
1.in连接谓词查询:
①查询没有使用天津供应商供应的红色零件的工程名称。
②查询供应了1000个以上零件的供应商名称。
(having)
2.比较运算符:
求重量大于所有零件平均重量的零件名称。
3.Exists连接谓词:
1查询供应J1的所有的零件都是红色的供应商名称。
2至少用了供应商S1所供应的全部零件的工程号JNO。
四、实验方法和步骤:
参照实验一中给出的使用MicrosoftSQLServer企业管理器和SQL查询分析器的方法,将实验内容中所要求的查询项目依次用SQL语句实现,并记录下执行结果。
五、思考题:
(一)嵌套查询中的in连接谓词查询,关键字in可以直接用any代替么?
什么情况下in和any可以互相代替?
(二)嵌套查询中的内查询为外查询返回的内容是什么?
是表达式?
视图?
还是物理数据集合?
六、实验报告要求:
(一)实验目的:
熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。
(二)实验内容:
需要创建的数据库及其四个基本表:
零件表、供应商表、工程表、供应关系表的表结构、创建过程。
(三)完成情况(附上设计的SQL语句)。
(四)实验结果:
如果是查询语句,将查询结果记录列出来,其它可以不写。
(五)问题及解决:
首先写出执行语句不成功的时候系统报告的错误信息。
然后分析错误原因,并给出解决办法。
(六)回答思考题提出的问题,
(七)实验总结:
心得体会,建议等。
实验四:
视图操作和数据控制
一、实验目的:
熟练掌握用SQL语句实现视图操作和数据控制。
二、预习要求:
实验前复习讲授过的有关视图操作和数据控制的知识,编写相应的SQL语句。
三、实验内容:
(一)定义如下视图:
①查询北京的供应商的编号、名称和城市。
②查询S1供应商的所有供应明细。
③查询各工程名称使用的各种颜色零件的个数。
查询上面定义的视图。
(二)数据控制:
①使用GRANT把对S表查询的权利授予WangLi。
②使用GRANT把对P表查询、插入、修改、删除的权利授予LiMing。
③使用REVOKE把LiMing对P表插入、删除的权利回收。
四、实验方法和步骤:
参照实验一中给出的使用MicrosoftSQLServer企业管理器和SQL查询分析器的方法,将实验内容中所要求的查询项目依次用SQL语句实现,并记录下执行结果。
五、思考题:
实验内容中的哪些视图可以用来更新记录?
六、实验报告要求:
(一)实验目的:
熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。
(二)实验内容:
需要创建的数据库及其四个基本表:
零件表、供应商表、工程表、供应关系表的表结构、创建过程。
(三)完成情况(附上设计的SQL语句)。
(四)实验结果:
如果是查询语句,将查询结果记录列出来,其它可以不写。
(五)问题及解决:
首先写出执行语句不成功的时候系统报告的错误信息。
然后分析错误原因,并给出解决办法。
(六)回答思考题提出的问题,
(七)实验总结:
心得体会,建议等。
实验五:
触发器和存储过程
一、实验目的:
理解触发器和存储过程的含义,掌握用SQL语句实现触发器和存储过程的编写,并初步掌握什么情况下使用事务。
二、预习要求:
存储过程和触发器的相关概念,事务的相关概念,编写相应的SQL语句。
三、实验内容:
(一)为S表的删除操作定义一个触发器,在删除一个供应商记录时,将这个供应商的所有供应情况从spj表中删除。
(二)有一个小型的图书管理数据库,包含的表为:
bookstore(bookid,bookname,bookauthor,purchasedate,state);--图书库存表
borrowcard(cardid,ownername);--借书证表
borrowlog(cardid,bookid,borrowdate,returndate);--借书记录表
写一个存储过程,实现借书操作,要求有事务处理。
(1)读者借书,要先设置书籍不在库标志state(借出),然后增加借书记录,在同一事务中完成。
(2)要求在事务执行过程中引入错误触发事件,以此体会事务的错误保护机制和事务编程的作用。
四、实验方法和步骤:
(一)在查询分析器中编写实现上述功能的触发器,参考CreateTrigger语法。
(二)参考CREATEPROCEDURE语句。
在事务执行过程中引入错误触发事件,可以考虑在增加借书记录时违反实体完整性或参照完整性,以此体会事务的错误保护机制。
五、思考题:
如何通过系统的设置实现类似的功能,而不需触发器?
六、实验报告要求:
(一)实验目的:
熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。
(二)实验内容:
需要创建的数据库及其四个基本表:
零件表、供应商表、工程表、供应关系表的表结构、创建过程。
(三)完成情况(附上设计的SQL语句)。
(四)实验结果:
如果是查询语句,将查询结果记录列出来,其它可以不写。
(五)问题及解决:
首先写出执行语句不成功的时候系统报告的错误信息。
然后分析错误原因,并给出解决办法。
(六)回答思考题提出的问题,
实验总结:
心得体会,建议等。
选作题目
选作题目1:
用vb,delphi或者c++builder设计一个数据库应用程序,实现一个简单的成绩管理,建立三个表:
学生表S,课程表C和成绩表SC。
要求实现的功能:
(1)维护学生信息;
(2)维护课程信息;(3)录入成绩;(4)查询一个学生的所有课程成绩;(5)查询每门课程的平均成绩。
(6)打印学生成绩报表;(7)打印每门课程的平均成绩报表。
选作题目2:
自由结合以(5-6)人为小组完成一个数据库系统设计的小课题。
要求用ERWIN工具对数据库进行建模。