数据库原理复习资料

2022-10-18

第一篇:数据库原理复习资料

数据库原理总结

1关系的范式及规范化

范式是衡量关系模式优劣的标准。范式级别越高,其数据冗余和操作异常现象就越少。第一范式:如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关系属于第一范式。第二范式:若关系模式R属于第一范式,且每个非主属性都完全函数依赖于主键,则R属于第二范式。第三范式:若关系模式R属于第一范式,且每个非主属性都不传递依赖于主关键字,则R属于第三范式。BC范式:若关系模式R属于第一范式,且每个属性都不传递依赖于主关键字,则R属于BC范式。

2对模式的分解显然不是随意的,主要涉及以下两个原则:无损联结:当对关系模式R进行分解时,R的元组将分别在相应属性集进行投影而产生新的关系。如果对新的关系进行自然联接得到的元组的集合与原关系完全一致,则称为无损联结。保持依赖:当对关系模式R进行分解时,R的函数依赖集也将按相应的模式进行分解。如果分解后总的函数依赖集与原函数依赖集保持一致,则称为保持依赖。

3事务的定义:事务是数据库的逻辑工作单位,由用户定义的一组操作序列组成,序列中的操作要么全做要么全不做。

4简述事务所具有的ACID(原子性,一致性,隔离性,持续性)特性:事务的ACID特性是: 原子性:事务是一个不可分割的单位。一致性:事务对数据库操作的结果是将数据库从一个一致性状态变为另一个一致性状态。隔离性:多个事务的并发执行不互相干扰。持续性:事务一旦提交,它对数据库中数据的改变就是永久性的。 5事务的调度:事务的执行次序称为调度。若多个事务是按照某一次序串行地执行,则称事务的调度是串行调度。若多个事务同时交叉地并行执行,则称事务的调度为并发调度。

6事务并发执行产生的不一致情况及避免:并发操作可能会产生丢失修改,不能重复读和读”脏”数据这三种不一致情况,采用封锁机制来进行并发控制,可避各种不一致情况。一级封锁协议可以避免丢失修改,二级封锁协议可以避免丢失修改和读”脏”数据,三级封锁协议可以避免丢失修改、不能重复读和读”脏”数据。

7事务的COMMIT语句和ROLLBACK语句的功能是什么?答:COMMIT语句表示事务执行成功地接结束(提交),此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。ROLLBACK语句表示事务执行不成功地结束(应该“回退”)此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。

8活锁和死锁:活锁:在多个事务并发执行的过程中,可能会存在某个总有机会获得锁的事务却永远也没得到锁的现象,可以通过“先来先服务”的策略预防活锁的发生。死锁:在多个事务并发执行过程中,多个并发事务处于相互等待的状态的现象。

9死锁的预防:数据库当中预防死锁的方法有两种。第一种方法是要求每个事务必须一次性地将所有要使用的数据加锁或必须按照一个预定的加锁顺序对使用到的数据加锁。第二种方法是每当处于等待状态的事务由可能导致死锁时,就不再等待下去,强行回滚该事务。

10完整性约束的定义:关系数据库提供的三类完整性约束:实体完整性、参照完整性和用户自定义完整性。实体完整性:实体完整性约束是指任何基本表(关系)的主键(主关键字)中的每一个属性列都不能取空值,即基本表中的每一个元组在主键上的分量都有值。参照完整性:根据参照完整性原则,用户只要定义了某一个关系(基本表)的外键(外部关键字),系统就会控制外键的值要么为空,要么等于被参照关系中某一个主键的值,这就是系统对外键的一种约束。用户定义完整性:用户定义完整性约束条件的作用对象可以是属性列、元组或关系(基本表),其中对属性列的约束可以规定属性列的数据类型、取值范围等;对元组的约束可以规定元组中各属性间的相互关系;而对关系的约束则可以规定各元组间或关系间的相互联系。

11故障恢复的原则:对数据库的影响有两种可能性:一是数据库本身被破坏;二是数据库没有被破坏,但数据可能不正确,这是因为事务的运行被非正常终止造成的。 12恢复算法一般由两部分组成:在正常事务处理时采取措施,保证有足够的冗余信息可用于故障恢复。故障发生后采取措施,将数据库内容恢复到某个保证数据库一致性、事务原子性及持久性的状态。

