SQL数据库电子课件

Download Report

Transcript SQL数据库电子课件

数据库实验指导
第一篇
第二篇
第三篇
第四篇
实验篇
设计篇
训练篇
实例篇
第一篇
实验篇
第一篇
实验篇
Microsoft SQL Server是基于客户机/服务器模式的新一代大型关系型数
据库管理系统(RDBMS)。在SQL Server的发展历程中,有两个版本
具有重要的意义,那就是在1996年推出的SQL Server 6.5版本和2000
年推出的SQL Server 2000版本。
本篇主要以SQL Server 2000为主,把关系数据库的一些基本理论和基本
技能应用到20个实验中,使读者熟练掌握数据库的创建和管理、数据
库的维护和实施以及如何管理数据库对象等,为数据库的开发打下扎
实的基本功。
本篇的每个实验都由下列4部分组成:
 实验目的
 实验内容
 问题解答
 思考题
实验1
SQL Server 2000的安装
1.实验目的
(1)了解SQL
(2)熟悉SQL
(3)了解SQL
(4)了解SQL
Server
Server
Server
Server
2000不同版本安装的硬件要求和系统要求。
2000的安装步骤。
2000的卸载方法。
2000的主要组件。
2.实验内容
(1)检查软硬件配置是否达到SQL Server 2000的安装要求。
(2)选择安装SQL Server 2000的方式。
(3)安装前要做的准备工作。
(4)安装SQL Server 2000。
实验1
SQL Server 2000的安装
3.问题解答
(1)如何删除SQL Server 2000中的实例?
可以通过以下两种方法删除SQL Server 2000的实例。
① 运行SQL Server 2000安装程序,并选择“卸载”选项。
② 运行Windows控制面板中的“添加/删除程序应用程序”。
每个命名的SQL Server 2000实例必须单独删除,不能删除SQL
Server 2000的个别组件,若要删除组件,必须删除整个实例。
提示:删除SQL Server 2000之前,应退出所有应用程序,包括 Windows NT事
件查看器,注册表编辑器和所有的 SQL Server应用程序以及所有依赖于
SQL Server的应用程序。
实验1
SQL Server 2000的安装
3.问题解答
(2)SQL Server 2000中的主要组件有哪些?
SQL Server 2000提供了一系列管理工具和实用程序,用于设置和
管理SQL Server 2000。
当SQL Server 2000 安装完成后,选择“开始”→“程序
”→“Microsoft SQL Server”命令,可以看到 SQL Server 2000主
要组件的快捷方式。
其中,常用的有“服务管理器”、“企业管理器”、“查询管理
器”和“导入和导出数据”等。
实验1
SQL Server 2000的安装
4.思考题
(1)SQL Server 2000的安装出错时,如何进行错误检查?
(2)如何使用SQL Server 2000的帮助文档?
实验2
配置SQL Server 2000
1.实验目的
(1)掌握启动和停止SQL Server 服务的方法。
(2)掌握注册SQL Server 服务器的方法。
(3)掌握创建服务器组的方法。
(4)了解企业管理器和查询分析器的功能。
2.实验内容
(1)练习用不同的方法启动SQL Server服务。
(2)新建服务器组。
(3)删除服务器组。
(4)注册服务器。
(5)断开与恢复同服务器的连接。
(6)删除SQL Server注册。
(7)打开查询分析器。
实验2
配置SQL Server 2000
3.问题解答
(1)企业管理器的作用是什么?
企业管理器是SQL Server 2000中最重要的一个管理工具,用于配
置SQL Server 2000系统环境,创建和管理所有SQL Server对象,主
要包括注册和管理SQL Server 服务器,连接、启动、暂停或停止
SQL Server 服务,创建和管理数据库,创建和管理各种数据库对象
(包括表、视图、存储过程、触发器、角色、规则、默认值、用户自
定义数据类型、用户自定义函数以及全文目录),备份数据库和事务
日志,复制数据库,设置任务调度,让管理者进行警报设置,提供跨
服务器的拖放操作,管理用户账户,编写和执行 Transact-SQL 语句
,管理和控制SQL Mail等。
实验2
配置SQL Server 2000
3.问题解答
(2)打开查询分析器时,怎样进行数据库登录认证?
在打开查询分析器窗口时,用户必须首先登录到服务器。SQL
Server提供了两种登录认证方式:一种是使用集成Windows身份验证
方式,只要用户使用的是Windows操作系统并已经以合法的身份登录
到操作系统环境中,那么打开查询分析器时,不用再输入登录信息;
另一种是SQL Server身份验证方式,需要用户输入正确的登录名和密
码才能连接服务器的连接,并进入查询分析器窗口。
实验2
配置SQL Server 2000
4.思考题
(1)SQL Server的服务账号可以更改吗?如果可以,如何操作?
(2)启动SQL Server服务有哪些方法?
(3)如何配置查询分析器?
实验3
管理数据库
1.实验目的
(1)熟练掌握在企业管理器中创建数据库的方法。
(2)熟练掌握用SQL语句创建数据库的方法。
(3)熟练掌握使用创建数据库向导来创建数据库的方法。
(4)熟练掌握数据库属性的设置。
(5)掌握数据库的修改和删除方法。
2.实验内容
(1)使用企业管理器创建一个名为“SM”的数据库。
(2)通过查询分析器创建一个名为“进销存”的数据库 。
(3)使用向导创建一个名为“工资管理”的数据库。
(4)使用企业管理器,修改SM数据库 。
(5)使用SQL语句,修改SM数据库 。
(6)使用SQL语句,删除“进销存”数据库。
实验3
管理数据库
3.问题解答
SQL Server 2000中的数据库能否只包含数据文件?
在Microsoft SQL Server 2000中数据库必须至少包含一个数据文
件和一个事务日志文件,数据和事务日志信息从不混合在同一文件中
,并且每个文件只能由一个数据库使用。
实验3
管理数据库
4.思考题
(1)使用企业管理器删除“进销存”数据库。
(2)在查询分析器中,通过模板创建一个名为“学生管理”的数据库
。
(3)从SM数据库中删除数据文件“SM_Data1”。
实验4
用T-SQL创建表
1.实验目的
(1)熟悉各种数据类型。
(2)能够运用T-SQL(Transact-SQL)语句正确创建表。
(3)了解6种常用的数据完整性约束。
2.实验内容
(1)使用T-SQL语句,创建SM数据库中的学生表Student。
(2)创建SM数据库中的课程表Course。
(3)创建SM数据库中的选课表SC。
(4)输入SQL语句,查看表Student的定义。
(5)输入SQL语句,查看表Student与其他表之间的依赖关系。
(6)输入SQL语句,查看表Student上的约束。
实验4
用T-SQL创建表
3.问题解答
(1)在为数据库设计表之前应考虑哪些问题?
应该考虑两个问题:一是数据库中要存放哪些数据;二是这些数
据如何划分到表中。
实验4
用T-SQL创建表
3.问题解答
(2)什么是临时表?
临时表是存储在tempdb数据库中的,当不再使用时会被自动删除
。
在SQL Sever中可以创建两种临时表:局部临时表和全局临时表
。局部临时表只能被当前的用户使用,即只能在创建它的会话内访问
,当这一会话结束时,局部临时表自动被删除;而全局临时表在创建
后能被所有的用户看到,当最后一个使用它的用户断开连接时才被自
动删除掉。
可以用临时表来存储那些在永久存储前仍需加以处理的数据,例
如,可以把多个数据合并起来创建临时表,在当前会话中访问这一临
时表,这样就可以随时访问合并起来的数据,而不用引用各个数据库
表。
实验4
用T-SQL创建表
4.思考题
建立班级表Class(CLno char(6) ,CLname varchar(30) ,DNo
char(4),TNo char(5)),并修改表Student,设置CLno为外码约束。
实验5
用企业管理器创建表
1.实验目的
(1)能够运用企业管理器正确创建表。
(2)学会用企业管理器设置常用的数据完整性约束。
2.实验内容
(1)利用企业管理器提供的图形界面来创建“进销存”数据库中的客
户信息表c、货物表g和订单表o 。
(2)在表o的goodsname列上创建外键约束。
(3)在表o的quantity列上创建检查约束。
(4)使用企业管理器,把SM数据库中的选课表SC的主码设置为SNo和
CNo。
(5)查看表间的依赖关系。
(6)向表中输入数据。
实验5
用企业管理器创建表
3.问题解答
什么是数据完整性?关系数据库有几类完整性?怎样通过SQL Server来
实现?
数据完整性是指数据库中数据的正确性和一致性,保证数据库中
数据的质量。一般有以下3类完整性。
① 实体完整性:通过主键约束来维护。
② 参照完整性:通过外键约束来维护。
③ 域完整性:通过唯一约束、检查约束、默认值和是否可以为空等
约束来维护。
实验5
用企业管理器创建表
4.思考题
(1)把表c中type列的默认值设置为1。
(2)查看表o的依赖关系。
实验6
数据的复制与恢复
1.实验目的
(1)熟练掌握附加数据库的方法。
(2)熟练掌握数据导入和导出的方法。
(3)熟练进行数据库的备份和还原。
(4)了解差异备份和完全备份。
2.实验内容
(1)对“进销存”数据库进行附加操作。
(2)使用SQL语句对SM数据库进行附加操作。
(3)对SM数据库进行备份。
(4)删除SM数据库。
(5)还原SM数据库。
(6)将SM数据库中的数据导入到Excel表格中。
(7)将Excel表中的数据导入到SS数据库中。
实验6
数据的复制与恢复
3.问题解答
(1)系统数据库可以还原吗?
在SQL Server 中,系统数据库存储的是系统信息,如果系统数据
库被破坏,就必须还原系统数据库。
系统数据库的还原分为两种情况,当SQL Server服务可以启动时
,可以用还原用户数据库的方法还原系统数据库;当SQL Server服务
不能启动时,还原系统数据库的方法如下。
① 运行/binn下的文件“Rebuilem.exe”,重建系统数据库。
② 启动SQL Server服务。
③ 按Master,Msdb,Model的顺序还原系统数据库。
实验6
数据的复制与恢复
3.问题解答
(2)在SQL Server 2000中,备份类型主要有哪些?
① 完全备份:对数据库整体的备份。
② 差异备份:对数据库自前一个完全备份后改动的部分的备份。
③ 事务日志备份:对数据库事务日志的备份。
实验6
数据的复制与恢复
3.问题解答
(3)利用数据导入导出,可以完成数据库的复制和恢复吗?
可以,具体操作如下。
① 复制数据库结构。启动企业管理器,将鼠标指针指向左侧窗口要
复制的数据库节点,单击鼠标右键,在弹出的快捷菜单中选择“
所有任务”→“生成SQL脚本”命令,生成数据库结构的SQL脚本
文件。
② 导出数据库数据。使用DTS将数据库中的数据导出到目标文件中
。
③ 创建数据库。
④ 生成数据库结构。在查询分析器中,执行数据库结构的SQL脚本
文件,生成指定数据库。
⑤ 导入数据库数据。使用DTS将目标文件中的数据导入数据库中。
实验6
数据的复制与恢复
4.思考题
(1)分析下列SQL语句的功能。
① SP_ADDUMPDEVICE 'disk', 's_bak_mdf',
'd:\example\s_bak_mdf.bak'
GO
SP_ ADDUMPDEVICE 'disk', 's_bak_log',
'd:\example\s_bak_log.bak'
GO
BACKUP DATABASE SM TO s_bak_mdf
BACKUP DATABASE SM TO s_bak_mdf WITH DIFFERENTIAL
BACKUP LOG SM TO s_bak_log
② RESTORE DATABASE SM FROM bak
RESTORE LOG SM FROM bak_log
实验6
数据的复制与恢复
4.思考题
(2)对SM数据库进行差异备份、日志备份。
(3)使用向导备份“进销存”数据库。
(4)某企业的数据每周日晚12点进行一次全库备份,每天晚12点进行
一次差异备份,每小时进行一次日志备份,数据库在2006/12/23
3:30崩溃,应如何恢复使数据损失最小?
(5)数据导入、导出的主要作用是什么?
实验7
表的维护
1.实验目的
(1)熟练掌握用企业管理器修改表。
(2)能够运用T-SQL语句对表结构进行修改。
(3)熟练掌握用企业管理器编辑表中的数据。
(4)能够运用T-SQL语句对表中的数据进行插入、修改和删除操作。
2.实验内容
(1)使用企业管理器为表Student增加一列。
(2)用SQL语句修改表Course的列属性,将CName的长度改为40,且不
允许空。
(3)用SQL语句向表Student中增加列Email,且要求输入的电子邮件地
址必须包括“@”字符。
(4)用SQL语句删除表Student中的列Address。
(5)用SQL语句给表Student添加主键约束。
实验7
表的维护
2.实验内容
(6)删除SName列上的主键约束。
(7)使用with nocheck子句。
(8)使约束无效或重新有效。
(9)使用企业管理器编辑表Student中的数据。
(10)用SQL语句向表中插入数据。
(11)用SQL语句修改表中的记录。
(12)用SQL语句删除表中的记录。
实验7
表的维护
3.问题解答
如果一个表被其他表通过外码约束引用,应该怎样删除?
如果一个表被其他表通过外码约束引用,那么必须先删除定义外
码约束的表,或删除其外码约束,当没有其他表引用它时,这个表才
能被删除。
实验7
表的维护
4.思考题
(1)TRUNCATE TABLE语句的作用是什么?
(2)对于表Student,分别执行DROP TABLE Student和DELETE Student
两条命令,结果有什么不同?
实验8
常规数据查询
1.实验目的
(1)掌握SELECT子句以及WHERE子句的使用方法。
(2)学会应用ORDER BY子句。
(3)掌握5种基本的聚合函数。
(4)学会分组统计和二次查询。
2.实验内容
(1)SELECT子句的应用。
(2)WHERE子句的应用。
(3)ORDER BY子句的应用。
(4)聚合函数的应用。
(5)聚合操作与分组统计的应用。
实验8
常规数据查询
3.问题解答
(1)COMPUTE,COMPUTE BY和GROUP BY有何不同?
GROUP BY子句对查询结果进行分组,其返回的结果中只有合计数据,而
没有原始的详细记录;COMPUTE子句生成合计作为附加的汇总列出现
在结果集的最后;当与BY一起使用时,COMPUTE子句在结果集内生成
控制中断和分类汇总,可在同一查询内指定COMPUTE BY子句和
COMPUTE子句。
(2)WHERE子句与HAVING子句有何不同?
HAVING子句和WHERE子句的相似之处就是都定义搜索条件;但是和WHERE
子句不同,HAVING子句与组有关,而不是与单个的行有关。
实验8
常规数据查询
4.思考题
用SQL语句完成下列查询。
① 查询所有年龄为20岁的男生的信息。
② 查询选修00001号课程的学生的最高分。
③ 查询所有名字中含有“王”字的学生的信息。
④ 查询本学期正在选修00003号课程的学生的学号。
实验9
多表查询与子查询
1.实验目的
(1)熟悉基本的连接操作,掌握内连接与外连接的方法,学会应用自身连接。
(2)掌握相关子查询的使用方法。
(3)掌握嵌套子查询的使用方法。
(4)学会应用子查询修改数据。
2.实验内容
(1)基本连接操作。
(2)内连接操作。
(3)外连接操作。
(4)联合查询。
(5)交叉连接。
(6)自连接。
(7)使用IN关键字。
(8)使用EXISTS关键字。
(9)使用比较运算符。
(10)使用子查询修改数据。
实验9
多表查询与子查询
3.问题解答
(1)创建查询时,应遵循的基本原则有哪些?
创建查询时,应遵循的基本原则如下:
• FROM子句应当包括所有的表名。
• WHERE子句应定义一个条件表达式,限定查询只能返回满足条件
的记录。
• 当列名为多个表共有时,列名必须被限制。
实验9
多表查询与子查询
3.问题解答
(2)在含有JOIN关键字的连接查询中,其连接条件主要是通过哪些方
法定义两个表在查询中的连接方式?
 指定每个表中要用于连接的列,典型的连接条件是在一个表中指
