《数据库原理及应用实验教案.doc》由会员分享,可在线阅读,更多相关《数据库原理及应用实验教案.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 攀枝花学院 Panzhihua University教 案2011 2012 学年度第 2 学期课 程 名 称 数据库原理 学 时(学 分) 14适 用 班 级 09网络、09信本 授 课 教 师 刘继光 教 师 职 务 教 学 单 位 计算机学院 教 务 处 制实验教案编写说明1、实验教案的编写要求参照攀枝花学院教案编写规范(攀院教200704号)执行。2、实验教案格式可按附后“实验教案”格式采用手写或打印。3、实验教案的基本内容可包括:教学目的与要求、教学重点与难点、仪器设备及用具、教学过程(含实验预习检查实验原理及方法仪器设备介绍实验内容及注意事项实验指导要点检查实验结果)、实验预做记
2、录(含原始实验数据记录数据处理及结果分析)、实验预习要求、实验报告要求、参考书目、后记等相关内容。4、实验教案编写应在坚持教案编写基本要求的基础上,充分考虑教师自身条件和学科的差异,针对教师、学科、学生以及教学情景的不同,编写出形式多样,能体现教学风格、具有特色的教案,促进教案的创新。5、教案编写水平的高低,很大程度上取决于教师钻研教材与实验方法,研究学生实际状况和设计教学方法的水平,取决于教师对本学科知识掌握的深度和广度以及教师教育思想的端正更新。因此,教师应努力提高自身素质,提高教师教案编写水平。实验教案实验课程名称数据库原理及应用实验学时16独立设课 非独立设课实验课类别1.基础 2.专
3、业基础 3.专业 4.其它任课教师刘继光职称高级工程师授课对象年级:09 专业:信本 网络 班级:09本科专科教材和主要参考资料教材:数据库系统概论(第三版),萨师煊等著,高等教育出版社,2000主要参考书:数据库系统及应用,崔巍等,高等教育出版社,2005教学目的和教学要求通过本课程的学习,主要巩固课堂的理论教学成果,并加强学生动手实践能力培养,为今后的进一步学习或工作奠定一定的实践基础。学生应初步具备数据库的分析、设计、实现能力,能够运用所学的数据库知识编写小型的基于数据库的应用系统。教学重点和教学难点重点:数据库基础理论知识的学习;数据库设计理论知识的学习;数据库SQL语句的学习与应用。
4、难点:数据库基础理论知识的学习;数据库设计理论知识的学习;数据库SQL语句的学习与应用;数据库的分析、设计能力的培养。 教学进程安排课次实验项目(实验内容)学时备 注1数据库基本操作实验22数据库完整性约束实验23简单数据查询24连接数据查询25数据库DML语句操作实验26数据库事务及并发控制27数据库设计28学生成绩管理系统2课题(项目)名称: 数据库基本操作实验计划学时: 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日 第 周 星期 第 节实验一实验名称:数据库基本操作实验实验学时:2实验目的:1、通过实验,加深学生对数据库基本概念和理论的理解与
5、掌握,能够更好的理论联系实际。2、通过实验,使学生掌握如下的数据库操作的基本技能与方法: 创建、修改、删除数据库 创建、修改、删除数据库表; 创建数、删除数据库表的索引;实验内容及要求(用企业管理期或查询分析器完成):一、 创建、修改、删除数据库;(分别用企业管理器、查询分析器完成)1、 创建数据库“MyDB”,该数据库有两个数据文件,一个日志文件。数据文件中的一个件初始大小30M,最大值50M,文件属性为自动增长,另一个固定尺寸为20M。日志文件初始大小为50M,每次增长10M。2、 修改数据库“MyDB”,删除固定大小的数据文件,将数据库名称改为“TESTDB”,增加一个数据文件,数据文件
6、位于E:,其他参数默认。3、 删除创建的数据库。二、 熟悉数据库表的定义、修改操作1、在Northwind数据库下建立数据库表TEST,表结构为2、将数据表名称更改为TEST1。3、将CompanyName的字段长度缩小为30。4、添加ShippID为主键。5、将ShippID数据类型改为CHAR(4)。6、将ShippID列名改为SID。7、添加列名TestCol,数据类型为VARCHAR(32)。8、删除列TestCol9、调换CompanyName、Phone列的顺序。三、 熟悉数据库表索引的建立1、为上述表建立聚簇索引(ShipperID)与非聚簇(CompanyName)唯一升序索引
7、。输入如下两条数据进行测试(观察现象)。1 A 2 A 2、删除CompanyName列上的索引,在CompanyName建立聚簇索引。3、删除该数据库表四、 思考与练习1. 唯一性索引有何作用?聚簇索引与非聚簇有何区别?2. 创建数据库时,如何创建多个文件组?3. 更改数据库表结构可能导致哪些问题?实验报告要求:1. 实验目的2. 实验内容及步骤3. 实验习题的源程序清单4. 写出在实验过程中遇到的问题及解决方法5. 要求字迹端正、条理清晰、概念正确 课题(项目)名称: 数据库完整性约束实验计划学时: 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日
8、 第 周 星期 第 节实验二实验名称:数据库完整性约束实验实验学时:2实验目的:数据库完整性是保证数据库中数据正确性的重要手段,通过实验,使学生加深对数据库完整性的基本概念的理解与掌握,并能够熟练创建、修改、删除各类完整性约束,从而达到灵活应用的目的。 实体完整性约束验证; 引用完整性验证; 唯一约束; 非空约束; 缺省值; 检查约束;实验内容及要求:五、 数据库完整性约束试验。试验所使用的数据库表结构如下:Student(学生记录表)SNO(学号) CHAR(10) PRIMARY KEYSNAME(姓名) VARCHAR(16)SEX(性别) VARCHAR(2)DEPT(专业号) VAR
9、CHAR()AGE(年龄) SMALLINTCourse(课程表)CNO(课程号) CHAR(4) PRIMARY KEYCNAME(课程名) VARCHAR(32)SCORE(学分) SMALLINTSC(学生选课成绩表)SNO(学号) CHAR(7) PRIMARY KEYCNO(课程号) CHAR(4) PRIMARY KEYGRADE(成绩) INT使用查询分析器,建立数据库SC,数据库参数默认。建立Student、Course、SC数据库表,并完成下面题目:1、“课程名”属性必须取唯一值。插入重复值,出现什么现象,为什么?2、“课程名”也不能取空值。插入空值,出现什么现象,为什么?3
10、、“学分”属性只能取值1,2,3,4,如果没有输入学分信息,学分的缺省值为3。插入非1,2,3,4的值,出现什么现象,为什么?4、“学号”的前两位为“20”,第三位与第四位为数字。插入前两位不是“20”的学号,出现什么现象,为什么?5、“GRADE”大于等于0并且小于等于100。插入分数不在0100之间的值,出现什么现象,为什么?6、SC中,SNO、CNO为外键,请建立外键约束。插入SNO或CNO没有在Student和Course中出现的记录,出现什么现象,为什么?六、 思考与练习。1. 外键约束约束有何作用?外键取值有何要求?2. 实体完整性通过什么机制保证?3. 唯一性约束与主键有何区别?
11、4. SQL Server中唯一性约束通过什么机制保证?实验报告要求:6. 实验目的7. 实验内容及步骤8. 实验习题的源程序清单9. 写出在实验过程中遇到的问题及解决方法10. 要求字迹端正、条理清晰、概念正确课题(项目)名称: 数据库DML语句操作实验计划学时: 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日 第 周 星期 第 节实验三实验名称:数据库DML语句操作实验实验学时:2实验目的:数据库更新操作是SQL语句的重要组成部分,通过试验,加深学生对数据更新操作基本概念的理解与掌握,从而达到灵活应用的目的。实验内容及要求:试验所使用的数据库表结
12、构如下:Student(学生记录表)SNO(学号) CHAR(10) PRIMARY KEY CHECK LEFT(SNO, 7) = SNAME(姓名) VARCHAR(16) NOT NULLSEX(性别) VARCHAR(2) NOT NULLDEPT(专业号) VARCHAR(16) NOT NULLAGE(年龄) SMALLINT NOT NULLCourse(课程表)CNO(课程号) CHAR(4) PRIMARY KEYCNAME(课程名) VARCHAR(32) NOT NULL UNIQUESCORE(学分) SMALLINT NOT NULL DEFAULT 4SC(学生选
13、课成绩表)SNO(学号) CHAR(7) PRIMARY KEY FOREIGN KEYCNO(课程号) CHAR(4) PRIMARY KEY FOREIGN KEYGRADE(成绩) INT CHECK (Grade = 0 and Grade = 0 and grade = 100), PRIMARY KEY (sno, cno),)课题(项目)名称: 简单数据查询计划学时: 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日 第 周 星期 第 节实验四实验名称:简单数据查询实验学时:2实验目的:数据查询语句是SQL语句的重要组成部分,合理使用数据
14、查询语句,可以极大的简化应用程序编制、快速的定位分析数据库系统的故障,查询语句是编程人员与数据库管理人员必不可少的工具,通过试验,加深学生对查询语句基本概念的理解与掌握,最终达到灵活应用的目的。实验内容:恢复上次课的数据库表结构和数据。1. 选择表中的若干列2. 对表和列使用别名3. 查询计算列4. 选择表中的若干元组5. 对查询结果排序6. 使用集函数7. 对查询结果分组实验内容及要求:1. 查询全体学生的学号与姓名2. 查询全体学生的全部信息,并为学生表命名别名3. 查全体学生的出生年份,并为年份加上标题4. 查询选修了课程的学生学号,要求消除重复行5. 查询所有年龄在20岁以下的学生姓名
15、及其年龄6. 查询年龄在2023岁的学生信息(要求至少使用两种方式完成查询)7. 使用IN关键字查询信息系(IS)、数学系(MA)和计算机科学系(CS)的学生8. 查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。9. 查询所有姓刘学生的姓名、学号和性别10. 查询名字中第2个字为阳字的学生的姓名和学号11. 查询DB_Design课程的课程号和学分(先在Course表中插入“DB_Design”课程信息)12. 查询没有考试成绩的学生学号和课程号13. 查询计算机系年龄在20岁以下的学生姓名14. 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列1
16、5. 查询学生总人数16. 查询选修了课程的学生人数17. 计算1号课程的学生平均成绩18. 查询选修1号课程的学生最高分数19. 求各个课程号及相应的选课人数20. 查询选修了3门以上课程的学生学号(提示用Having字句)21. 查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数。思考与练习1. Where与Having语句有何差别?2. Count(*)与Count(字段名)有何差别?3. LIKE sys%与NOT LIKE sys%有无区别?请加以验证实验报告要求:16. 实验目的17. 实验内容及步骤18. 实验习题的源程序清单19. 写出在实验过程中遇到的问题及解
17、决方法20. 要求字迹端正、条理清晰、概念正确课题(项目)名称: 连接查询计划学时: 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日 第 周 星期 第 节实验五实验名称:连接查询实验学时:2实验目的:数据查询语句是SQL语句的重要组成部分,合理使用数据查询语句,可以极大的简化应用程序编制、快速的定位分析数据库系统的故障,查询语句是编程人员与数据库管理人员必不可少的工具,通过试验,加深学生对查询语句基本概念的理解与掌握,最终达到灵活应用的目的。实验内容:恢复上次课的数据库表结构和数据。1. 广义笛卡尔积连接2. 连接查询 自身连接 外连接 复合条件连接
18、 多表连接3. 嵌套查询 不相关子查询 相关子查询4. 集合查询实验要求:1. 查询全体学生与选课表的笛卡尔积2. 查询每个学生及其选修课程的情况3. 查询每个学生及其选修课程的情况(去掉重复属性)4. 查询某门课程考试成绩相同的学生学号和课程信息5. 查询每个学生的选修课程包括没有选修课程的学生(外连接)6. 查询每个学生的选修课程包括没有被学生选修的课程(外连接)7. 查询每个学生的选修课程即包括没有被学生选修的课程又包括没有被学生选修的课程(全连接)8. 查询选修2号课程且成绩在90分以上的所有学生的学号、姓名9. 查询每个学生的学号、姓名、选修的课程名及成绩10. 查询与“张三”在一个
19、系学习的学生(IN)11. 查询选修了课程名为“信息系统”的学生学号和姓名12. 查询与“张三”在同一个系学习的学生(EXISTS)13. 查询选修了课程1或者选修了课程2的学生(要求消除重复组UNION)14. 查询选修了课程1或者选修了课程2的学生(要求不消除重复组UNION ALL)15. 查询所有考试成绩均在90分以上的同学的信息思考与练习:1. IN与Exists语句有何区别?2. 全连接、左连接、右连接有什么不同?3. UNION与UNION ALL有何差别,谁的性能高?4. 不相关子查询、相关子查询有何区别?实验报告要求:1. 实验目的2. 实验内容及步骤3. 实验习题的源程序清
20、单4. 写出在实验过程中遇到的问题及解决方法5. 要求字迹端正、条理清晰、概念正确课题(项目)名称: 视图的使用计划学时: 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日 第 周 星期 第 节实验六实验名称:视图的使用实验内容及要求:一、 创建视图1、创建信息系学生的视图(注意with check option的用途)2、创建信息系选修了1号课程的学生的视图3、创建信息系选修了3号课程并且该课程的考试成绩大于90分的学生视图4、创建反映学生出生年份的视图5、创建视图,该视图包含学号、姓名、所在系、性别、课程名称、考试成绩6、为所有考试成绩都大于85的
21、学生创建视图,该视图包含学号、姓名、所在系、课程名称、考试成绩7、为选修了3门以上课程的学生信息创建视图8、依据()创建信息系的女生信息视图9、创建信息系学生的视图,信息包括学生姓名、性别、年龄、系别二、 视图查询1、在信息系学生的视图中,查询年龄小于20的学生2、查询选修了1号课程的计算机系的学生3、创建信息系选修了3号课程并且该课程的考试成绩大于90分的数学系的学生信息4、查询信息系学生出生年份信息5、查询信息系的女生的考试情况,包括学号、姓名、课程名称、考试成绩6、查询信息系,考试成绩都大于85的学生考试成绩信息三、 更新视图、 将信息系的学生“张三”名字更改为“李四”、 向信息系插入一
22、条新的学生记录:学号为,姓名为赵兴,年龄为23、 删除信息系中,学号为的学生、 对创建视图中的创建的视图,进行插入操作,出现什么情况,为什么?四、 删除视图对上述创建的视图进行删除(注意,删除视图时,对视图进行查询,出现什么情况,为什么?。五、 思考与练习、 with check option的作用?、 那些视图能够被更新?课题(项目)名称: 存储过程计划学时: 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日 第 周 星期 第 节实验七实验名称:存储过程实验学时:2实验目的:一、 试验目的事务处理及其并发控制是所有数据库产品的一个关键问题,是提供数据
23、一致性和可恢复性的重要保障,事务处理方式的不同会导致数据库性能和功能上的巨大差异,熟练掌握数据库事务处理和并发控制的基本原理对于后续的学习和工作有着重要的帮助。1). 通过试验,加深学生对事务的基本概念理解语掌握;2). 通过试验,加深学生对并发控制的基本概念理解,认识不正确的并发控制所带来的危害;3). 通过试验,加深学生对锁的基本概念的掌握与理解,认识锁带来的问题;二、 实验环境硬件: 奔腾4 处理器,1.8GHz,512M内存操作系统软件: WindowsXP数据库系统: SQLServer 2000 桌面版数据库用户帐号:sa数据库用户口令: 使用的数据库: Northwind数据库表
24、: #temp数据库工具: 企业管理器、查询分析器实验内容及要求:一、 存储过程的创建和使用i. 使用带有复杂 SELECT 语句的简单过程下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数。USE pubsIF EXISTS (SELECT name FROM sysobjects WHERE name = au_info_all AND type = P) DROP PROCEDURE au_info_allGOCREATE PROCEDURE au_info_allASSELECT au_lname, au_fname, title,
25、 pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_idGOau_info_all 存储过程可以通过以下方法执行:EXECUTE au_info_all- OrEXEC au_info_all如果该过程是批处理中的第一条语句,则可使用:au_info_allii. 使用带有参数的简单过程下面的存储过程从四个表的联接中只返
26、回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程接受与传递的参数精确匹配的值。USE pubsIF EXISTS (SELECT name FROM sysobjects WHERE name = au_info AND type = P) DROP PROCEDURE au_infoGOUSE pubsGOCREATE PROCEDURE au_info lastname varchar(40), firstname varchar(20) AS SELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOI
27、N titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id WHERE au_fname = firstname AND au_lname = lastnameGOau_info 存储过程可以通过以下方法执行:EXECUTE au_info Dull, Ann- OrEXECUTE au_info lastname = Dull, firstname = Ann- OrEXECUTE au
28、_info firstname = Ann, lastname = Dull- OrEXEC au_info Dull, Ann- OrEXEC au_info lastname = Dull, firstname = Ann- OrEXEC au_info firstname = Ann, lastname = Dull如果该过程是批处理中的第一条语句,则可使用:au_info Dull, Ann- Orau_info lastname = Dull, firstname = Ann- Orau_info firstname = Ann, lastname = Dulliii. 使用带有通配
29、符参数的简单过程下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程对传递的参数进行模式匹配,如果没有提供参数,则使用预设的默认值。USE pubsIF EXISTS (SELECT name FROM sysobjects WHERE name = au_info2 AND type = P) DROP PROCEDURE au_info2GOUSE pubsGOCREATE PROCEDURE au_info2 lastname varchar(30) = D%, firstname varchar(18) = %AS SELECT au_lnam
30、e, au_fname, title, pub_nameFROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_idWHERE au_fname LIKE firstname AND au_lname LIKE lastnameGOau_info2 存储过程可以用多种组合执行。下面只列出了部分组合:EXECUTE au_info2- OrEXE
31、CUTE au_info2 Wh%- OrEXECUTE au_info2 firstname = A%- OrEXECUTE au_info2 CKarsOEn- OrEXECUTE au_info2 Hunter, Sheryl- OrEXECUTE au_info2 H%, S%iv. 使用 OUTPUT 参数OUTPUT 参数允许外部过程、批处理或多条 Transact-SQL 语句访问在过程执行期间设置的某个值。下面的示例创建一个存储过程 (titles_sum),并使用一个可选的输入参数和一个输出参数。USE pubsGOIF EXISTS(SELECT name FROM sys
32、objects WHERE name = titles_sum AND type = P) DROP PROCEDURE titles_sumGOUSE pubsGOCREATE PROCEDURE titles_sum TITLE varchar(40) = %, SUM money OUTPUTASSELECT Title Name = titleFROM titles WHERE title LIKE TITLE SELECT SUM = SUM(price)FROM titlesWHERE title LIKE TITLEGO接下来,将该 OUTPUT 参数用于控制流语言。 说明OUT
33、PUT 变量必须在创建表和使用该变量时都进行定义。参数名和变量名不一定要匹配,不过数据类型和参数位置必须匹配(除非使用 SUM = variable 形式)。 DECLARE TOTALCOST moneyEXECUTE titles_sum The%, TOTALCOST OUTPUTIF TOTALCOST 200 BEGIN PRINT PRINT All of these titles can be purchased for less than $200.ENDELSE SELECT The total cost of these titles is $ + RTRIM(CAST(T
34、OTALCOST AS varchar(20)二、 触发器1、对SC表进行删除和更新的时候,要求对删除和更新之前的数据进行备份,备份到His_SC中。2、对SC表进行更新的时候,将Inserted和Deleted数据插入His_SC,观察两条记录的实际情况。3、向SC表插入或修改一记录时,通过触发器检查课号和学号是否存在,若不存在,则取消插入或修改操作。4、更改Student的SNO字段值时,该字段在SC表中的对应值也做相应修改;5、删除Student表中一记录的同时删除该记录SNO字段值在SC表中对应的记录;试验3、4、5分别在启用外键约束和不启用外键约束的两种条件下进行,看看执行结果有什么不同三、 思考与联系v. 创建存储过程,通过该存储过程添加学生记录。vi. 创建存储过程,通过该存储过程修改学生记录。vii. 创建存储过程,通过该存储过程删除学生记录。课题(项目)名称: 数据库事务及并发控制计划学时: 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日 第 周 星期 第