13数据库在运行过程中可能产生的故障有哪几类? 答:1)事务故障:事务在运行过程中由于种种原因,如输入数据的错误,运算溢出,违反了某些完整性限制,某些应用程序的错误,以及并行事务发生死锁等,使事务未能运行到正常中指点之前就被撤消了,这种情况称为“事务故障”。2)系统故障:系统故障是指系统在运行过程中,由于某些原因,如OS和DBMS代码错误,操作员操作事物。特定类型的硬件错误(CPU故障),突然停电等造成系统停止运行,致使事物在执行过程中以非控方式中指。这时。内存中的信息丢失,而存储在外存储上的数据未受影响,这种情况称为“系统故障”。3)介质故障:系统在运行过程中,由于某种硬件故障,如磁盘损坏,磁头碰撞,或由于OS的某种潜在的错误。瞬间强磁场干扰,使存储在外存的数据部分损失或全部损失,称之为“介质故障”。 14故障恢复技术:数据转储、日志文件、检查点方法、数据库镜像

15关系的完整性约束:域完整性约束:关系中属性的值应是域中的值,并由语义决定其能否为空值。实体完整性约束:关系中的主键不能为空值。参照完整性约束:关系的外键必须是另一个关系主键的有效值或者是空值。用户自定义完整性约束:正对某一具体数据的约束条件,由应用环境决定。

16故障恢复原理是冗余可分为副本和日志。恢复算法:在正常事物处理时采取措施,保证有足够的冗余信息可用于故障恢复、故障发生后采取措施,将数据库内容恢复到某个保证数据库一致性、事物原子性及持久性的状态。

17事务故障的恢复:事务故障是指事务在运行至正常终止点前被中止,这时恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的,系统的恢复步骤是:⑴ 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。⑵ 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。这样,如果记录中是插入操作,则相当于做删除操作(因此时“更新前的值”为空)。若记录中是删除操作,则做插入操作,若是修改操作,则相当于用修改前值代替修改后值。⑶ 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。⑷ 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。

18系统故障的恢复:系统故障造成数据库不一致状态的原因有两个,一是未完成事务对数据库的更新可能已写入数据库,二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。因此,恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。系统恢复步骤如下:正向扫描日志文件,即从头扫描日志文件,找出在故障发证前已经提交的事务,将其事务标示记入重做队列,同时找出故障发证时尚未完成的事务,将其事务标识计入撤销队列、对撤销队列中的各个事务进行撤销处理、对重做队列中的各个事务进行重做扫描

19日志文件作用及建立原因:答:日志文件是用来记录事务对数据库的更新操作的文件。目的是进行事物故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。

20三级模式:三级模式结构:数据库的三级模式由外模式、概念模式和内模式三级模式构成。概念模式:简称模式,又称数据库模式、逻辑模式。一个数据库只有一个概念模式,它是数据库系统三级模式结构的中间层,概念模式是数据库中全体数据的逻辑描述,而不是数据库本身,它是装配数据的一个结构框架。外模式:外模式简称子模式,又称用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是用户与数据库系统之间的接口。一个数据库可以有多个外模式,设置外模式的优点如下:方便用户使用,简化用户接口、保证数据的独立性、有利于数据共享、有利于数据安全和保密。内模式:内模式也称存储模式。是对数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示形式。一个数据库只能有一个内模式。 21两级映像:外模式/概念模式映像:外模式/概念模式映像定义了各个外模式与概念模式间的映像关系。概念模式/内模式映像:概念模式/内模式映像定义了数据库全局逻辑结构与存储结构之间的对应关系。

22两极结构的独立性:物理数据独立性:如果数据库内模式要修改,即数据库的物理结构有所变化,那么只要对概念模式/内模式做相应的修改即可。概念模式/内模式提供了数据的物理数据独立性。逻辑数据独立性:如果概念模式要修改,例如增加记录类型或增加数据项,那么只要对外模式/概念模式映像做相应的修改,就可以使外模式和应用程序尽可能保持不变。这样,就称数据库打到了逻辑数据独立性。外模式/概念模式映像提供了数据的逻辑独立性。