定外键,在另一个表中指定与其关联的键。
 指定比较各列的值时,要用比较运算符。
(3)使用EXISTS关键字引入的子查询与使用IN关键字引入的子查询在
语法上有哪些不同?
主要有以下两方面不同。
 EXISTS关键字前没有列名或表达式。
 由EXISTS关键字引入的子查询的SELECT列表通常都是由星号(*
)组成。
实验9
多表查询与子查询
3.问题解答
(4)能够在WHERE中使用的运算符有哪些?各运算符的功能是什么?
能够在WHERE中使用的运算符及其功能如表1-9-1所示。
实验9
多表查询与子查询
4.思考题
连接表时,根据SELECT语句的不同,有时查询结果中会返回重复
的行,应怎样使查询结果中不出现重复的行?
实验10
视图
1.实验目的
(1)掌握创建视图的方法。
(2)能够对视图进行修改。
(3)能够通过视图修改数据。
2.实验内容
(1)创建视图。
(2)更新视图定义。
(3)删除视图。
(4)更新视图。
实验10
视图
3.问题解答
(1)什么是可更新视图?
如果创建一个视图,该视图没有汇总或聚集数据,每一列与一个
基表中的一个源列对应,并且每一行都与一个源行对应,则这个视图
便是一个可更新视图。
实验10
视图
3.问题解答
(2)什么是关系图?如何建立和修改关系图?
关系图是用来标记数据库中表之间的相互关联情况的,以图形显
示通过数据连接选择的表或表结构化对象,同时也显示它们之间的连
接关系。
在SQL Server中,一个数据库可以有多个关系图。在企业管理器
中,依次展开树型目录,在指定数据库目录中选择“关系图”选项,
单击鼠标右键,从弹出的快捷菜单中选择“新建数据库关系图”命令
,可以创建新的关系图。对控制台目录中已有关系图的图标,选中一
个单鼠标右键,从弹出的快捷菜单中选择“设计关系图”命令,可以
对现有关系图进行修改。
实验10
视图
4.思考题
(1)用SQL语句完成下列操作。
① 建立所有年龄为20岁的男生的视图。
② 将学生的学号和所选课程的门数建立一个视图。
③ 将所有职工的职工号和年薪建立一个视图。
④ 删除上面所建立的视图。
(2)使用企业管理器完成上题所有操作。
(3)使用视图向导创建所有年龄为20岁的男生的视图。
(4)哪些视图不允许更新?
实验11
索引的创建与使用
1.实验目的
(1)理解索引的概念和索引的作用。
(2)掌握创建索引的方法。
(3)学会使用索引。
(4)了解聚簇索引和非聚簇索引。
2.实验内容
(1)在TName列上创建索引。
(2)使用索引向导,在SM数据库中,为表Student创建索引。
(3)使用SQL语句在表Course上创建一个唯一性的聚簇索引,索引排列
顺序为降序。
(4)使用SQL语句在表Course上创建一个非唯一性的非聚簇索引。
(5)查看表Course上的所有索引。
(6)删除表Course上的索引。
实验11
索引的创建与使用
3.问题解答
(1)创建索引之前应考虑什么问题?
创建索引之前应考虑如下问题:
• 只有表的拥有者才能在表上创建索引。
• 每个表上只能创建一个聚簇索引。
• 每个表上最多能创建249个非聚簇索引。
• 一个索引最大为900字节,在CHAR等类型的大型列上创建索引应
考虑这一限制。
• 一个索引最多包含16列。
实验11
索引的创建与使用
3.问题解答
(2)如何通过企业管理器在已存在的表上建立索引、查看索引、修改
索引和删除索引?
在企业管理器中,用鼠标右键单击已存在的表,在弹出的快捷菜
单中选择“所有任务”→“管理索引”命令,在“管理索引”窗口中
进行相关操作。
实验11
索引的创建与使用
4.思考题
(1)索引是否越多越好?为什么?
(2)聚簇索引和非聚簇索引有何区别?为什么每个表只能有一个聚簇
索引?
实验12
管理数据库其他对象
1.实验目的
(1)掌握如何创建、修改和删除规则。
(2)理解规则与CHECK约束、DEFAULT约束的区别。
(3)掌握如何创建、修改和删除默认值。
(4)掌握如何创建、修改、删除和查看用户自定义的数据类型。
2.实验内容
(1)创建规则。
(2)捆绑规则。
(3)解除捆绑的规则。
(4)查看规则。
(5)删除规则。
(6)关于默认值的操作。
(7)关于用户自定义数据类型的操作。
实验12
管理数据库其他对象
3.问题解答
规则与CHECK约束的不同之处在哪里?
规则与CHECK约束的不同之处如下。
① CHECK约束是用CREATE TABLE语句在建表时指定的,而规则则需
要作为单独的数据库对象来实现。
② 在一列上只能使用一个规则,但可以使用多个CHECK约束。
③ 规则可以应用于多个列,还可以应用于用户自定义的数据类型;
而CHECK约束只能应用于它所定义的列。
实验12
管理数据库其他对象
4.思考题
(1)为表中数据提供默认值有几种方法?
(2)创建一个用户自定义数据类型faxno,基本数据类型为VARCHAR,
长度为24,不允许为空。
实验13
常量、变量及函数
1.实验目的
(1)了解T-SQL、常量和变量。
(2)掌握SQL Server中运算符与表达式的使用。
(3)掌握SQL Server中函数的使用。
2.实验内容
(1)全局变量。
(2)局部变量。
(3)函数。
(4)组织SQL语句。
实验13
常量、变量及函数
3.问题解答
(1)什么是T-SQL?
T-SQL(Transact SQL)是Microsoft微软公司在Sysbase的基础
上发展起来的一种结构化查询语言,是应用程序和存储过程与SQL
Server通信的工具。T-SQL不是一种标准的编程语言,它必须通过SQL
Server的数据引擎来分析和运行。
(2)在T-SQL程序设计过程中,定义的常量类型有哪些?
常量可以分为字符串常量、整型常量、日期时间常量、实型常量
、货币常量和全局唯一标识符。
实验13
常量、变量及函数
4.思考题
(1)执行多条SQL语句有几种方法?
(2)在SQL Server中,标识符@、@@、#、##的意义是什么?
(3)找出下列语句的语法错误。
USE northwind
GO
DECLARE @ss INT
/*start of the split comment,
GO
End of the split comment,*/
SELECT @ss=89
GO
实验14
流程控制语句
1.实验目的
(1)熟悉流程控制关键字。
(2)掌握流程控制关键字的使用方法。
2.实验内容
(1)使用IF…ELSE语句。
(2)使用WHILE语句。
(3)使用WAITFOR语句。
(4)使用GOTO语句。
(5)使用CASE语句。
(6)使用RAISERROR语句。
实验14
流程控制语句
3.问题解答
T-SQL的流控制关键字包括哪些?
T-SQL的流控制关键字包括:BEGIN…END,WAITFOR,GOTO,
WHILE,IF…ELSE,BREAK,RETURN和CONTINUE。
实验14
流程控制语句
4.思考题
编程实现以下查询:在SM数据库中,查询是否有选修00004号课程的学
生,如果有,统计成绩大于90分的学生的个数;如果没有,查询是否
有选修00005号课程的学生,如果存在,显示所有选修00005号课程的
学生总数,否则显示“尚无选修00004号课程和00005号课程的学生”
。
实验15
存储过程
1.实验目的
(1)了解几个常用的系统存储过程。
(2)掌握如何使用T-SQL语句创建、执行和重编译存储过程。
(3)了解如何使用企业管理器管理存储过程。
2.实验内容
(1)创建存储过程。
(2)使用输入参数。
(3)使用默认参数值。
(4)使用输出参数。
(5)使用返回值。
(6)修改存储过程。
(7)查看存储过程。
(8)删除存储过程。
实验15
存储过程
3.问题解答
创建存储过程之前应考虑什么?
创建存储过程之前应考虑以下4点:
• CREATE PROCEDURE语句不能与别的T-SQL语句位于同一个批中;
• 创建存储过程的权限默认属于数据库拥有者,该权限可以授予他
人;
• 存储过程是数据库对象,它的命名应符合标识符的命名规范;
• 只能在当前数据库中创建存储过程。
实验15
存储过程
4.思考题
(1)使用企业管理器创建存储过程ssc_3。
(2)使用向导创建存储过程ssc_3。
(3)使用企业管理器查看存储过程ssc_3的定义。
(4)使用企业管理器删除存储过程ssc_3。
实验16
触发器
1.实验目的
(1)掌握如何使用T-SQL语句创建触发器。
(2)了解如何使用企业管理器创建触发器。
(3)掌握AFTER触发器的用法,并了解INSTEAD OF触发器的用法。
2.实验内容
(1)创建触发器。
(2)修改scinsert触发器。
(3)查看依赖关系。
(4)使触发器无效或重新有效。
(5)删除scinsert触发器。
实验16
触发器
3.问题解答
什么是INSERTED表和DELETED表?
SQL Server为每个触发器都创建了两个专用表:INSERTED表和
DELETED表。这是两个逻辑表,由系统来维护,用户不能对它们进行
修改。它们存放在内存而不是数据库中。这两个表的结构总是与被该
触发器作用的表的结构相同。触发器执行完成后,与该触发器相关的
这两个表也被删除。
DELETED表存放由于执行DELETE或UPDATE语句而要从表中删除的
所有行。在执行DELETE或UPDATE操作时,被删除的行从激活触发器的
表中被移动到DELETED表,这两个表不会有共同的行。
INSERTED表存放由于执行INSERT或UPDATE语句而要向表中插入的
所有行。在执行INSERT或UPDATE操作时,新的行同时添加到激活触发
器的表和INSERTED表中,INSERTED表的内容是激活触发器的表中新行
的备份。
实验16
触发器
4.思考题
(1)在创建触发器之前要考虑哪些问题?
(2)通过ALTER TRIGGER语句可以修改触发器吗?
实验17
SQL游标
1.实验目的
(1)掌握如何声明游标。
(2)掌握如何打开和关闭游标的方法。
(3)学会用游标进行数据检索。
2.实验内容
(1)声明游标
(2)打开和关闭游标。
(3)使用游标检索数据。
(4)定位UPDATE语句和DELETE语句。
实验17
SQL游标
3.问题解答
要完全实现游标的功能必须使用哪些SQL语句?
① DECLARE CURSOR语句:该语句通过定义游标名称、游标特征来声
明游标。
② OPEN语句:使用该语句打开游标并调用查询表达式,生成可被
FETCH语句使用的查询结果。
③ FETCH语句:该语句把数据赋予变量,并通过变量把数据传递为
程序设计语言或其他嵌入式SQL语句。
④ CLOSE语句:该语句用来关闭游标,游标一旦关闭,就不能再从
查询结果中执行数据检索。
实验17
SQL游标
4.思考题
(1)什么是游标?其作用是什么?
(2)在FETCH语句中可以添加NEXT,FIRST,LAST,PRIOR,ABSOLUTE和
RELATIVE关键字,说明这些关键字的含义以及在什么样的游标中可以
使用。
实验18
事务与并发控制
1.实验目的
(1)学会创建事务。
(2)学会定义事务的隔离级别。
(3)了解事务模式及锁模式。
2.实验内容
(1)创建事务。
(2)事务模式。
(3)用户可以自定义事务隔离级别。
(4)锁模式。
实验18
事务与并发控制
3.问题解答
(1)怎样设置自动提交事务模式?
自动提交事务是SQL Server的默认事务管理模式,只要自动提交
事务模式没有被显式或隐性事务代替,则SQL Server连接时仍以该默
认管理模式进行操作。
实验18
事务与并发控制
3.问题解答
(2)ANSI SQL 92中定义了4个事务隔离级别,每个级别解决并发问题
的能力如何?
ANSI SQL 92中定义了4个事务隔离级别,每个级别解决并发问题
的能力如表1-18-1所示。
实验18
事务与并发控制
4.思考题
(1)SQL Server中有几种锁模式?
(2)乐观锁和悲观锁的优缺点各是什么?
实验19
数据库安全
1.实验目的
(1)掌握如何添加、删除和修改数据库用户。
(2)掌握如何添加、删除数据库角色以及如何为数据库角色添加和删除
用户。
(3)掌握如何授予、拒绝和剥夺权限。
(4)了解如何管理应用程序角色。
(5)掌握通过视图保证数据的安全。
2.实验内容
(1)使用企业管理器为SM数据库添加一个数据库用户。
(2)使用系统存储过程完成上述操作。
(3)使用企业管理器删除数据库用户yy。
(4)使用企业管理器为SM数据库创建一个暂无成员的角色specialman
实验19
数据库安全
2.实验内容
(5)将数据库成员yy添加到specialman角色中。
(6)删除角色specialman。
(7)在SM数据库中创建应用程序角色gradeapp,口令为“password”
。
(8)将表SC上的所有权限授给角色gradeapp。
(9)在所用的应用程序中激活角色gradeapp。
(10)修改应用程序角色gradeapp的口令。
(11)删除应用程序角色。
(12)练习权限的授予。
(13)练习权限的收回。
(14)在表Student上创建一个简单的视图,对视图进行加密,并使用
企业管理器来查看其属性。
(15)采用视图机制,使数据库用户yy只能看到表Student中040003班
的学生。
实验19
数据库安全
3.问题解答
(1)SQL Server的权限分为几种?
SQL Server的权限分为3种:对象权限、语句权限和隐含权限。
(2)应用程序角色有什么作用?与标准数据库角色有什么区别?
SQL Server 2000中设计了应用程序角色的概念,这种安全机制可
以指定一个数据库或其中的某些对象只能用某些特殊的应用程序访问
,而不能允许用户用任何工具来进行操作,更有利于保证数据的完整
性和一致性。它和标准数据库角色的区别如下。
• 应用程序角色不包含成员,任何用户都不能加入应用程序角色。应
用程序角色的权限在角色被激活时生效,一个用户是通过有权启动该
应用程序而不是通过加入该应用程序角色来获得权限。
• 应用程序角色在激活时需要口令。
• 在激活应用程序角色以后,当前用户的一切权限都会消失,代之以
应用程序角色的权限。
实验19
数据库安全
4.思考题
(1)用企业管理器完成上述的权限授予操作。
(2)用企业管理器删除角色specialman。
(3)使用存储过程删除数据库用户yy。
(4)用企业管理器将数据库成员yy添加到specialman角色中。
(5)如何通过视图实现列级数据安全?
实验20
访问SQL Server
1.实验目的
(1)学会使用ADO访问SQL Server。
(2)掌握配置SQL Server的ODBC数据源的方法。
(3)学会使用Web助手访问SQL Server。
(4)了解使用JDBC访问SQL Server。
2.实验内容
(1)使用ADO访问SQL Server中的数据。
(2)使用ODBC访问SQL Server中的数据。
(3)使用JDBC访问SQL Server中的数据。
(4)使用Web助手访问SQL Server中的数据。
实验20
访问SQL Server
3.问题解答
什么是SQL Server API?它提供了哪些应用程序接口?
API(Application Program Interface)就是应用程序编程接口
,它是能用来操作组件、应用程序或者操作系统的一组函数。典型的
情况下,API由一个或多个提供某种特殊功能的 DDL 组成。
SQL Server支持多种数据应用程序接口(API):活动数据对象
(ADO)、OLE DB开放式数据库连接(ODBC)、远程数据对象(RDO)
、数据访问对象(DAO)、Microsoft基础类(MFC)的数据库类、嵌
入式SQL和DB-Library。SQL Server通常以动态链接库(DDL)的形式
(称为提供程序或驱动程序)支持这些API。提供程序或驱动程序将
应用程序对数据库API的调用转换成可发送到SQL Server实例的命令
。
实验20
访问SQL Server
4.思考题
(1)在使用SQL Server的应用程序中,通用的API有哪些?
(2)ODBC数据源可以分为3种类型,分别是什么?
(3)JDBC的功能是什么?
第二篇
设计篇
第二篇
设计篇
PowerDesigner是Sybase公司推出的企业级建模及设计工具,是一种图
形化的易于使用的CASE工具集,使用它可以方便地进行数据库的分
析与设计。
本篇从学籍管理的需求分析开始,以PowerDesigner 12.0版本为主,实
现数据库设计的全过程,并通过触发器、存储过程、函数等特殊数据
对象的设计,完成学籍管理的一些复杂的业务逻辑,使读者对数据库
设计的认识更加直接,对数据库设计理论的理解也更加深刻。
本篇设计1~设计5由下列5部分组成:
 设计目的
 背景知识
 设计内容
 问题解答
 思考题
