




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、衡量国家信息化程度标志:数据库建设的规模,数量和数据库信息量数据库原理及应用实验指导书课 程 号:课程名称:数据库原理及应用适用专业:计算机科学与技术制 定 人:丁智国制定日期:2008 年3月&浙江师范大学数理与信息学院目 录实验一:Sql Server 数据库、表的管理实验二:SQL语言实验三:嵌入式SQL的使用实验四:存储过程的管理实验五:数据库课程设计附录一Microsoft SQL Server简介附录二SQL Server存储过程附录三SQL Server触发器实验一:Sql Server 2000数据库、表的管理实验目的熟悉Sql Server环境下数据库、表的管理。根据具体问题
2、通过E_R图描述问题的概念模型实验要求1、 硬件基本配置:Intel PentiumIII以上级别的CPU,大于64MB的内存。2、 软件要求:Window 2000操作系统,Microsoft SQL Server 20003、 实验学时:3学时4、 写实验报告实验内容上机题1:使用Enterprise Manager创建一个新的数据库GradeDb该数据库包括如下的表(供参考):学生表、课程表、成绩表。各数据表结构如下:(划线为码)学生表:学号、姓名、性别、年龄、所在系Student(Sno,Sname,Ssex,Sage,SDept)课程表:课程号、课程名称、先行课程、学分Course(
3、Cno,Cname,Cpno,CCredit)成绩表:学号、课程号、成绩Grade(Sno,Cno,Grade)各数据表中各字段的宽度和数据类型由自己决定,但对于不同数据表中的相同字段最好具有相同的数据类型和宽度,各数据表中的记录内容由自己决定。 此外,“学生表”和“成绩表”之间具有一对多的关系;“课程表”和“成绩表”之间也是一对多的关系; 上机题2:为数据库GradeDb 中“课程表”中的“课程号”字段添加注释:该课程的编号。上机题3:为数据库GradeDb 中“课程表”中的“学分”字段设置默认值为3,为“成绩表”中的“成绩”字段设置默认值为60。上机题4:某个工厂物资管理涉及的实体有:仓库
4、: 仓库号、面积、电话号码零件 :零件号、名称、规格、单价、描述供应商:供应商号、姓名、地址、电话号码、帐号项目:项目号、预算、开工日期职工:职工号、姓名、年龄、职称 各个实体之间的联系如下: 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,仓库和职工之间是一对多的联系。职工实体型中具有一对多的联系 职工之间具有领导-被领导关系。即仓库主任领导若干保管员。供应商、项目和零件三者之间具有多对多的联系根据上述物资管理涉及的实体及其关系,构建概念模型,并使用Ent
5、erprise Manager创建工厂物资管理的数据库DB_MaterialsManagement。各数据表中各字段的宽度和数据类型由自己决定,但对于不同数据表中的相同字段最好具有相同的数据类型和宽度,各数据表中的记录内容由自己决定。上机题5:学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干名研究生,每个班有若干学生,每个学生选秀若干课程,每门课程可由若干学生选修。请用E_R图描述此学校的概念模型根据E_R图,使用Enterprise Manager创建学校数据库DB_School。各数据表中各字段的宽度和数据类型由自己分析决定,但对于不同数据表
6、中的相同字段最好具有相同的数据类型和宽度,各数据表中的记录内容由自己决定。 实验二:SQL语言实验目的在Sql Server2000查询分析器下熟练运用SQL语言来完成基本表的管理、索引的建立和删除、数据查询、数据更新、视图建立和删除等等操作。实验要求1、 件基本配置:Intel PentiumIII以上级别的CPU,大于64MB的内存。2、 软件要求:Window 2000操作系统,Microsoft SQL Server 20003、 实验学时:6学时。4、 写实验报告。实验准备重复实验一的上机题1、2和3完成GradeDb的创建(不需要创建表)实验内容上机题1:利用Create Tabl
7、e 创建上述3个表,包括每个表的码的定义。上机题2:利用Create Index创建索引:其中Student表按学号升序建唯一索引Student_Sno,Course表按课程号升序建唯一索引Course_Cno,Grade表按学号升序和课程号降序建唯一索引Grade_SnoCno。上机题3:用Alter Table向Student表中增加“宿舍编号”,字符型,并改变“年龄”的数据类型为长整型。上机题4:用Drop删除student表的索引Student_Sno和Course表的索引Course_Cno。上机题6:使用SELECT语句创建查询:1)对课程表进行查询,要求包含如下字段:课程名称、学
8、分;2)查询学生表中的所有女同学,包含姓名、年龄、所在系;3)查询男学生的选课情况,包含姓名、课程名称和成绩;4)查询考试成绩有不及格的学生的学号;5)查询年龄在19-22之间的学生信息;6)查询不是计算机系及信息系的学生姓名;7)查询所有不姓刘的学生姓名;8)查询选修了1号课程的学生的学号及成绩,查询结果按分数降序排列;9)查询计算机系的学生总数;10)查询1号课程的学生平均成绩;11)求各个课程号、相应的选课人数;12)查询每个学生的学号、选修的课程号及成绩;13)尝试其它查询上机题7:将一个学生记录插入到Student中(每个属性值自定);上机题8:将所有学生的年龄增加1岁;上机题9:删
9、除所有计算机系学生的选课记录;上机题10:在学生数据库中,创建如下的视图:对“课程表”与“成绩表”创建包含如下字段的视图ST1:学号、姓名、课程名称、成绩;实验三:嵌入式SQL的使用实验目的熟练掌握SQL语言在C+(或VB、DELPHI)下的嵌入使用;了解SQL语言在.Net环境下的适用。实验要求1、 本配置:Intel PentiumIII以上级别的CPU,大于64MB的内存。2、 软件要求:Window 2000操作系统,Microsoft SQL Server 2000,Visual C+或Visual Basic或Delphi,或.Net开发环境。3、 实验学时:6学时。4、 写实验报
10、告。实验准备准备安装好SQL Server 2000及.Net (或Delphi、VB),完成GradeDb的创建并完成数据的录入。实验内容上机题1 设计完成按学生姓名查询学生信息的界面及功能上机题2 设计完成按学生年龄范围查询学生信息的界面及功能上机题3 设计完成按学生学号查询学生信息的界面及功能上机题4 设计完成按学生学号查询各门功课成绩的界面及功能上机题5 设计完成按学生姓名查询各门功课成绩的界面及功能上机题6 设计完成按课程号、课程名称统一查询成绩的界面及功能上机题7 设计完成可以按学生学号、姓名统一查询成绩的界面及功能上机题8 设计完成可以录入学生学号、姓名、年龄、所在系的界面并完成
11、把学生信息写入相关的表中上机题9 设计完成可以统一修改某门功课的成绩(比如都加5分)的界面并完成把新成绩写入相关的表中上机题10 设计完成可以统一删除某门功课的选课记录。上机题11 设计完成可以计算某门功课的平均成绩的界面和编码。(不能用SQL的集函数AVG、SUM等,自己主语言控制)上机题12 按照你自己的需要来设计完成查询界面及功能实验四:存储过程的管理实验目的熟悉SQL SERVER存储过程的创建、查看、执行、更改。实验要求1、 基本配置:Intel PentiumIII以上级别的CPU,大于64MB的内存2、 软件要求:Window 2000操作系统,Microsoft SQL Ser
12、ver 20003、 实验学时:2学时实验准备重复实验二完成GradeDb的创建并完成数据的录入。实验内容上机题1:用Create PROCEDURE语句创建存储过程:创建一个存储过程student_info:查询每个学生的学号、姓名、选修的课程名及成绩(不带参数)创建一个存储过程AddStudent:新增一个学生(带参数)上机题2:查看存储过程student_info, AddStudent。上机题3:更改存储过程student_info, AddStudent。上机题4:执行EXECUTE存储过程student_info, AddStudent。上机题5:删除存储过程student_inf
13、o: DROP PROCEDURE student_info上机题6:尝试带输出参数的存储过程的使用实验五:数据库课程设计实验目的实现一个系统的设计与代码编写。题目:大学教学管理系统 超市销售管理系统图书管理系统教材征定系统体育项目比赛管理系统(可选某个比赛项目)计算机等级考试报名系统二手货网上交易系统网上课程学习系统网上校友录新闻发布系统同学录信息系统酒店客房管理系统学生选课系统学生宿舍管理系统.实验要求1 目的:通过数据库课程设计掌握数据库系统的大体设计步骤及所用工具,把所学的知识与具体的实践相结合,提高学生的设计实践能力。2 要求与内容:1) 调研查询课题的相关资料,编写可行性分析报告和
14、需求说明书。2) 画出数据流程图,编写数据字典。3) 分析出所选系统系统中的实体和关系,画出E-R图。4) 设计概念模型,书写概念设计报告5) 形成关系模型,书写逻辑设计报告6) 选择熟悉的平台构建数据库应用系统,书写物理设计报告7) 选择一种合适的开发环境,根据选择的题目建立模拟系统,输入虚拟数据,调试必要的SQL查询语句,编写实用的存储过程,提交系统设计、运行和维护的报告。3 时间安排:68周数据库原理课程设计范例-1题目:大学教学管理系统一、需求说明1 系统简介:整套系统实现对全校教学事务的管理。2系统需要的功能:从学生入学到毕业整个在校期间各种档案和学籍记录,可以由管理员统一管理查询。
15、考试管理及记录,可以自动对成绩进行分析和分组,方便查询。教师档案的管理及教师各种业绩的查询管理。根据输入信息自动生成全校各院系班级的课程安排,即每节课的详细信息。在线讨论和论坛,可以进行考试信息查询、成绩查询等功能。3数据库数据及处理初步设计:A:数据数据结构与数据项:1、 学生信息:学号(i9)、学生姓名(s8)、入学时间(s10)、是否毕业(s2)、毕业时间(i4)、出生日期(s12)、籍贯(s40)、政治面貌(s4)、学生档案编号(s12)、学籍情况(s20)、原学籍情况(s20)、年级(s2)、所受奖励(s100)、所受处罚(s100)、学位(s4)2、 教师信息:教师编号(i9)、教
16、师姓名(s8)、参加工作时间(s10)、出生日期(s12)、籍贯(s40)、政治面貌(s4)、教师档案编号(s12)、职称(s12)、曾获奖项(s100)、论文著作(s100)3、 课程信息:课程号(s10)、课程名称(s20)、课程级别(s4)、学分(i3)、占用课时(i2)、单双周区别(s2)4、 考试信息:考试编号(s12)、考试类型(期中或期末s4)、考试时间(s12)、考试形式(s4)5、 院系信息:学院编号(s2)、学院名称(s20)6、 教研室信息:教研室编号(s8)、教研室名称(s20)7、 专业信息:专业编号(s2)、专业名称(s20)8、 班级信息:班级编号(s5)9、 成
17、绩信息:成绩(l6)10、 学位信息:学位编号(i3)、学位(s4)11、 教室信息:教学楼编号(i2)、教室编号(s3)、课节编号(i4)12、 时间信息:周次(i2)、单元(i1)B:数据流图登记学生信息学生分班学生信息按班级上课的学生院系核对信息接收/不接收班级名单课程课程表课程信息已登记学生教师分配教师信息教研室教师信息安排课程任课教师考试安排考试进行生成B:数据库中的实体院系、专业、教研室、班级、课程、考试、教师、学生、教室C:概念模型:4、关系模型:(1)学生字典:学号(s9)、学生姓名(s8)、入学时间(s10)、是否毕业(s2)、毕业时间(i4)、出生日期(s12)、籍贯(s4
18、0)、政治面貌(s4)、学生档案编号(s12)、学籍情况(s20)、原学籍情况(s20)、所受奖励(s100)、所受处罚(s100)、学位(s4)(2)教师字典:教师编号(s9)、教师姓名(s8)、参加工作时间(s10)、出生日期(s12)、籍贯(s40)、政治面貌(s4)、教师档案编号(s12)、职称(s12)、曾获奖项(s100)、论文著作(s100)(3)课程字典:课程号(s10)、课程名称(s20)、课程级别(s4)、学分(i3)、占用课时(i2)、单双周区别(s2)(4)考试字典:考试编号(s12)、考试类型(期中或期末s4)、考试时间(s12)、考试形式(s4)(5)院系字典:学院
19、编号(s2)、学院名称(s20)(6)教研室字典:教研室编号(s8)、教研室名称(s20)(7)专业字典:专业编号(s2)、专业名称(s20)(8)教室字典:教室编号(s6) (9)学位字典:学位编号(i4)、学位(s6)(10)班级:班级编号(s5)、专业编号(s2)、学院编号(s2)(11)学生系别分类:学号(i9)、班级编号(s6)(12)教师系别分类:教师编号(s9)、教研室编号(s8)(13)教学安排:课程号(s10)、班级编号(s6)(14)授课安排:课程号(s10)、教师编号(s9)(15)考试安排:考试编号(s12)、班级编号(s6)(16)监考安排:考试编号(s12)、教师编
20、号(s9)5、数据库结构设计:表结构:(1)学生字典:t_zidian_xs(2)教师字典:t_zidian_js(3)课程字典:t_zidian_kc(4)考试字典:t_zidian_ks(5)院系字典:t_zidian_yx(6)教研室字典:t_zidian_jys(7)专业字典:t_zidian_zy(8)教室字典:t_zidian_roomjs(9)学位字典:t_zidian_xw(10)班级表:t_bj(11)学生系别分类表:t_fl_xs(12)教师系别分类表:t_fl_js(13)教学安排表:t_ap_jx(14)授课安排表:t_ap_sk(15)考试安排表:t_ap_ks(16
21、)监考安排表:t_ap_jk6、SQL表关系图:7、建立数据库8、选择平台实现系统功能9、测试附录一 Microsoft SQL Server简介目前主要的数据库有:FoxPro、Access、Excel、Oracle、Sybase、Informix、SQL Server等,其中网络型的SQL Server、Oracle产品安全性远远高于桌面型的FoxPro、Access等数据库,是一款微软公司研制的、可以用于开发基于Web应用的网络数据库产品,SQL Server 2000有以下版本:企业版(Enterprise Edition)标准版(Standard Edition)个人版(Person
22、al Edition)开发版(Developer Edition)测试版(Evaluation Edition)SQL Server 2000的版本包括数据库服务器的结构:(一)数据库服务器的逻辑结构数据库服务器管理工具数据库企业管理器查询分析器服务管理器导入和导出数据服务器端网络实用工具客户端网络实用工具事件探查器在IIS中配置 SQL XML支持Analysis Services工具 系统数据库用户数据库索引存储过程English Query工具 数据表视图 图一 SQL SERVER 2000逻辑结构如图一所示,从逻辑结构上讲,数据库服务器是若干个后台数据库和管理工具构成的整体,后台数据
23、库按照逻辑功能又可以分为系统数据库和用户数据库两种。系统数据库是系统使用的,一般情况下用户不要使用,用户数据库是用户可以自行创建的。每一种数据库都是由数据库、索引等数据库对象构成的。前面我们讲述的服务器上各种服务是从逻辑功能的角度来进行阐述的,而这些逻辑功能又是通过服务器管理工具对数据库的具体管理工作来实现的。如果在一台计算机上安装多个数据库服务器实例,相当于多个物理上独立的数据库服务器,每一个服务器实例都有自己独立的系统数据库和用户数据库,分配不同的实例名和TCP/IP协议端口来予以区别,但它们共用同一套管理工具。接下来我们来对各种管理工具和数据对象做一简要的介绍。 (1)服务器管理工具企业
24、管理器 企业管理器是SQL Server 2000的大管家,它提供了一个遵从Microsoft管理控制台(MMC)的集成界面,使用户得以完成对SQL Server 2000的管理,并可以调用其他管理工具。它的主要功能包括: 定义运行SQL Server的服务器组 将个别服务器注册到组中 为每个已注册的服务器配置所有SQL Server选项 在每个已注册的服务器中创建并管理所有SQL Server数据库、对象、登 录、用户和权限 在每个已注册的服务器上定义并执行所有SQL Server管理任务 通过唤醒调用SQL查询分析器,交互地设计并测试SQL语句、批处理和 脚本MMC是一个工具,为Windo
25、ws网络中管理不同的服务器应用程序查询分析器 查询分析器是一个图形用户界面,用于交互地设计和测试Transact-SQL语句、批处理和脚本,主要包括以下几方面功能: 创建查询和其他SQL脚本,并针对SQL Server数据库执行它们 由预定义脚本快速创建常用数据库对象 快速复制现有数据库对象 在参数未知的情况下执行存储过程 调试存储过程 调试查询性能问题 在数据库内定位对象,或查看和使用对象 快速插入、更新或删除表中的行 为常用查询创建键盘快捷方式 向“工具”菜单添加常用命令 服务管理器服务管理器用于启动、停止和暂停服务器上的SQL Server 2000组件。这些组件在Windows NT或
26、Windows 2000上作为服务运行,并可在Microsoft Windows 95和Microsoft Windows 98上作为单独的可执行程序运行。导入和导出数据如下图所示的导入和导出数据工具可以启动数据转换服务(Data Transform Service,简称DTS),完成各类异构数据库的转换。数据可能以各种格式保存并分布在不同的位置,数据转换服务(DTS)通过提供一组工具,可以将来自完全不同的源的数据析取、转换和合并到DTS所支持的单个或多个目的数据库以满足需求。SQL Server 数据库DTS服务数据数据数据数据其他类型数据库通过DTS工具图形化地生成DTS包或使用DTS对象
27、模型编制包,可创建适合自己需要的自定义数据移动解决方案。此服务以向导的形式引导读者一步一步地实现DTS的功能,如数据和对象的导入、导出、验证以及在异类 OLE DB和ODBC数据源之间的转换。服务器网络实用工具下图所示的服务器网络实用工具用于管理服务器网络库Net-Library,其主要的功能表现在以下3方面: SQL Server 2000实例在其上监听客户端请求的网络协议 从应用程序建立连接时考虑使用的服务器Net-Library顺序 SQL Server 2000实例监听的新网络地址网络库Net-Library是实现SQL Server客户机和服务器之间网络通信的桥梁,用于在运行SQL
28、Server的客户端和服务器之间传递数据包。以动态链接库(DLL)形式实现的网络库使用特定的进程间通信(IPC)机制执行通信所需的网络操作。服务器可以一次监听或监视多个网络库。 安装期间,SQL Server安装程序将所有Net-Library安装到计算机上,并允许配置部分或全部Net-Library。如果没有配置某个Net-Library,服务器将无法监听该Net-Library。安装完成后,可以使用服务器网络实用工具更改这些配置。打个比喻以助于读者对此的理解:服务器网络工具相当于翻译公司,它下面管理了很多通晓各种语言的翻译(网络库),当与持不同的语言的客户(不同的客户机系统)洽谈的时候,我
29、们可以派不同的翻译出场(配置不同的网络库),当然只有当双方的翻译都持同样的语言的时候,才可以相互理解,建立联络(客户机和服务器配置相同的网络库)。 客户端网络实用工具下图所示的客户端网络实用工具用于管理客户端Net-Library以及定义服务器别名,还可以用来设置DB-Library应用程序所使用的默认选项。客户端网络实用工具事件探查器下图所示的事件探查器是从服务器捕获SQL Server事件的工具。事件保存在一个跟踪文件中,可在以后对该文件进行分析,也可以在试图诊断某个问题时,用它来重播某一系列的步骤。事件探查器 主要用于: 逐步分析有问题的查询以找到问题的原因,查找并诊断运行慢的查询。 捕
30、获导致某个问题的一系列SQL语句。然后用所保存的跟踪在某台测 试服务器上复制此问题,接着在该测试服务器上诊断问题。 监视SQL Server的性能以精细地调整工作负荷。 对在SQL Server实例上执行的操作进行审核。 在IIS中配置SQL XML支持如下图所示,SQL Server 2000引入了支持XML功能的新特性,这些功能组合在一起使SQL Server 2000成为支持XML的数据库服务器,这些新特性包括: 能够使用HTTP访问SQL Server 支持XDR(XML数据简化)架构并且能够指定对这些架构的Xpath查询 能够检索并写入XML数据:使用SELECT语句和FOR XML
31、子句检索XML数据;使用OPENXML行集提供程序写入XML数据;使用XPath查询语言检索XML数据 增强了SQL Server 2000 OLE DB提供程序(SQLOLEDB),使得可以将XML文档设置为命令文本并以流的形式返回结果集在IIS中配置SQL Server支持 (2)数据库安装完SQL Server 2000数据库服务器后,系统自动建立了名为master、model、msdb和tempdb的4个系统数据库和Northwind、pubs这两个范例数据库。我们可建立自己的数据库,从而构成完整的后台数据库群,每个数据库又是由数据表、索引、存储过程等数据对象组成的,关于数据对象的内容
32、将在后面详细介绍。下面主要介绍系统数据库的主要功能,以帮助我们对系统的结构有一个总体的认识。master数据库:记录SQL Server 2000系统的所有系统级别信息。 记录所有的登录帐户和系统配置设置。 记录所有其他的数据库,其中包括数据库文件的位置。 记录SQL Server 2000的初始化信息。tempdb数据库: 保存所有的临时表和临时存储过程。 还满足任何其他的临时存储要求,例如存储SQL Server 2000生成的工作表。model数据库创建所有数据库的模板。msdb数据库:供SQL Server代理程序调度警报和作业以及记录操作员时使用。 (二)数据库服务器的物理结构与 S
33、QL Server 2000数据库服务器逻辑结构对应的物理结构最后都表现为不同的文件,系统的物理结构如下图所示。管理工具对应的是各种操作系统文件,是不变的,包括各种可执行文件、DLL动态连接库文件等等。对于每一个数据库,对应的是物理上的数据文件和日志文件,数据文件又分为主要数据文件和次要数据文件两种。数据库服务器数据库系统文件1系统文件2数据文件主要数据文件(*.mdf)次要数据文件(*.ndf)日志文件(*.ldf)文件1(*.ldf)文件2(*.ldf)文件1(*.ndf)文件2(*.ndf)数据页(8KB)日志文件管理工具现分别介绍如下:(1)主要数据文件主要数据文件是数据库的起点,指向
34、数据库中文件的其他部分;每个数据库都有一个主要数据文件,主要数据文件的推荐文件扩展名是.mdf。(2)次要数据文件 次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件,次要数据文件的推荐文件扩展名是.ndf。(3)日志文件 日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个,日志文件的推荐文件扩展名是.ldf。最后我们对数据库服务器的物理结构总结一下:数据文件可以划分为一个一个数据页(Data Page),每个数据页为8KB;若干个相互连接的数据页构成数据文件。日志文件是由一个一个的日志记录构
35、成的;有时候为了管理的方便,还可以将不同的数据库的数据文件组成文件组。附录二SQL Server存储过程客户/服务器数据库与传统的数据库结构的一个很重要的区别是,在传统的数据库中只存放数据,所有的应用程序都在用户端,都与用户实际运行的应用程序捆绑在一起;而在客户/服务器结构的数据库中,在数据库中还可以存放程序,即存储过程。 (一)基本概念 存储过程是经过预编译T-SQL语句的集合,大多数系统存储过程以sp_作为过程名称的前缀。系统存储过程存放在master数据库中,归系统管理员所有,但其中很多过程可以运行在任意数据库中。存储过程是对数据库管理系统功能的有力扩充。利用存储过程我们可以避免在网络上
36、传输大量无用的信息或原始数据,只需要传输调用存储过程的指令和数据库服务器返回的处理结果。不使用存储过程时,所有的数据处理都在客户端完成;而使用存储过程时,可以使数据处理在服务器端完成。 客户端应用 (不使用存储过程)Start transactionINSERT dataUPDATE dataDELETE dataEnd transactionDBMSServerStart transactionCallStored procedureEnd transactionDBMSServerprocedureINSERT dataUPDATE dataDELETE data(使用存储过程)客户端应用
37、 (二)创建和执行存储过程 CREATE PROCedure () AS 比如,我们创建一个最简单的存储过程 CREATE PROCedure sp_getemp ASSELECT * FROM 职工 若我们只选择工资值大于某个值的职工记录,可以使用带参数的存储过程CREATE PROCedure sp_getemp( salary) ASSELECT * FROM职工 WHERE 工资 salary 创建存储过程中的可以是一组T-SQL语句,并可以含有流程控制等语句。存储过程可以嵌套,即在一个存储过程中可以调用另外一个存储过程。存储过程一般用来完成数据查询和数据处理操作,所以在存储过程中不可
38、以使用创建数据库对象的语句。 执行存储过程的语句 EXECute = =| (三)存储过程的返回值和状态信息 无论什么时候执行存储过程,总要返回一个结果码,用以指示存储过程的执行状态。如果存储过程执行成功,返回的结果码是0;如果存储过程执行失败,返回的结果码一般是一个负数,它和失败的类型有关。我们在创建存储过程时,也可以定义自己的状态码和错误信息。比如: CREATE PROCedure sp_getemp(salary) ASIF salary=NULLBEGINPRINT “必须提供一个数值作参数!”ENDRETURN 13IF NOT EXISTS(SELECT*FROM职工 WHERE
39、 工资salary)BEGINPRINT“没有满足条件的记录!”ENDRETURN-103SELECT*FROM职工WHERE工资salary 作为一般的原则,在编写存储过程时,应该能够预测用户在执行存储过程时可能出现的错误,并在存储过程中纳入有意义的错误信息或提示信息。 (四)要用好存储过程 存储过程是客户/服务器机制的一个重要组成部分,如果使用客户/服务器机制的数据库管理系统,但是不理解存储过程或没有充分利用存储过程,那将使客户/服务器机制的功能大打折扣,使系统的整体性能可能降低很多。存储过程的管理还可以纳入安全控制的范畴,也就是说存储过程的使用可以授权。利用存储过程可以使困难的或复杂的数
40、据库活动自动化,提高安全性和限制对数据库的存取。另外,根据客户对查询和特定环境资源的要求,存储过程可以改善应用程序的响应时间。 附录三 触发器及其用途(一)基本概念 触发器可以看作是一类特殊的存储过程,它在满足某个特定条件时自动触发执行,存储过程和触发器同是提高数据库服务器性能的有力工具。 触发器是为表上的更新、插入、删除操作定义的,也就是说当表上发生更新、插入或删除操作时触发器将执行。在一个表上,一种类型的触发器只能定义一个。比如,当删除操作发生时,只能有一个触发器执行。触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其他许多不同的功能。(1
41、)强化约束(Enforce Restriction)触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的更新和变化。(2)级联运行(Cascaded Operation)触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器包含对另外一个表的数据操作(如删除、更新、插入),而该操作又导致该表上的触发器被触发。(3)存储过程的调用(Stored Procedure Invocation)为了响应数据库更新,触发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS之外进行操作。由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现
42、定制记录等问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的操作。此外一个表的同一类型(INSERT、UPDATE、DELETE)的多个触发器能够对同一种数据操作采取多种不同的操作。触发器可以用于数据参照完整性和以下一些场合: 1触发器可以通过级联的方式对相关的表进行修改。比如,对父表的修改,可以引起对子孙表的一系列修改,从而保证数据的一致性和完整性。 2触发器可以禁止或撤消违反参照完整性的修改。 3触发器可以强制用比CHECK约束定义更加复杂的限制。触发器也是一个数据库对象。一个触发器和三部分内容有关:激活触发器的表、激活触发器的数据修改语句和触发器要采取
43、的动作。 (二)触发器的种类SQL Server 2000 支持两种类型的触发器:AFTER触发器和INSTEAD OF触发器。其中,AFTER触发器即为SQL Server 2000版本以前所介绍的触发器;该类型触发器要求只有执行某一操作(INSERT、UPDATE、DELETE)之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。AFTER触发器可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder来完成此任务。INSTEAD OF触发器表示并不执行其所定义的操作(INSERT、UPDATE、DELETE),而仅是执
44、行触发器本身。既可在表上定义INSTEAD OF触发器,也可以在视图上定义INSTEAD OF触发器,但对同一操作只能定义一个INSTEAD OF触发器。(三)创建触发器上面介绍了有关触发器的概念、作用和一些基本问题,下面我们将分别介绍在SQL Server中如何用SQL Server管理工具Enterprise Manager和Transaction-SQL来创建触发器。在创建触发器以前必须考虑到以下几个方面: (1)CREATE TRIGGER语句必须是批处理的第一个语句。 (2)表的所有者具有创建触发器的缺省权限,表的所有者不能把该权限传给其他用户。 (3)触发器的数据库对象,其命名必须
45、符合命名规则。 (4)尽管在触发器的SQL语句中可以参照其他数据库中的对象,但是 触发器只能创建在当前数据库中。 (5)虽然触发器可以参照视图或临时表,但不能在视图或临时表上创建触发器,只能在基表或在创建视图的表上创建触发器。 (6)一个触发器只能对应一个表,这是由触发器的机制决定的。 (7)尽管TRUNCATE TABLE语句如同没有WHERE从句的DELETE语句,但是由于TRUNCATE TABLE语句没有被记入日志,所以该语句不能触发DELETE型触发器。 (8)WRITETEXT语句不能触发INSERT或UPDATE型的触发器。创建一个触发器时,必须指定触发器的名字、在哪一个表上定义
46、触发器、激活触发器的修改语句,如INSERT、DELETE、UPDATE,当然两个或三个不同的修改语句也可以触发同一个触发器,如INSERT和UPDATE语句能激活同一个触发器。1用CREATE TRIGGER命令创建触发器 可用CREATE TRIGGER命令创建触发器,其语法规则如下: CREATE TRIGGER trigger_name ONtable|view SITH ENCRYPTION FOR|AFTER|INSTEAD OF DELETE INSERT , UPDATE WITH APPEND NOT FOR REPLICATION AS IF UPDATE(column)
47、AND|ORUPDATE(column) n | IF (COLUMNS_UPDATED() bitwise_operator updated_bitmask) comparison_operatorcolumn_bitmask n sql_statementn (1)trigger_name是用户要创建的触发器的名字。触发器的名字必须符合SQL Server的命名规则,且其名字在当前数据库中必须是唯一的。 (2)tablelview是与用户创建的触发器相关联的表的名字或视图的名称,并且此表或视图必须已经存在。 (3)WITH ENCRYPTION表示对包含有CREATE TRIGGER 文本
48、的syscomments表进行加密。 (4)AFTER表示只有在执行了指定的操作(INSERT、DELETE、UPDATE)之后触发器才被激活(执行触发器中的SQL语句)。若使用关键字FOR,则表示触发器为AFTER触发器,且该类型触发器只能在表上创建。 (5)INSTEAD OF请参看INSTEAD OF触发器。 (6)DELETE , INSERT , UPDATE关键字用来指明哪种数据操作将激活触发器。至少要指明其中的一个选项,在触发器的定义中,三者的顺序不受限制,各选项要用逗号隔开。(7)WITH APPEND表明增加另外一个已存在的触发器。只有在兼容性水平(指某一数据库行为与以前版本
49、的SQL Server兼容程度)不大于65时才使用该选项。 (8)NOT FOR REPLICATION表明当复制、处理和修改与触发器相关联的表时,触发器不能被执行。(9)AS是触发器将要执行的动作。 (10)sql_statement是包含在触发器中的条件语句或处理语句。触发器的条件语句定义了另外的标准来决定将被执行的INSERT、DELETE、UPDATE语句是否激活触发器。(11)IF UPDATE(column)用来测定对某一确定列是插入操作还是更新操作,但不与删除操作用在一起。 (12)IF(COLUMNS_UPDATED())仅在INSERT和UPDATE类型的触发器中使用,用其来
50、检查所涉及的列是被更新还是被插入。 (13)bitwise_operatorj是在比较中使用的位逻辑运算符。 (14)updated_itmask是那些被更新或插入的列的整形位掩码。例如,如果表T包括C1,C2,C3,C4,C5五列。为了确定是否只有C2列被修改可用2来做位掩码;如果想确定C1,C2,C3,C4是否被修改,可用14来做位掩码。 (15)comparison_operator是一个比较操作符。用“=”表示检查在updated_bitmask中定义的所有列是否都被更新,用“”表示检查在updated_bitmask中定义的某些列是否被更新。 (16)column_bitmask指被
51、更新的列的位掩码。从以上语句可以看出,一个表最多可以有三个触发器:一个插入(INSERT)触发器、一个更新(UPDATE)触发器、一个删除(DELETE)触发器。一个触发器只能应用到一个表上,但一个触发器可以包含很多动作,可以执行很多功能。触发器只能建立在基本表上,不可以建立在视图或临时表上。例 创建一个触发器,当向s表中插入一条记录时,自动显示s表中的记录。 CREATE TRIGGER Change_Display On s FOR INSERT,UPDATE,DELETE AS SELECT * FROM s该触发器建立完毕后,当执行如下操作时,将会显示s数据表中的全部记录。EXECUT
52、E InsertRecordDefa sno=S11,sn=张建峰,age=17,sex=男2用Enterprise Manger创建触发器的步骤如下(1)启动Enterprise Manager,登录到要使用的服务器。(2)在Enterprise Manager的左窗格中,展开要创建触发器的数据库文件夹,单击“表”文件夹,此时在右窗格中显示该数据库的所有表。(3)在右窗格中,右击要创建触发器的数据表,在弹出的快捷菜单中,将鼠标指向“所有任务”,在出现的下一级子菜单中选择“管理触发器”菜单项,此时会出现“触发器属性”对话框。(4)在“名称”下拉框中选择“”,“文本”编辑框中输入触发器的文本命令
53、。(5)单击“检查语法”按钮,检查语句是否正确。(6)单击“应用”按钮,在“名称”下拉框列表中会显示新创建的触发器名字。(四)触发器的原理从以上的介绍中我们可以看出触发器具有强大的功能,那么SQL Server是如何用触发器来完成这些任务的呢?下面我们将对其工作原理及实现做详细介绍。 每个触发器有两个特殊的表:插入表和删除表,分别为inserted和deleted。这两个表是逻辑表,并且这两个表都是由系统管理的,存储在内存中,因此不允许用户直接对其修改。这两个表的结构总是与被该触发器作用的表有相同的表结构。这两个表是动态驻留在内存中的,当触发器工作完成,这两个表也被删除。这两个表主要保存因用户操作而被影响到的原数据值或新数据值。另外,这两个表是只读的,即用户不能向这两个表写入内容,但可以引用表中的数据。例如可用如下语句查看DELETED表中的信息:select * from deleted 1插入表的功能对一个定义了插入类型触发器的表来讲,一旦对该表执行了插入(INSERT)操作,那么对该插入的所有行来说,都有一个相应的副本级存放到插入表(inserted)中,即插入表就是用来存储原插入的内容。2删除表的功能对一个定义了删除类型触发器的表来讲,一旦对该表执行了删除(DELETE)操作,则将所有的删除
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教育产业并购整合策略与教育投资并购投资前景研究报告001
- 2025年天然气水合物开采技术地质风险防控策略研究预研报告
- 江西省“红色十校”2025-2026学年高三上学期第一次联考语文试题(含答案)
- 信息科个人年终工作总结(19篇)
- 河北省唐山市玉田县孤树镇方官屯中心小学2024-2025学年五年级下学期3月月考(1-2单元)数学试题
- 2025年第28届中小学学校“推普周”活动总结:以语言为桥 共筑中华民族共同体-
- 应力应变试验培训课件
- 2025年房地产行业投资策略分析报告:恒大碧桂园
- 岩石力学许明课件
- 输电六防课件
- 培训学校前台工作
- 2025年建筑工程类注册安全工程师安全生产专业实务(金属非金属矿山安全)-安全生产专业实务(金属非金属矿山安全)参考题库含答案解析(5卷)
- 2025年全国高考(新课标)政治真题卷含答案解析
- 2025年度情侣分手预防协议书下载中心
- 2025年高考数学试题分类汇编:立体几何试卷+解析
- 吸附及吸附过程课件
- 羽毛球运动基础知识简介课件
- 设计美学研究课件
- 部编版七年级上册语文《雨的四季》课件(定稿;校级公开课)
- 自动控制原理全套ppt课件(完整版)
- 归园田居优质课一等奖课件
评论
0/150
提交评论