23数据库技术的发展阶段:工管理阶段(数据部保存、没有对数据进行管理的软件系统、没有文件的概念、一组数据对应于一个程序,数据时面向应用的)、文件系统阶段(数据需要长期保存在外存上供反复使用、程序和数据之间有了一定得独立性、文件的形式已经多样化、数据的存取基本以记录为单位)、数据库系统阶段(数据结构化、数据共享、减少数据冗余、具有较高的数据独立性、方便用户接口、统一的数据管理与控制功能)

某校与教学管理相关的3个关系模式的结构如下: 学生(学号、姓名、年龄、性别、所在系) 课程(课程号、课程名、开课系、任课教师) 学习(学号、课程号、成绩) 试进行如下操作:

1.创建“教学”数据库,在“教学”数据库中创建“学生”、“课程”、“学习”这3个基本表,并说明主键和外键。 2.使用SQL的查询语句表达下列查询 (1)查询刘老师所授课程的课程号和课程名 (2)查询年龄大于23岁的男学生的学号和姓名

(3)查询至少修读刘老师所授课程中一门课程的女学生和姓名 (4)查询王乐同学不学的课程的课程号 (5)查询至少修读两门课程的学生学号

(6)查询全部学生都修读的课程的课程号与课程名 (7)查询修读课程中包含刘老师所授课程的学生学号

3)SELECT 姓名 FROM 学生 WHERE 性别=‘女’ AND EXISTS (SELECT * FROM 学习 WHERE 学习.学号=学生.学号 AND 课程号 IN (SELECT 课程号 FROM 课程 WHERE 任课教师 LIKE ‘刘%’)) 4) SELECT 课程号 FROM 课程 WHERE NOT EXISTS (SELECT * FROM 学习 WHERE 学习.课程号=课程.课程号 AND 学号 IN (SELECT 学号 FROM 学生 WHERE 姓名=‘王乐’ )) 5)SELECT 学号 FROM 学生 GROUP BY 学号 HAVING COUNT(*)>=2 6)SELECT 课程号,课程名 FROM 课程 WHERE NOT EXISTS (SELECT * FROM 学生 WHERE NOT EXISTS (SELECT * 学号 FROM 学习 WHERE 学习.课程号=课程.课程号 AND 学习.学号=学生.学号 )) 7)SELECT 学号 FROM 学习 WHERE EXISTS (SELECT * FROM 学习 WHERE 课程号 IN (SELECT * FROM 课程号 FROM 课程 WHERE 任课教师 LIKE ‘刘%’)) 试用SQL查询语句表达下列对教学数据库中3个基本表“学生”、“课程”、“学习”的查询 (1)统计有学生修读的课程门数 (2)求修读C4课程的学生的平均年龄

(3)求刘老师所授课程的每门课程的学生平均成绩

(4)统计每门课程学生的修读人数(超过10人的课程才统计),要求输出课程号和修读人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 (5)查询学号比王乐同学大,而年龄比他小的学生姓名 (6)查询姓名以王打头的所有学生的姓名和年龄 (7)在“学习”表中检索成绩为空值的学生学号和课程号 (8)求年龄大于女同学平均年龄的男学生姓名和年龄 (9)求年龄大于所有女同学年龄的男学生姓名和年龄 SELECT COUNT(DISTINCT 课程号) FROM 学习

SELECT AVG(年龄) FROM 学生 WHERE EXISTS (SELECT * FROM 学习 WHERE学生.学号=学习.学号 AND 课程号=’C4’) SELECT AVG(成绩) FROM 学习 WHERE GROUP BY 课程号 HAVING 课程号 IN (SELECT 课程号 FROM 课程 WHERE 任课教师 LIKE ‘刘%’) SELECT 课程号,COUNT(*) AS C_COUNT FROM 学习 HAVING C_COUNT>10 ORDER BY C_COUNT DESC,课程号