设计6~设计9中不包含背景知识部分,如果需要可以参考第一篇中的相
关内容。
设计1
安装数据库设计工具PowerDesigner
1.设计目的
(1)掌握PowerDesigner的安装步骤。
(2)了解PowerDesigner的操作环境。
(3)了解PowerDesigner的基本功能。
2.背景知识
PowerDesigner是Sybase公司推出的企业级建模及设计工具,是一
种图形化的易于使用的CASE工具集,使用它可以方便地进行数据库
的分析与设计。利用PowerDesigner可以设计业务处理模型、数据
流程图、概念数据模型、物理数据模型。为了方便数据库设计人员使
用PowerDesigner进行数据库设计,PowerDesigner提供多种工具。
同时PowerDesigner提供方便团队开发的辅助控制功能,如概念模
型的合并与分解功能。另外利用PowerDesigner可以生成多种客户
端开发工具的应用程序,还可为数据仓库制作结构模型。
目前PowerDesigner已经推出PowerDesigner 12.0版本。
设计1
安装数据库设计工具PowerDesigner
3.设计内容
(1)获取PowerDesigner的安装文件及产品注册信息。
(2)安装PowerDesigner。
(3)启动PowerDesigner。
设计1
安装数据库设计工具PowerDesigner
4.问题解答
(1)PowerDesigner能够设计哪些模型?分别对应数据库设计的哪些
阶段?
① 业务处理模型(Business Process Model,BPM)
BPM用于数据库设计的需求分析阶段。该模型包括层次结构图
(Process hierarchy diagram)和业务处理图(Business
process diagram)。
② 概念模型(Conceptual Data Model,CDM)
CDM用于数据库的概念结构设计阶段,表现数据库的逻辑结构。类
似数据库设计中的E-R图,CDM独立于DBMS与应用软件。
③ 物理模型(Physical Data Model,PDM)
PDM用于数据库的逻辑设计和物理设计阶段,表现数据库的逻辑结
构和物理结构。PDM提供操作PDM(Operational PDM)与智能
商务PDM(Business intelligence PDM)。
④ 面向对象模型(Object-Oriented Model,OOM)
PowerDesigner引进了UML,推出了一套符合UML规范的图形。例
如:用例图、活动图、时序图、状态图等。
设计1
安装数据库设计工具PowerDesigner
4.问题解答
(2)PowerDesigner的模型设计界面包括哪些区域?
PowerDesigner的功能十分强大,而且使用非常方便。各模型的设
计界面风格统一,只是提供的工具和设计元件不同。只要掌握了设计
元件的图形表示及其含义,就可以结合具体应用进行设计。
图2-1-3所示为CDM的设计界面说明,其他模型的设计界面与此类似。
PowerDesigner的操作界面包括菜单区、模型对象浏览区、设计区、
设计元素面板和信息输出区。各区域的默认位置如图2-1-3所示,可
以根据需要通过鼠标将某些区域拖动到指定位置。
(3)PowerDesigner提供哪些工具辅助数据库设计?
模型设计过程中可以使用一些工具进行辅助设计,如进行模型检查,
不同模型的转换,模型分解与合并,自动生成脚本,自动生成设计报
告等。设计人员在使用这些模型时,可以借助PowerDesigner提供
的联机帮助文档,来学习这些工具的使用。
设计1
安装数据库设计工具PowerDesigner
4.问题解答
(4)如何修复或卸载PowerDesigner?
可以使用如下两种方式修复和卸载PowerDesigner。
① 使用PowerDesigner安装程序powerdesigner12_eval.exe,选
择 “完善(Modify)” 、 “修复(Repair)”或“卸载
(Remove)”选项。
② 使用Windows控制面板的“添加/删除应用程序”工具。
(5)如何使用PowerDesigner提供的范例模型?
PowerDesigner提供的范例模型位于PowerDesigner安装路径下的
Examples文件夹中。如果在PowerDesigner安装过程中使用默认路
径,则范例模型位于C:\Program Files\Sybase\PowerDesigner
12\Examples下。通过PowerDesigner的文件操作便可以打开这些
范例模型,进行学习。
设计1
安装数据库设计工具PowerDesigner
5.思考题
(1)通过PowerDesigner的帮助文档,说明PowerDesigner能够设计
哪些模型。
(2)数据库设计阶段需要设计哪些模型?
设计2
学籍管理系统需求分析
1.设计目的
(1)熟练掌握数据流图的分析过程和设计方法。
(2)熟练掌握数据字典的编写方法。
2.背景知识
需求分析是在了解用户组织机构情况、各部门业务活动情况,分析用
户提出的初步需求的基础上,确定系统完整、准确、清晰、具体的功
能要求,并且分析形成用户业务处理的数据流(信息流)和数据字典。
画数据流图的基本步骤是自外向内,自顶向下,逐层细化,完善求精。
需求分析阶段要求分析设计人员和用户紧密配合,采取多种形式,共
同对业务活动、组织情况、初步需求进行详细分析。只有这样才能设
计出符合实际需求和业务活动的数据流图,为后续设计提供良好的基
础。
设计2
学籍管理系统需求分析
3.设计内容
(1)调查了解学籍管理系统的初步需求。
(2)根据系统的初步需求,分析设计顶层数据流图。
(3)根据顶层数据流图,细化出1层数据流图。
(4)继续细化数据流图。
(5)制订整理数据字典。
设计2
学籍管理系统需求分析
4.问题解答
一般来说,绘制数据流图采用什么方法?
对不同的系统,数据流图可以有不同的画法。一般遵循“由上向
下”、“由外向里”的原则,即先确定系统的边界或范围,再考
虑系统的内部,先画加工的输入和输出,再画加工的内部,然后
逐级分解细化加工,具体如下。
① 识别系统的输入和输出,画出顶层数据流图。
② 确定系统内部的数据流、加工与文件,画出一级细化图。
③ 继续按照“由外向里”的方法分解加工,画出更细的数据流图,
直到加工不能再被分解。
分解过程中,注意把握分解的程度。对于规模较大的系统,如果一
下子把加工直接分解成基本加工单元,一张图上难以画出过多的
加工,也增加了分解的复杂度。如果每次分解产生的子加工太少,
会使分解层次过多而增加作图的工作量,阅读也不方便。一般说
来分解时应遵循以下原则。
• 分解应自然,概念要合理、清晰。
• 上层可分解得快些,而下层应分解得慢些。
设计2
学籍管理系统需求分析
5.思考题
(1)需求分析阶段的设计目标是什么?
(2)数据字典通常包括哪些部分?
(3)按照成绩管理的设计方法和步骤,设计成绩管理中未完成的数据
流图和数据字典。
(4)按照成绩管理的设计方法和步骤,设计分析学生管理、教师管理
等的数据流图和数据字典。
设计3
学籍管理概念结构设计
1.设计目的
(1)熟练掌握概念结构的设计方法。
(2)熟练使用PowerDesigner进行CDM设计。
(3)学会使用PowerDesigner检测CDM模型的方法。
2.背景知识
概念结构一般都以E-R模型来描述,一般先抽象并设计分E-R图,然
后集成分E-R图,形成全局的E-R模型。
设计概念结构时通常需要先进行数据抽象,以中层数据流图为基础设
计分E-R图,然后解决分E-R图之间的冲突和冗余,形成基本E-R图。
为了体现分析设计的过程和方法,在下面的设计中,先用传统的方法
手工绘制E-R图,然后再使用PowerDesigner设计CDM。实际应用
时可以直接使用PowerDesigner进行CDM设计。
PowerDesigner提供了模型合并的功能(类似合并分E-R图形成初步
E-R图的功能),但合并之后形成的模型也需要设计人员检查是否存
在冗余和冲突,并进行相应调整。
设计3
学籍管理概念结构设计
3.设计内容
(1)选择学籍管理系统的局部应用。
(2)数据抽象、确定实体及其属性与码。
(3)确定实体间关系,设计分E-R图。
(4)合并图2-3-2与图2-3-3所示的分E-R图,生成初步E-R图。
(5)解决冲突,消除冗余,设计基本E-R图。
(6)使用PowerDesigner设计CDM。
设计3
学籍管理概念结构设计
4.问题解答
(1)PowerDesigner提供了哪些工具辅助CDM设计?
PowerDesigner提供了模型合并(Merge Model)、模型检查
(Check Model)、模型对比(Compare Model)等工具协助进行
CDM的设计。
模型合并:将两个CDM中的实体及实体间的关系(联系)合并在一
起,便于团队开发。
模型对比:检查两个CDM之间的不同点。
(2)怎样进入元素编辑状态?
在设计元素面板上选择一种设计元素,进入元素创建状态。使用鼠标
左键就可以在设计区域中创建这样的元素。如果不重新选取其他设计
元素,通过单击鼠标左键可以在设计区域连续创建这种类型的元素。
如果想编辑设计区域中已有元素的属性或删除特定的元素,可以将鼠
标指针指向设计元素面板中的指针(Pointer,图示为 ),进入元素
编辑状态。在设计区域中单击鼠标左键选取元素,完成特定操作,如:
移动元素的位置、修改元素属性、删除元素、使用鼠标右键的弹出式
菜单功能等。
设计3
学籍管理概念结构设计
(3)如何删除CDM中的实体或关系?
选择需要删除的对象,按Delete键,选择Delete object(删除对象)
单选钮将在CDM中删除对象;选择Delete symbols only(删除符号)
单选钮只图2-3-12 删除对象界面,将符号从CDM中删除,模型中不再
显示该符号,但还存在该对象。
(4)如何设置模型中各种符号的格式?
可以通过两种方式设置各种模型中任何符号的格式:直接设置格式、
应用已有格式。
① 直接设置格式
② 应用已有格式
(5)设计元素面板中的其他设计元素有什么功能?
除了模型特定的设计元素之外,设计元素面板上还提供其他辅助设
计元素。用于放大视图,可以缩小视图,可以编辑元素属性,用于调
整视图位置,可以剪切元素,可以设置模型标题,可以填加备注信息。
设计3
学籍管理概念结构设计
5.思考题
(1)利用PowerDesigner提供的工具进行模型合并、模型检查。
(2)使用位于安装路径下..\Examples中的范例project.cdm,进行格
式设置练习。
设计4
学籍管理逻辑结构与物理结构设计
1.设计目的
(1)熟练掌握E-R图转换为关系模式的方法。
(2)掌握使用PowerDesigner直接设计PDM的方法。
(3)掌握使用PowerDesigner将CDM转化为PDM的方法。
2.背景知识
在概念结构的基础上,选择一种合适的DBMS就可以进行逻辑结构和
物理结构的设计了。逻辑结构需要将E-R图转换为关系模型,实际上
就是要将实体、实体的属性和实体之间的联系转化为关系模式。为方
便局部用户的使用,提高用户使用效率,逻辑结构设计还包括用户子
模式的设计。
PowerDesigner的PDM可以描述逻辑结构和物理结构。
设计4
学籍管理逻辑结构与物理结构设计
3.设计内容
(1)将实体转化为关系模型。
(2)将联系转化为关系模型。
(3)设计用户子模式。
(4)使用PowerDesigner设计PDM。
设计4
学籍管理逻辑结构与物理结构设计
4.问题解答
(1)PowerDesigner的逆向工程(Reverse Engineer)能完成什么功
能?
逆向工程可以根据已有的数据库结构、XML文档、面向对象的模型等自
动生成PDM。
(2)PowerDesigner能生成设计报告吗?
PowerDesigner可以根据需要,产生设计报告。报告可以是HTML或
RTF格式,并且允许用户自己定义报告模板。
(3)如何自动生成PDM?
在CDM不存在错误(警告不影响模型转换)的情况下,可以使用将
CDM转换为PDM的工具进行模型转换
设计4
学籍管理逻辑结构与物理结构设计
5.思考题
(1)使用PowerDesigner,将设计3中设计好的学籍管理CDM转换为
PDM。
(2)对比分析转换生成的PDM与手工设计的PDM模型之间的关系。
设计5
学籍管理数据库实施
1.设计目的
(1)熟练掌握数据库实施的主要内容。
(2)能够使用PowerDesigner生成数据库创建脚本并自动创建数据库,
熟练掌握利用PowerDesigner进行数据库实施的方法。
2.背景知识
数据库实施阶段需要根据前阶段设计好的数据库物理模型,自动生成
数据库对象创建脚本,并自动创建数据库,同时组织数据入库。
PowerDesigner可以根据设计好的PDM自动生成数据库及其对象的
创建脚本,通过ODBC和数据库进行连接,连接成功之后可以创建数
据库对象。
PowerDesigner还可以根据PDM中定义的各种约束自动生成一些测
试数据。
设计5
学籍管理数据库实施
3.设计内容
(1)打开设计好的学籍管理PDM。
(2)产生数据库。
(3)执行脚本。
(4)产生测试数据。
设计5
学籍管理数据库实施
4.问题解答
(1)怎样检测PDM的正确性?
在PowerDesigner的主窗体中选择“Tools”→“Check Model”命令,
可以检测PDM。
(2)在生成数据库脚本时,为什么不能正常产生脚本?
PDM模型存在错误,就不能正确生成数据库脚本,需要使用模型检
查工具检查错误、排除错误。
(3)生成的数据库脚本在执行过程中为什么会提示错误?
这种现象与设置数据库脚本的格式有关。
如果数据库中已经存在数据库对象,需要删除原有的数据库对象。因
此在设置数据库脚本格式时就需要选择先删除对象后创建的格式;反
之,如果数据库中没有数据库对象时,在设置脚本格式时,就不能选
择先删除后创建的格式。
设计5
学籍管理数据库实施
5.思考题
(1)怎样创建ODBC数据源?
(2)使用位于安装路径下..\Examples中的范例project.pdm,设置不
同的数据库生成选项,通过预览结果,对比生成脚本的不同之处。
(3)创建project数据库,并使用project.pdm,为该数据库产生测试
数据。
设计6
学分学期转换函数设计
1.设计目的
(1)运用SQL基本知识,编写学期转换函数。
(2)运用SQL基本知识,编写学分转换函数,将考试成绩转换为学分。
(3)通过上述函数的编写与调试,熟练掌握
SQL函数的编写、调
试与使用方法。
2.设计内容
(1)根据需求,分析并设计函数的功能、入口参数和返回值。
(2)启动SQL Server 2000的查询分析器,选择数据库学籍管理数据库
SM。
(3)在查询分析器中编写函数。
(4)按F5键或单击工具栏上的“执行查询”图标来创建函数。
(5)如果函数中存在语法错误,定位错误,并修改错误。
(6)如果没有语法错误,在查询分析器中执行函数,检查函数的执行
结果。
(7)检查函数的执行结果是否正确。如果不正确,修改函数逻辑。
设计6
学分学期转换函数设计
3.问题解答
(1)如何修改函数?
修改函数定义可以通过以下几种方法完成:
• 通过alter function的SQL语句完成;
• 通过查询分析器,在需要修改的函数上使用鼠标右键快捷菜单中的编
辑功能;
• 通过企业管理器修改。
(2)如何删除函数?
删除函数可以通过以下几种方法完成:
• 通过drop function的SQL语句完成;
• 通过查询分析器,在需要删除的函数上使用鼠标右键快捷菜单中的删
除功能;
• 通过企业管理器删除。
设计6
学分学期转换函数设计
4.思考题
(1)编写函数,实现根据考试成绩将其转换为通过与不通过的描述。
(2)如何调用用户定义的函数。
设计7
汇总平均成绩存储过程设计
1.设计目的
(1)运用SQL基本知识,编写汇总平均成绩的存储过程,自动汇总各
班的平均成绩。
(2)通过上述存储过程的编写与调试,熟练掌握存储过程的编写、调
试与使用方法。
2.设计内容
(1)根据需求,设计存储过程的功能、入口参数。
(2)分析需要使用哪些表。设计存储过程的算法。
(3)启动SQL Server 2000的查询分析器,选择数据库学籍管理数据库
SM。
(4)在查询分析器中编写存储过程。
(5)执行存储过程。如果存储过程中存在语法错误,定位错误,并修
改错误。
(6)检查执行结果是否正确。如果不正确,按照正确的逻辑修改存储
过程。
设计7
汇总平均成绩存储过程设计
3.问题解答
(1)在SQL程序开发过程中,会出现哪些错误?
语法错误是指不符合T-SQL规范的错误,这类错误会导致SQL语句不
能执行。不熟悉语法规范经常会导致这类错误的发生。
还有一些错误虽然没有语法错误,也不会使SQL语句执行失败,但是
却不能实现预设的功能,这是一种逻辑错误。逻辑错误不仅会发生在
程序开发阶段,也常常会出现在程序实际运行阶段。只有非常清楚程
序需要实现的功能,才能避免此类错误。如果发生了逻辑错误,可以
跟踪程序的执行流程,逐行或逐段检测程序执行结果,发现产生问题
的原因。有些SQL开发工具(如PL/SQL Developer)允许在程序中
设置断点,检查一些变量的中间执行结果,很容易调式程序。如果没
有此类工具,可以在程序中增加一些输出提示来解决。
运行时错误是指SQL程序在执行过程中出现的意想不到的错误,如
由于锁表影响对数据表的更改,修改数据库对象时违反数据完整性与
一致性的约束等。这类错误导致了一些SQL语句执行失败。采取必要
的边界处理和错误处理,才能减少此类错误的发生。
设计7
汇总平均成绩存储过程设计
3.问题解答
(2)在存储过程编写过程中,怎样发现错误发生的位置,并进行排除?
SQL Server 2000的查询分析器可以指出发生语法错误的位置。
通过注释可疑语句,编译通过之后再依次加入的方法来实现定位。
程序的复杂性会影响程序的调试。因此编写程序时,应做必要的注释,
以增加程序的可读性。出现错误时,可以把程序化为简单的可测程序。
先注释或删除程序的一部分代码,检测执行情况。如果能正常执行,
说明错误的原因不是本段代码,加入其他代码后继续检查;否则错误
的部分原因是本段代码,认真检查和调试无误后,再加入其他代码。
一旦定位了错误发生的位置,就需要进一步判断错误发生的原因。语法
错误和运行时错误都会影响程序的正常执行。这类错误可以通过相应
的语法知识、程序运算的中间运行结果、系统提供的错误代码等来判
断。需要在程序中加强边界条件的处理以及异常处理,尽量减少错误
的发生。PL/SQL,T-SQL等都定义了完善的错误代码,必要时,可
将错误代码转换成错误提示输出。
设计7
汇总平均成绩存储过程设计
4.思考题
(1)在上述SQL程序开发过程中遇到了哪些错误?是怎样排除的?
(2)编写SQL程序,统计每班在各学年中的考试情况,包括总平均成
绩和每门课程的平均成绩。
设计8
统计不同分数段人数存储过程设计
1.设计目的
(1)运用SQL基本知识,编写统计不同分数段人数的存储过程。
(2)通过上述存储过程的编写与调试,熟练掌握存储过程的编写、调
试与使用方法。
2.设计内容
(1)根据需求,设计存储过程功能要求。
(2)设计存储过程的算法。
(3)在查询分析器中编写存储过程。
(4)执行存储过程。如果存储过程中存在语法错误,定位错误,并修
改错误。
(5)检查执行结果是否正确。如果不正确,按照正确的逻辑修改存储
过程。
设计8
统计不同分数段人数存储过程设计
3.问题解答
(1)怎样高效地编写SQL程序?
在实际应用中,存储过程要实现复杂的业务逻辑。因此在编写SQL
程序之前,必须注意以下问题。
① 熟悉表之间的关系。
② 熟悉业务加工逻辑。
③ 根据业务逻辑,设计程序流程。
④ 熟悉SQL语法,能够快速根据程序算法及流程编写程序。
⑤ 熟悉SQL语法,能够快速定位错误,并排除错误。
⑥ 通过大量实践,积累经验。
设计8
统计不同分数段人数存储过程设计
4.思考题
(1)总结本实验中出现的错误和解决办法。
(2)设计一个存储过程,实现汇总某学院不同年龄段不同职称的教师
人数。要求学院作为入口参数。
设计9
修改学分触发器设计
1.设计目的
(1)在成绩表上增加修改学分的触发器,实现修改成绩时自动修改学
生的学分。
(2)通过上述触发器的编写,掌握触发器的编写和调试方法。
(3)掌握如何降低触发器影响表操纵速度的方法。
2.设计内容
(1)启动SQL Server的查询分析器,选择学籍管理数据库SM,变更表
Student结构,增加总学分Scredits字段。
(2)根据需求,设计触发器功能。
(3)在查询分析器中编写触发器。
(4)执行存储过程。如果存储过程中存在语法错误,定位错误,并修
改错误。
(5)检查执行结果是否正确。如果不正确,按照正确的逻辑修改存储
过程。
设计9
修改学分触发器设计
3.问题解答
触发器会影响对表的增、删、改记录的执行速度。怎样减小影响?
为了减少触发器对表的增、删、改记录执行速度的影响,可以通过限
制触发和降低被触发操作的复杂性来实现。
① 限制触发,只有特定列变更,才触发操作,可以使用以下两种方
法。
• 使用columns_updated()确定是否影响指定列,只有指定列发生
变化时才触发特定操作。
• 使用IF UPDATE (列名)子句可用来确定INSERT或UPDATE语句是
否影响到表中的一个特定列。当列被赋值时,该子句即为TRUE。
使用这种方法,如果特定列被赋值,执行一些操作,否则不做任
何操作。这样可以减小触发器对维护表的执行速度的影响。
② 降低被触发操作的复杂性,减少操作涉及的记录数,加快被触发
操作的执行速度。
• 使用INSERTED,DELETED逻辑表。只对插入或删除操作关联的
记录完成特定操作。
设计9
修改学分触发器设计
4.思考题
(1)在课程表上建立触发器,实现修改课程学分时,按照新的学分标
准,自动修改所有选修该课程并通过该课程的学生的总学分。
(2)从执行效率上,对比分析实验中创建的t_tcredits触发器和使用下
面方法创建的t_tcredits2触发器。在对表SC增、删、改记录时,这
两个触发器怎样影响执行速度?
第三篇
训练篇
第三篇
训练篇
如果说第一篇是对数据库的基础知识、基本技能的训练,第二篇是对数
据库分析与设计技巧的训练,那么本篇就是对数据库系统的综合训练,
其目的是帮助读者感性地认识数据库系统的各部分组成,结合开发工
具,加深对概念的理解,提升对知识的应用能力。
本篇的每个综合训练由下列4部分组成:
 基本要求
 分析设计
 能力提升
 拓展训练