SELECT 姓名 FROM 学生 WHERE 学号>ALL(SELECT 学号FROM 学生WHERE 姓名=’王乐’) AND 年龄(SELECT AVG(年龄) FROM 学生 WHERE 性别=’女’) SELECT 姓名, 年龄 FROM 学生WHERE 性别=’男’ AND年龄>(SELECT MAX(年龄) FROM 学生 WHERE 性别=’女’) 试用SQL更新语句表达对“教学”数据库中3个基本表“学生”、“课程”和“学习”的各个更新操作 (1)向基本表“学生”中插入一个学生组(‘S009’,‘吴’,18)

(2)在基本表“学生”中查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把查询到的值送往另一个已存在的基本表“结果”(学号,姓名,性别)中 (3)在基本表“学习”中删除尚无成绩的元组

(4)把王乐同学在“学习”基本表中的课程和成绩全部删除 (5)把修读Java课程不及格的成绩全改为空值 (6)把低于总平均成绩的女同学成绩提高5% (7)在基本表“学习”中修改C4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现) INSERT INTO 学生 VALUES (‘S009’,’吴’,18) INSERT INTO 结果(学号,姓名,性别) SELECT学号,姓名,性别 FROM 学生 WHERE NOT EXISTS (SELECT * FROM 学习 WHERE 学生.学号=学习.学号 AND 成绩<80) DELETE FROM 学习 WHERE 成绩 IS NULL DELETE FROM 学习 WHERE 学号 IN (SELECT 学号 FROM 学生 WHERE 姓名=’王乐’) UPDATE 学习 SET成绩=NULL WHERE 成绩<60 AND 课程号 IN (SELECT 课程号 FROM 课程 WHERE 课程名=’JAVA’) UPDATE 学习 SET 成绩=成绩*1.05 WHERE 成绩<( SELECT AVG(成绩) FROM 学生) UPDATE 学习 SET 成绩=成绩*1.04 WHERE 成绩>75 AND 课程号=’C4’ UPDATE 学习 SET 成绩=成绩*1.05 WHERE 成绩<=75 AND 课程号=’C4’

第二篇:数据库原理实验五

数据库原理及应用实验报告

实验名称:数据库备份与恢复、数据库的安全性 实验类型:验证型 实验环境:oracle 11g 指导教师:陈 骏 专业班级:信安班 姓

名: 学

号:

联系电话:18281686860 电子邮件: 实验地点:东6E501 实 验 日 期: 2017年5月16日 实验报告日期:2017年 5月 18日

成绩:__________________________ 实验五 数据库备份与恢复

一、实验目的

        了解数据库恢复技术的原理

了解oracle各类故障的数据恢复方法 了解oracle的物理备份

掌握oracle数据库逻辑备份方法 掌握oracle数据库恢复的方法

学会使用exp备份数据库、使用imp恢复数据库 了解flashback 的使用

学会使用PLSQL/developer工具完成导入导出

二、实验平台

Oracle 11g

三、实验步骤、出现的问题及解决方案(不能解决的将问题列出) (1)实验步骤

1、逻辑备份

(1)导出自己用户中的“预约”表在运行中输入:exp 用户名/密码@orcl 按照提示进行导出

(2)删除自己用户中的“预约”表

1 (3)进行导入数据库操作,在运行中输入:IMP 用户名/密码@orcl按照提示进行导入

(4)查询导入的“预约”表中的信息。

(5)导出数据库(以全库方式导出)。必须是DBA才能执行完整数据库或表空间导出操作。

2、使用Flashback (1)设置行可移动SQL>ALTER TABLE 读者 ENABLE ROW MOVEMENT

(2)在读者表中添加多条记录(或者删除没有借书的读者记录)。

(3)闪回到改变前(TO_ TIMESTAMP函数完成对非时间戳类型数据的转换)SQL>FLASHBACK TABLE 读者 TO TIMESTAMP TO_ TIMESTAMP(„.) 2

3、使用PLSQL/developer 来完成SQL导出

(1)打开PLSQL/developer,选择菜单“工具“导出表 (2)点击你要导出的表,然后选择标签SQL 插入

(3)选中复选框创建表,浏览或者输入输出文件,然后点击导出

(4)在你输入的目录下找到你的导出文件(SQL 文件)

(5)依次导出你账户下所有用户自定义表。

(6)删除自己表空间中的“预约”表

3 (7)通过“工具“导入表,利用SQL插入导入数据库预约表。

(8)查询导入的预约表,检查导出是否正确。

4、使用PLSQL/developer 来完成PLSQL/developer方式导出 (1)打开PLSQL/developer,选择菜单“工具“导出表 (2)点击你要导出的表,然后选择标签PLSQL/developer (3)浏览或者输入输出文件,然后点击导出。

4 (4)在你输入的目录下找到你的导出文件。 (5)依次导出你账户下所有用户自定义表。 (6)删除自己表空间中的“预约”表

(7)通过“工具“导出表,PLSQL/developer方式导入数据库预约表。

(8)查询导入的预约表,检查导出是否正确。

(2)问题及解决方案

-问题①:在命令行内输入登录命令“sqlplus S5120155364/123@orcl by sysdba”时无法正确连接

原因:使用了错误的连接词“by”

解决方案:将其改为“sqlplus S5120155364/123@orcl as sysdba” -问题②:点击“Enter”键,命令不执行 原因:命令语句后遗漏分号或使用了中文分号 解决方案:改为以英文分号结尾的命令语句 -问题③:无法以全库方式导出数据库(未解决)

实验六 数据库的安全性

一、实验目的

       理解数据库的安全性保护

掌握ORACLE中有关用户创建的方法 理解数据库存取控制机制

熟练掌握PL-SQL的数据控制语言,能通过自主存取控制进行权限管理 熟悉用户资源文件的使用 熟悉ORACLE中角色管理

熟悉视图机制在自主存取控制上的应用

四、实验平台

Oracle 11g

五、实验步骤、出现的问题及解决方案(不能解决的将问题列出) (1)实验步骤

1、同学之间相互授权访问对方“读者”表并能进行查询。

2、以SYSTEM登录数据库为你的帐号增加系统角色DBA.

3、 重新以自己的帐号登录,创建一个数据库用户:帐号_USER1(注:帐号即学生登录数据库帐号,如:S20101206),该用户拥有所有CONNECT, resource,DBA系统角色权限。

4、 建立角色:帐号_OPER,该角色拥有调用存储过程借书、还书、预约的权限,以及CONNECT系统角色权限。(注:执行存储过程的授权语句Grant execute on procedure_name to user/role)

5、创建一个数据库用户:帐号_USER2(注:帐号如:S20101206)为该用户授权角色:帐号_OPER。以该用户登录,完成借书功能。

6、以自己的帐号登录,如:S20101206,建立视图VIEW_READER, 该视图包含书目(ISBN, 书名,作者,出版单位,图书分类名称)(注:所有属性来自关系书目和图书分类)

7、创建一个数据库用户:帐号_USER3(注:帐号如:S20101206)该用户具有对视图VIEW_READER查询的权限。创建一个概要文件,如果 帐号_USER3连续3次登录失败,则锁定该账户,10天后该账户自动解锁。以该用户登录进行权限测试。

(2)问题及解决方案

-问题①:在命令行内输入登录命令“sqlplus S5120155364/123@orcl by sysdba”时无法正确连接

原因:使用了错误的连接词“by”

解决方案:将其改为“sqlplus S5120155364/123@orcl as sysdba” -问题②:点击“Enter”键,命令不执行 原因:命令语句后遗漏分号或使用了中文分号 解决方案:改为以英文分号结尾的命令语句

第三篇:数据库原理实验报告(1)

南 京 晓 庄 学 院

《数据库原理与应用》

课程实验报告

实验一 SQL Server 2005常用服务与实用工具实验

所在院(系): 数学与信息技术学院 班级:

学号:

姓名:

1.实验目的

(1) 了解Microsoft 关系数据库管理系统SQL Server的发展历史及其特性。 (2) 了解SQL Server 2005的主要组件、常用服务和系统配置。

(3) 掌握Microsoft SQL Server Management Studio 图形环境的基本操作方法。了解使用“SQL Server 2005 联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。

2.实验要求

(1) 收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server 2005主要版本类别和主要功能特性。

(2) 使用SQL Server配置管理器查看和管理SQL Server 2005服务。

(3) 使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获得所感兴趣的相关产品主题/技术文档。

(4) 使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL查询语句。