分析设计部分侧重于数据库的训练,即如何设计一个合理的数据库;能
力提升部分侧重于用合适的开发工具把后台数据库的内容可视化地展
示出来,要用到一些先修课程的知识,读者可根据情况选择完成;拓
展训练可作为数据库课程设计题目,参照相应综合训练的要求完成。
综合训练1
进销存管理系统
1.基本要求
商品的进货、销售和库存管理复杂繁琐,需要耗费大量的时间和人
力对这些数据进行统计和分析。在商品种类繁多的情况下,传统的人
工管理方式存在基本资料保存与维护困难,无法及时调整进销存的关
系等问题,它们严重制约了企业的发展,所以需要通过进销存管理系
统来提高管理效率。
系统主要功能如下。
(1)资料管理:基础资料与合同的维护。
(2)采购管理:管理企业的采购业务。
(3)销售管理:管理企业的销售业务。
(4)库存管理:管理企业的库存信息。
(5)账务管理:管理企业的结账业务,每个月都要进行一次结账操
作,确定该财务月份所有商品成本的进、销、结存情况,为财务
管理提供数据。
(6)系统管理:包括参数设置、权限设置、更改密码等。
综合训练1
进销存管理系统
2.分析设计
(1)需求分析。
(2)概念结构设计。
(3)逻辑结构与物理结构设计。
(4)数据库实施。
(5)功能设计。
3.能力提升
选择合适的可视化程序设计语言(如Visual Basic),设计可视化窗
体,实现上述功能。在设计时,要求如下。
(1)主窗体为控制窗体,宜呈最大化形态,并在弹出子窗体后,置
于子窗体后并禁止操作;当子窗体关闭后,恢复主窗体操作。
(2)资料管理、采购管理、销售管理、库存管理、账务管理和系统
管理在主窗体中以主菜单形式实现。
综合训练1
进销存管理系统
3.能力提升
(3)资料管理中的基础资料与合同管理;采购管理中的订单、进货单、
退货单管理;销售管理中的订单、销售单、退货单管理;库存管理中
的库存查询与盘点;账务管理中的流水信息统计与月结信息;系统管
理中的操作员管理、权限管理、库存阈值管理、密码修改等,均以二
级菜单形式实现,
(4)每个二级菜单项,如基础资料管理,单击后弹出相应窗体。
(5)在每个子窗体控件的使用中,文本输入部分一般采用Textbox控件;
提示信息用Label控件;具体操作(如增加、删除、修改、退出等)
用按钮控件;可选项可采用OptionButton,CheckBox或List,
ComboBox等控件。对不允许输入的部门设置其Lock属性为True。
必填项可采用特殊字体颜色标注。
(6)在进行删除等重要操作时,要进行提示,确认后才能进行操作。
(7)当商品库存的数量超出指定的范围时系统可以自动报警,系统自
动以声音或者图标的形式向用户报警。内容包括序号、仓库号、货号、
上限、下限、最佳存量、备注等。
(8)生成月结报表。
(9)系统设计完成后要打包发布,制作成安装程序。
综合训练1
进销存管理系统
4.拓展训练
拓展训练需满足下列要求。
(1)根据基本要求中的描述,完成相应的系统。
(2)数据库选用SQL Server,开发环境任选。
(3)用户界面友好,操作简单,尽量增加提示,增强程序的可读性。
(4)提交系统源代码。
(5)提交设计说明书(不少于3000字),设计说明书中至少要包括系
统运行环境、系统功能图、数据流图、数据字典、E-R图、表关系的
详细说明以及代码设计、界面设计说明、表、索引、视图、权限和存
储过程的定义(用SQL脚本提供)。
(6)提交用户手册:描述软件系统所具有的功能及基本的使用方法,
使用户能了解该软件的用途,并能确定在什么情况下、如何使用它。
(7)系统可分模块合作完成,但需分工明确。
综合训练1
进销存管理系统
4.拓展训练
拓展训练1
拓展训练2
拓展训练3
拓展训练4
拓展训练5
拓展训练6
拓展训练7
仓储管理系统
实验室设备管理系统
学校门诊管理信息系统
学校后勤物资管理系统
书店销售管理系统
游泳馆会员管理系统
车辆租赁管理系统
综合训练2
在线考试系统
1.基本要求
传统的考试方式存在若干弊病,例如手工判卷工作效率低;需要按照
一定的比例从各章选取不同难度的试题形成一份考试卷,教师出题工
作量大;不能合理和重复使用试卷中包含的试题;成绩汇总统计工作
繁琐等。为了提高考试的可靠性,降低考试成本,提高工作效率,需
要实现在线考试系统,帮助教师合理管理试题,辅助出题,为学生提
供在线考试功能,进行自动阅卷,提供成绩查询和汇总统计的功能。
为了方便计算机判卷,在线考试系统中的试题采用客观题形式,包括
选择和填空两种题型。
系统主要实现以下功能。
(1)系统登录(2)学生管理(3)教师管理(4)试题管理
(5)组卷(6)在线考试(7)成绩统计(8)卷面分析(9)成绩查询
综合训练2
在线考试系统
1.基本要求
在信息安全性方面有以下要求。
(1)学生信息(如学号、专业、班级、姓名、用户名、登录密码等)
和教师信息(如工号、教授课程、姓名、用户名、登录密码等)的维
护只能由管理员维护。其他用户只能维护自己的用户名和登录密码,
其他信息只具有查询功能。
(2)题库信息只能由授课教师维护,其他人都不具有维护和查看的权
限。
(3)组卷和试卷查询只能提供给教师使用。
2.分析设计
(1)需求分析。
(2)数据库设计。
(3)功能设计。
综合训练2
在线考试系统
3.能力提升
选择合适的可视化网页设计工具(如FrontPage)和动态网页程序
设计语言(如ASP),设计网页的静态部分,并填加网页动态部分实
现上述功能。
(1)使用ASP中的Server对象创建ADO连接数据库。ASP使用
Command,Connection,Recordset对象来进行数据库连接,
提交SQL语句并获取SQL语句执行的结果集。
(2)使用HTML中的Frameset标签,首页采用框架结构。页面布
局要简洁、美观、大方。
(3)每个模块功能使用表单FORM实现,并利用表单中的主要元素,
如单行文本框(Text)、多行文本区域(Textarea)、下拉菜单
(Select)、复选框(CheckBox)、单选按钮(Radio)、按钮
(Button)、提交按钮(Submit)、清除按钮(Reset)等设计
表单中需要用户填写的内容。表单向服务器提交参数的方法使用
POST方式。
综合训练2
在线考试系统
3.能力提升
(4)需要为教师、学生、管理员设置不同的首页,教师首页提供题
库管理、组卷、成绩统计、维护查看个人资料的入口。学生页面提供
在线考试、成绩查询、查询试卷评阅结果的入口。管理员页面提供维
护学生、维护教师的入口。
(5)信息验证功能可以在服务器或客户端完成,例如验证用户填写的
学号的长度是否为6位就可以在客户端实现(可以采用VBScript实
现);验证用户的输入密码是否正确就可以在服务器完成(通过
ADO的Recordset实现)。
(6)服务器返回的结果应通过表格形式展示,可以动态使用TR,TD
等表格元素来定义表格的行与单元。
(7)为了方便直观地展示成绩统计情况,应尽量以可视化方式显示
统计结果 。
(8)各种ID码一般是表的主键,通常是自动生成的。如果ID采用顺
序码,则可选用自动增长字段实现。对于其它情况可以通过编程方式
实现。
综合训练2
在线考试系统
4.拓展训练
拓展训练1
拓展训练2
拓展训练3
拓展训练4
拓展训练5
拓展训练6
拓展训练7
学生成绩在线发布系统
网上教学系统
选课管理系统
班主任工作管理系统
网上校友通讯系统
电视节目查询系统
网上购物系统
综合训练3
客户资源管理系统
1.基本要求
企业的发展离不开客户对企业的认知度、美誉度、忠诚度,为了提高
客户满意度必须对客户资源进行科学有效的管理。客户资源管理系统
对客户信息(包括潜在的和已有的客户)进行有效管理和应用,并通
过适当的步骤来构建和维护有价值的客户关系。
系统主要功能如下。
(1)客户信息管理
(2)市场活动管理
(3)客服管理
(4)日程提醒
(5)数据管理
(6)系统管理
综合训练3
客户资源管理系统
2.分析设计
(1)需求分析。
(2)数据库设计。
(3)功能设计。
3.能力提升
选择合适的可视化程序设计语言(如Visual Basic),设计可视化窗体,
实现上述功能。在设计时,要求如下。
(1)客户管理、行动管理、客服管理、日程提醒和系统管理在主窗体
中以主菜单形式实现。
(2)客户管理中的客户资料管理、分类管理和客户联系人管理,系统
管理中的数据类别管理、员工管理和权限管理,以二级菜单形式实现。
(3)每个二级菜单项,如客户资料管理,单击后弹出相应窗体 。
综合训练3
客户资源管理系统
3.能力提升
(4)数据库数据的导入导出是数据库备份的一种方式,可以将表或视
图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导
出。可以指定导入/导出数据的起止范围和文件格式,比如说将数据
导出为文本文件或xml文件,详细参数设置可参考有关书籍。
(5)在测试系统功能时,需要设计生成完备的测试数据集,以保证测
试的全面性和正确性。不仅要考虑输入正确数据时系统的反应,而且
要考虑在输入错误数据时系统的容错、纠错性能。
综合训练3
客户资源管理系统
4.拓展训练
拓展训练1
拓展训练2
拓展训练3
拓展训练4
拓展训练5
拓展训练6
拓展训练7
保险信息管理系统
报纸发行员投递管理系统
毕业设计管理系统
学生公寓管理系统
学校卫生管理系统
田径运动会管理系统
中学生档案管理系统
综合训练4
工资管理系统
1.基本要求
工资管理系统主要用于企业员工的工资核算,实现对人员信息、薪资
福利、员工社保信息的维护和查询,并能迅速准确地完成考勤的分类
汇总,生成工资报表。系统主要功能如下。
(1)人员信息管理:企业员工信息(包括员工基本信息、教育经历、
个人简历、岗位变更、离职登记、离退休信息等)的维护和查询。
(2)考勤管理:管理员工的出勤情况(包括加班、请假、休假等),
并提供查询和分类统计功能。
(3)薪资福利管理:管理员工的薪资和福利(包括当月工资、个人
所得税、发放工资历史、员工奖励、员工惩罚等)。
(4)社会保障管理:管理员工的社保信息(包括单位参保信息、养
老保险、医疗保险、住房公积金等),生成社会保险台账。
(5)系统管理:包括代码管理、参数设置、权限设置、更改密码等。
综合训练4
工资管理系统
2.分析设计
(1)需求分析。
(2)数据库设计。
(3)功能设计。
3.能力提升
选择合适的可视化程序设计语言(如Visual Basic),设计可视化窗
体,实现上述功能。在设计时,要求如下。
(1)人员信息管理、考勤管理、薪资福利管理、社会保障管理、系
统管理等在主窗体中以主菜单形式实现。
(2)人员信息管理中的员工基本信息、教育经历、个人简历、岗位
变更、离职登记与离退休管理,考勤管理中的员工出勤、加班、
请假和休假管理,薪资福利管理中的当月工资、个人所得税、发
放工资历史、员工奖励和员工惩罚管理,社会保障管理中的社保
信息、社会保险台账管理,系统管理中的操作员管理、参数设置、
密码修改等,以二级菜单形式实现。
综合训练4
工资管理系统
3.能力提升
(3)生成月工资报表(报表可采用Visual Basic的数据报表Datareport
窗体实现)。
(4)报表的格式除采用上述方法外,还可以生成其它格式报表,使用
OLE自动化或FSO(FileSystemObject)对象生成Excel报表,还可
以调用crystal Report 或Active Report对象来生成报表。
(5)在数据库应用系统中,数据库安全性一般是通过用户的权限来限
制的。因此一方面应严格控制用户对数据库的操作权限(使用
Grant/Revoke授予和收回用户权限),另一方面,要完善用户进入
系统的密码验证机制,进行应用系统操作权限的检测。
综合训练4
工资管理系统
4.拓展训练
拓展训练1
拓展训练2
拓展训练3
拓展训练4
拓展训练5
拓展训练6
拓展训练7
职工考勤管理系统
外聘教师管理系统
客房信息管理系统
物流公司管理系统
企业人事档案管理系统
社区管理系统
劳务代理收费系统
第四篇
实例篇
第四篇
实例篇
本篇通过数字图书馆系统的设计与开发实例展示数据库应用软件的设计
与开发的全过程,并基于Visual Basic 6.0,ASP和SQL Server 2000
给出了完整的设计文档和源代码,其目的是帮助读者在学习了数据库
理论和基本操作后,了解数据库技术如何与程序开发语言结合起来开
发数据库应用软件,解决学用两张皮、学了不会用或不知道怎么用的
问题。
由于目前数据库软件的结构一般分为C/S和B/S两种模式,因而数字图书
馆系统也分成两个部分来实现,以介绍VB和ASP访问数据库的方法。
另外,由于本篇的目的在于向学生展示如何使用VB,ASP访问数据库的
技术,因而在设计时,尽可能采用多种方法实现同样的系统功能。
数据图书馆系统实例
1.系统简介
数字图书馆系统实现图书馆日常管理的数字化、图书信息数字化,
分成图书馆管理系统和网上图书馆系统两部分。图书馆管理系统采用
C/S架构,主要实现图书馆的日常管理功能(包括图书编目、图书流
通等);网上图书馆部分采用B/S架构,主要实现图书网上检索(可
按书名、著译者等以及全文检索)、阅览、网上预约、续借、取消预
约,个人借阅情况查询、个人罚款情况查询、借书证密码修改等功能。
本实例的主要作用是说明SQL Server 数据库的使用,因此对部分系
统业务流程进行了简化,在实际使用中,可以根据具体情况进行扩充。
在系统开发过程中,数据库采用SQL Server 2000,图书馆管理系
统采用Visual Basic 6.0进行程序设计,而网上图书馆则采用ASP作
为编程语言。
数据图书馆系统实例
2.系统数据流图
经过对图书馆业务处理过程的调研,可得到系统的数据流图。
(1)数字图书馆管理系统顶层数据流图
代码信息
操作员
息
信 息
阅
借 者信
读 信息
限
权 信息
书
图 信息
款
罚
0
请
证申
数字图书馆系统
借书 书证
理
借
号
办
书证
借 信息
罚款 信 息
读者
借阅
息
信
码
代 信息
书
图
息
细信
明
图书
阅 信息
图书借
图书属性
图书借阅历史
借阅历史
读者信
息
操作
员信
息
读者信息
图书明细
借阅情况
操作员信息
(2)数字图书馆管理系统逐步细化后数据流图
数据图书馆系统实例
3.数据库结构
对上述数据流图进行分析可以建立数字图书馆数据库的概念模型
(CDM)、物理模型(PDM)。
数据图书馆系统实例
数据图书馆系统实例
3.数据库结构
数字图书馆数据库包含8个基本表(见表4-3-1) 。
数据图书馆系统实例
4.系统模块设计
数字图书馆包括图书馆管理系统和Web图书馆两个部分。图书馆管
理系统实现图书登录、读者管理、读者类别管理、借阅归还管理、罚
款管理、报损登记功能。Web图书馆实现图书检索、浏览、预约、续
借、取消预约、借阅、罚款情况查询,借书证密码修改等功能。
(1)功能要求。
(2)系统模块结构及划分。
(3)图书馆管理系统模块设计。
(4)网上图书馆模块设计。
数据图书馆系统实例
4.系统模块设计
(2)系统模块结构及划分。
数据图书馆系统实例
4.系统模块设计
(2)系统模块结构及划分。
数据图书馆系统实例
4.系统模块设计
图书信息删除处理流程
否
真的要删除此图
书吗?
是
否
此图书全部在库
吗?
是
是
此图书曾被预
约、借阅、续
借、报损吗?
bookdetail
否
删除终止
删除此书记录
bookproperties
数据图书馆系统实例
4.系统模块设计
图书归还管理的部分处理流程
数据图书馆系统实例
5.系统实现
数据库结构
图书馆管理系统程序设计
数据图书馆系统实例
5.系统实现
感谢您的关注!