(5) 查看Microsoft SQL Server 2005模板,了解模板的使用方法。 (6) 按要求完成实验报告。

3.实验步骤、结果和总结实验步骤/结果

(1) 简要总结SQL Server系统发展历史及SQL Server 2005主要版本类别与主要功能特性。

(2) 总结SQL Server Management Studio的主要操作方法。

(3) 总结查询编辑器的功能和主要操作方法,并举例说明。

(4) 总结“模板”的使用方法,并举例说明。

4.实验思考:

查询相关资料,简要描述SQL Server 2005的主要服务。

第四篇:数据库原理实验学期总结

2010-2011学年第1学期《数据库原理实验》学期论文

数据库原理实验学期总结

我的题目:

班级:_______________学号:_______________姓名:_______________ 摘要

不少于100字

关键字:(至少4个)

一、 数据库实验的主要意义的目的

二、 概述本学期的实验内容和目的

三、 实验中涉及的主要实验原理

四、 总结

1. 我的实验完成的实际情况

2. 我在实验中遇到的主要问题及解决方案

1 /

22010-2011学年第1学期《数据库原理实验》学期论文

3. 我对实验的难度的看法和建议

4. 我希望增加或减少什么实验

5. 我对数据库原理实验课程的建议

五、 附录

2 / 2

第五篇:《数据库原理实验指导书》

河南科技大学电子信息工程学院目录

实验规则 .................................................................................................................................. 0 实验报告要求 .......................................................................................................................... 2 基本实验方法 .......................................................................................................................... 2 实验环境 .................................................................................................................................. 2 实验一:数据定义及更新语句练习 ...................................................................................... 3 实验二:简单查询和连接查询 .............................................................................................. 5 实验三:分组查询和嵌套查询 .............................................................................................. 7 实验四:视图操作和数据控制 .............................................................................................. 9 实验五:触发器和存储过程 ................................................................................................ 11 选作题目 ................................................................................................................................ 13

实验规则

为了顺利完成实验教学任务,确保人身设备安全,培养严谨、踏实、实事求是的科学作风和爱护国家财产的优良品质,特制定以下实验规则:

1、实验纪律

(1)在实验室不得做和实验无关的事情。 (2)遵守纪律,不迟到,不旷课。

(3)不能拆卸硬件,更不能拿走实验设备或仪器。 (4)保持实验室安静、整洁,爱护公物。

2、实验过程

(1)预习实验内容。自行设计SQL语句。

(2)上机操作。每执行一句记录执行情况,主要是错误信息和错误原因。 (3)检查操作结果是否正确。

(4)根据实验过程的记录书写实验报告。

实验报告要求

1、报告用纸 采用统一的河南科技大学实验报告用纸,不得用别的纸张代替。

2、实验报告封面内容

实验名称:(如实验一 数据库创建) 班级名称:(如计科101班) 学生学号: 学生姓名: 实验时间:

3、实验报告内容

见各具体实验项目的要求。

基本实验方法

本实验要求熟悉SQL Server环境和数据库的相关知识。

实验环境

Microsoft SQL Server2012 2 实验一:数据定义及更新语句练习

一、

二、 实验目的:熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。 预习要求:实验前复习讲授过的有关创建数据库、基本表的SQL语句,预习SQL Server2000环境,特别是资源管理器和查询分析器的相关用法。

三、实验内容:

(一)用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。

(二)分别使用插入、删除、修改的方式更新基本表中的数据。

四、 实验方法和步骤:

(一)使用Microsoft SQL Server企业管理器和查询分析器建立数据库mySPJ: 1.打开“开始->程序->Microsoft SQL Server->企业管理器”;

2.在企业管理器左边的树标签中依次打开“Microsoft SQL Server-> SQL Server组->(local)(Windows NT)->数据库”, (local)(Windows NT)前的红色标记转化为绿色标记表明NT服务已启动;

3.从企业管理器的“工具”菜单中选择“SQL 查询分析器”,打开查询分析器后,在其窗口书写创建数据库mySPJ的SQL语句,点击执行按钮(或F5键)执行该SQL 3 语句;

4.在企业管理器左边的树标签中查看数据库是否建立成功。

(二)在数据库mySPJ中建立S,P,J,和SPJ四个基本表:

按照实验内容给出的基本表结构在查询分析器窗口中书写SQL语句分别建立各表,并设置主键和外键约束;

(三)更新表数据:

1.利用Insert 语句将习题中给出的示例记录插入各表。 2.利用Update更新表中的记录:

①将p表中的所有红色零件的重量增加5。

②将spj表中所有天津供应商的QTY属性值减少10。用子查询。

3.利用Delete语句删除p表中的所有红色零件的记录。

4.SQL语句执行后返回基本表查看更新后的结果,如果与期望不符,分析原因并记录在实验报告中。

五、 思考题:

(一) 在为各表设定关键字时弹出的页面中有关键字和索引选项,试通过给基本表设定这两个项目并说明二者的区别。

(二) 在基本表中输入数据时,注意数据与字段的数据类型和长度以及能否为空的属性是否一致,保存时如有错误分析错误原因,及时改正并将错误报告写在实验报告中。

六、 实验报告要求:

(一) 实验目的: (二) 实验内容:

(三) 完成情况(附上设计的SQL语句)。

(四) 实验结果:如果是查询语句,将查询结果记录列出来,其它可以不写。 (五) 问题及解决:首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。 (六) 回答思考题提出的问题, (七) 实验总结:心得体会,建议等。

4 实验二:简单查询和连接查询

一、 实验目的:熟练掌握用SQL语句实现的简单查询和多个数据表连接查询。

二、 预习要求:实验前复习讲授过的有关简单查询与多表查询的知识,编写相应的SQL语句。

三、 实验内容:

(一) 完成下面的简单查询:

①查询所有“天津”的供应商明细; ②查询所有“红色”的14公斤以上的零件。 ③查询工程名称中含有“厂”字的工程明细。 (二) 完成下面的连接查询:

①等值连接:求s表和j表的相同城市的等值连接。

②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。

③笛卡尔积:求s和p表的笛卡尔积 ④左连接:求j表和spj表的左连接。 ⑤右连接:求spj表和j表的右连接。

四、 实验方法和步骤:

参照实验一中给出的使用Microsoft SQL Server企业管理器和SQL查询分析器的方法,将实验内容中所要求的查询项目依次用SQL语句实现,并记录下执行结果。

五、 思考题:

查看实验内容2中左连接和右连接的执行结果是否一致,为什么?

六、 实验报告要求: (一) 实验目的: (二) 实验内容:

5 (三) 完成情况(附上设计的SQL语句)。

(四) 实验结果:如果是查询语句,将查询结果记录列出来,其它可以不写。 (五) 问题及解决:首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。 (六) 回答思考题提出的问题, (七) 实验总结:心得体会,建议等。

6 实验三:分组查询和嵌套查询

一、 实验目的:熟练掌握用SQL语句实现多个数据表的分组查询和嵌套查询。

二、 预习要求:实验前复习讲授过的有关分组查询和嵌套查询的知识,编写相应的SQL语句。

三、 实验内容: (一) 分组查询:

1. 求各种颜色零件的平均重量。 2. 求北京供应商和天津供应商的总个数。 3. 求各供应商供应的零件总数。 4. 求各供应商供应给各工程的零件总数。 5. 求使用了100个以上P1零件的工程名称。 6. 求各工程使用的各城市供应的零件总数。

(二) 嵌套查询:

1. in连接谓词查询:

① 查询没有使用天津供应商供应的红色零件的工程名称。 ② 查询供应了1000个以上零件的供应商名称。(having) 2. 比较运算符:求重量大于所有零件平均重量的零件名称。 3. Exists连接谓词:

① 查询供应J1的所有的零件都是红色的供应商名称。 ② 至少用了供应商S1所供应的全部零件的工程号JNO。

四、 实验方法和步骤:

参照实验一中给出的使用Microsoft SQL Server企业管理器和SQL查询分析器的方法,将实验内容中所要求的查询项目依次用SQL语句实现,并记录下执行结果。

五、 思考题:

(一)嵌套查询中的in连接谓词查询,关键字in可以直接用any代替么?什么情况下in和any可以互相代替?

(二)嵌套查询中的内查询为外查询返回的内容是什么?是表达式?视图?还是物理数据集合?

六、 实验报告要求: (一) 实验目的: (二) 实验内容:

(三) 完成情况(附上设计的SQL语句)。

(四) 实验结果:如果是查询语句,将查询结果记录列出来,其它可以不写。 (五) 问题及解决:首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。 (六) 回答思考题提出的问题, (七) 实验总结:心得体会,建议等。

8 实验四:视图操作和数据控制

一、 实验目的:熟练掌握用SQL语句实现视图操作和数据控制。

二、 预习要求:实验前复习讲授过的有关视图操作和数据控制的知识,编写相应的SQL语句。

三、 实验内容:

(一)定义如下视图:

①查询北京的供应商的编号、名称和城市。 ②查询S1供应商的所有供应明细。

③查询各工程名称使用的各种颜色零件的个数。 查询上面定义的视图。

(二)数据控制:

①使用GRANT把对S表查询的权利授予WangLi。

②使用GRANT把对P表查询、插入、修改、删除的权利授予LiMing。

③使用REVOKE把LiMing对P表插入、删除的权利回收。

四、 实验方法和步骤:

参照实验一中给出的使用Microsoft SQL Server企业管理器和SQL查询分析器的方法,将实验内容中所要求的查询项目依次用SQL语句实现,并记录下执行结果。

五、 思考题:

实验内容中的哪些视图可以用来更新记录?

六、 实验报告要求: (一) 实验目的: (二) 实验内容:

(三) 完成情况(附上设计的SQL语句)。

(四) 实验结果:如果是查询语句,将查询结果记录列出来,其它可以不写。 (五) 问题及解决:首先写出执行语句不成功的时候系统报告的错误信息。然后 9 分析错误原因,并给出解决办法。 (六) 回答思考题提出的问题, (七) 实验总结:心得体会,建议等。

实验五:触发器和存储过程

一、 实验目的:理解触发器和存储过程的含义,掌握用SQL语句实现触发器和存储过程的编写,并初步掌握什么情况下使用事务。

二、 预习要求:存储过程和触发器的相关概念,事务的相关概念,编写相应的SQL语句。

三、 实验内容:

有一个小型的图书管理数据库,包含的表为:

bookstore(bookid,bookname,bookauthor,purchasedate,state);--图书库存表

borrowcard(cardid,ownername);--借书证表

borrowlog(cardid,bookid,borrowdate,returndate);--借书记录表 写一个存储过程,实现借书操作,要求有事务处理。(1)读者借书,要先设置书籍不在库标志state(借出),然后增加借书记录,在同一事务中完成。 (2)要求在事务执行过程中引入错误触发事件,以此体会事务的错误保护机制和事务编程的作用。(3)要求用触发器实现表的完整性控制。

四、 实验方法和步骤:

(一)在查询分析器中创建包含以上三张表的数据库。

(二)参考CREATE PROCEDURE语句和Create Trigger语句。在事务执行过程中引入错误触发事件,可以考虑在增加借书记录时违反实体完整性或参照完整性,以此体会事务的错误保护机制,并用触发器实现表的完整性控制。

五、 思考题:

如何通过系统的设置实现类似的功能,而不需触发器?

六、 实验报告要求: (一) 实验目的: (二) 实验内容:

(三) 完成情况(附上设计的SQL语句)。

11 (四) 实验结果:如果是查询语句,将查询结果记录列出来,其它可以不写。 (五) 问题及解决:首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。 (六) 回答思考题提出的问题, 实验总结:心得体会,建议等。

选作题目

选作题目1:用vb,delphi或者c++builder设计一个数据库应用程序,实现一个简单的成绩管理,建立三个表:学生表S,课程表C和成绩表SC。要求实现的功能:(1)维护学生信息;(2)维护课程信息;(3)录入成绩;(4)查询一个学生的所有课程成绩;(5)查询每门课程的平均成绩。(6)打印学生成绩报表;(7)打印每门课程的平均成绩报表。

选作题目2:自由结合以(5-6)人为小组完成一个数据库系统设计的小课题。要求用ERWIN工具对数据库进行建模。

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:十佳青年教师发言稿下一篇:商家联盟合作协议书