版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023/2/4数据库系统原理及应用机械工业出版社
6.1SQLServer2005模式结构6.2SQLServer2005的管理组件及管理工具6.3SQLServer2005数据库操作工具6.4Transact-SQL功能及实例
第6章
SQLServer2005关系数据库管理系统6.1.1客户/服务器(C/S)模式应用系统对于一般的数据库应用系统,除了数据库管理系统外,需要设计适合普通人员操作数据库的界面。目前,流行的开发数据库界面的工具主要包括VisualBASIC、VisualC++、VisualFoxPro、Delphi、PowerBuilder等。数据库应用程序与数据库、数据库管理系统之间的关系如图6-1所示。图6-1数据库应用程序与数据库、数据库管理系统之间的关系客户/服务器(C/S)模式应用系统C/S模式可以运行在单机和网络的两种方式。网络方式:数据库管理系统在网络上的一台主机上运行,应用程序可以在网络上的多台主机上运行,即一对多的方式。例如,用VisualBASIC开发的客户/服务器(C/S)模式的学生成绩管理系统学生信息输入界面如图1.13所示。图1.13C/S模式的学生成绩管理系统界面6.1.2三层客户/服务器(B/S)模式应用系统基于Web的数据库应用采用三层客户/服务器模式,也称B/S结构。第一层为浏览器,第二层为Web服务器,第三层为数据库服务器。浏览器是用户输入数据和显示结果的交互界面,用户在浏览器表单中输入数据,然后将表单中的数据提交并发送到Web服务器;Web服务器应用程序接受并处理用户的数据,通过数据库服务器,从数据库中查询需要的数据(或把数据录入数据库)返回给Web服务器;Web服务器再把返回的结果插入HTML页面,传送到客户端,在浏览器中显示出来。如图6-2所示。图6-2三层客户/服务器结构6.1.2三层客户/服务器(B/S)模式应用系统例如,用ASP.NET开发的三层客户/服务器(B/S)模式的学生成绩管理系统学生信息更新页面如图6-3所示。图6-3B/S模式的学生成绩管理系统页面6.2.1SQLServer2005服务器组件(1)DatabaseEngine。数据库引擎是SQLServer2005用于存储、处理和保护数据的核心服务。SQLServer2005支持在同一台计算机上同时运行多个SQLServer数据库引擎实例。6.2SQLServer2005的管理组件及管理工具6.2.1SQLServer2005服务器组件(2)ReportingServices。SQLServerReportingServices(报表服务,简称SSRS)是基于服务器的报表平台,可以用来创建和管理包含关系数据源和多维数据源中的数据的表格、矩阵、图形和自由格式的报表。(3)AnalysisServices。SQLServerAnalysisServices(分析服务,简称SSAS)为商业智能应用程序提供联机分析处理(OLAP)和数据挖掘功能。(4)IntegrationServices。SQLServerIntegrationServices(集成服务,简称SSIS)主要用于清理、聚合、合并、复制数据的转换以及管理SSIS包。除此之外,它还提供包括生产并调试SSIS包的图形向导工具、用于执行FTP操作、电子邮件消息传递等工作流功能的任务。(5)NotificationServices。SQLServerNotificationServices(通知服务,简称SSNS)是用于开发和部署那些生成并发送通知的应用程序的环境,使用它可以生成个性化消息,并发送给其他人或设备。6.2.2SQLServer2005管理和开发工具1.SQLServer2005管理工具MicrosoftSQLServer2005安装后,可在“开始”菜单中查看安装了哪些工具。另外,还可以使用这些图形化工具和命令实用工具进一步配置
SQLServer。表1.7列举了用来管理
SQLServer2005实例的工具。管理工具说
明SQLServerManagementStudio用于编辑和执行查询,并用于启动标准向导任务SQLServerProfiler提供用于监视SQLServer数据库引擎实例或AnalysisServices实例的图形用户界面数据库引擎优化顾问可以协助创建索引、索引视图和分区的最佳组合SQLServerBusinessIntelligenceDevelopmentStudio用于AnalysisServices和IntegrationServices解决方案的集成开发环境NotificationServices命令提示从命令提示符管理SQLServer对象SQLServerConfigurationManagerSQLServer配置管理器,管理服务器和客户端网络配置设置SQLServer外围应用配置器包括服务和连接的外围应用配置器和功能的外围应用配置器。使用SQLServer外围应用配置器,可以启用、禁用、开始或停止SQLServer2005安装的一些功能、服务和远程连接。可以在本地和远程服务器中使用SQLServer外围应用配置器ImportandExportData提供一套用于移动、复制及转换数据的图形化工具和可编程对象SQLServer安装程序安装、升级到或更改
SQLServer2005实例中的组件表6.1SQLServer管理工具6.2.2SQLServer2005管理和开发工具单击“开始”→“所有程序”→“MicrosoftSQLServer2005”→“配置工具”→“SQLServerConfigurationManager”,在弹出窗口的左边菜单栏中选择“SQLServer2005服务”即可在出现的服务列表中对各个服务进行操作,如图6-4所示。图6-4SQLServer配置管理器6.2.2SQLServer2005管理和开发工具使用SQLServer配置管理器可以完成下列服务任务:(1)启动、停止和暂停服务,双击图1.26服务列表的某个服务即可进行操作。(2)将服务配置为自动启动或手动启动,禁用服务或者更改其他服务设置。(3)更改SQLServer服务所使用的账户的密码。(4)查看服务的属性。(5)启用或禁用SQLServer网络协议。(6)配置SQLServer网络协议。SQLServer2005新实例的默认配置禁用某些功能和组件,以减少此产品易受攻击的外围应用。默认情况下,禁用下列组件和功能:IntegrationServices(SSIS)SQLServerAgent(代理)SQLServerAgent是一种Windows服务,主要用于执行作业、监视SQLServer、激发警报以及允许自动执行某些管理任务。SQLServerBrower(浏览器)此服务将命名管道和TCP端口信息返回给客户端应用程序。在用户希望远程连接SQLServer2005时,如果用户是通过使用实例名称来运行SQLServer2005,并且在连接字符串中没有使用特定的TCP/IP端口号,则必须启用SQLServerBrowser服务以允许远程连接。FullTextSearch(全文搜索)用于快速构建结构化或半结构化数据的内容和属性的全文索引,以允许对数据进行快速的语言搜索。6.2.2SQLServer2005管理和开发工具、2.SQLServerManagementStudio环境SQLServer2005使用的图形界面管理工具是“SQLServerManagementStudio”。除了Express版本不具有该工具之外,其他所有版本的SQLServer2005都附带这个工具。这是一个集成的统一的管理工具组。这个工具组将包括一些新的功能,以开发、配置SQLServer数据库,发现并解决其中的故障。在“SQLServerManagementStudio”中主要有两个工具:“图形化的管理工具(对象资源管理器)”和“TransactSQL编辑器(查询分析器)”。此外还拥有“解决方案资源管理器”窗口、“模板资源管理器”窗口和“注册服务器”等窗口。6.2.2SQLServer2005管理和开发工具(1)“对象资源管理器”与“查询分析器”。图1.27SQLServerManagementStudio6.2.2SQLServer2005管理和开发工具打开“SQLServerManagementStudio”的方法如下:图1.28服务器连接对话框6.2.2SQLServer2005管理和开发工具(2)“模板资源管理器”。使用脚本编制数据库对象与使用图形化向导编制数据库对象相比,最大的优点是使用脚本化的方式具有图形化向导的方式所无法比拟的灵活性。但是,高度的灵活性,也就意味着使用它的时候有着比图形化向导的方式更高的难度。为了降低难度,“SQLServerManagementStudio”提供了“模板资源管理器”来降低编写脚本的难度。(3)“已注册的服务器”。“SQLServerManagementStudio”界面有一个单独可以同时处理多台服务器的“已注册的服务器”窗口。可以用IP地址进行注册数据库服务器,也可以用比较容易分辨的名称为服务器命名,甚至还可以为服务器添加描述。名称和描述会在“已注册的服务器”窗口显示。6.2.2SQLServer2005管理和开发工具(4)“解决方案资源管理器”。是用来管理项目方案资源的有效工具。项目可以将一组文件结合在一起作为组进行访问。创建新项目的步骤如下:
第1步
单击菜单栏中“文件”→在弹出的子菜单中选择“新建”→单击“项目”,选择所要创建的项目的类型。第2步
为该项目创建一个或多个数据库连接或者添加已经存在的项目文件,如图1.30所示,只需要在“解决方案资源管理器”内的“SQLServer脚本2”上右击鼠标,在弹出的快捷菜单中选择要添加的项目即可。图1.30“解决方案资源管理器”窗口6.2.2SQLServer2005管理和开发工具SQLServerManagementStudio功能集成的丰富的管理界面提高日常管理工具的效率利用SMO可扩展的管理架构总结:1、SQLSERVER2005特性2、SQLSERVER2005企业应用框架3、核心组件和后台服务组件(1)表和视图:表是在数据库中存放的实际关系。视图是为了用户查询方便或根据数据安全的需要而建立的虚表。(2)角色:由一个或多个用户组成的单元,也称职能组。一个用户可以成为多个角色中的成员。(3)索引:来加速数据访问和保证表的实体完整性的数据库对象。的索引有群聚和非群聚索引两种。群聚索引会使表的物理顺序与索引顺序一致,一个表只能有一个群聚索引;非群聚索引与表的物理顺序无关,一个表可以建立多个非群聚索引。(4)存储过程:通过Transact-SQL编写的程序。包括系统存储过程和用户存储过程:系统存储过程是由SQLServer2000提供的,其过程名均以SP开头;用户过程是由用户编写的,它可以自动执行过程中安排的任务。(5)触发器:一种特殊类型的存储过程,当表中发生特殊事件时执行。触发器主要用于保证数据的完整性。(6)约束:约束规则用于加强数据完整性。6.3SQLServer2005数据库操作工具
6.3.1数据库对象6.3.2数据库结构(1)SQLServer2000的三种物理文件
1)基本数据文件:基本数据文件用于容纳数据库对象,它使用.mdf作为文件扩展名。
2)辅助数据文件:当数据库中的数据较多时需要建立辅助数据文件。一个数据库中可以没有、也可以有一个或多个辅助数据文件。辅助数据文件的扩展名为.ndf。
3)日志文件:用于存放数据库日志信息的文件。一个数据库可以有一个或多个日志文件。日志文件的扩展名为.ldf。(2)数据库文件的两种组件
1)页:使用的最小数据单元,一页可以容纳8k的数据。共有8种页:数据页、索引页、文本/图像页、全局分配映射表页、页空闲空间、索引分配映射表页、大容量更改映射表页和差异更改映射表页。
2)扩展盘区:扩建表和索引的基本单位,一个扩展盘区由8个相邻页的构成。(3)文件组:多个文件可以归纳成为一个文件组。
6.3.3SQLServer2000的系统数据库1.Master数据库
Master数据库的主文件名为Master.mdf,日志文件为Masterlog.ldf。Master中内含许多系统表,用来跟踪和记录SQLServer相关信息。2.Msdb数据库
Msdb的主文件名为Msdb.dbf,日志文件名为Msdb.ldf。Msdb由SQLServer企业管理器和代理服务器使用。Msdb中记录着任务计划信息、事件处理信息、数据备份及恢复信息和警告及异常信息。3.Model数据库
Model数据库的主文件是model.mdf,日志文件为model.ldf。Model数据库是SQLServer2000为用户数据库提供的样板,新的用户数据库都以model数据库为基础。4.tempdb数据库
tempdb的主文件名和日志文件名分别为tempdb.dbf和tempdb.ldf。tempdb是一个共享的工作空间,SQLServer2000中的所有数据库都可以使用它,它为临时表和其他临时工作提供了一个存储区。6.3.4界面方式创建数据库及其他对象(演示)1、创建数据库2、创建表2.1.定义表的完整性约束和索引(1)定义索引和键(2)定义表间关联选择“索引/键”页面,选择表页面
6.4Transact-SQL语言
6.4.1数据定义语言1.创建和管理数据库
CREATEDATABASE〈数据库名〉
[ON[PRIMARY][(NAME=〈逻辑数据文件名〉,]
FILENAME='〈操作数据文件路径和文件名〉'
[,SIZE=〈文件长度〉]
[,MAXSIZE=〈最大长度〉]
[,FILEROWTH=〈文件增长率〉])[,…n]]
[LOGON([NAME=〈逻辑日志文件名〉,]
FILENAME='〈操作日志文件路径和文件名〉'
[,SIZE=〈文件长度〉])[,…n]]
[FORRESTORE]子句中:PRIMARY指明主文件名;SIZE说明文件的大小,数据库文件最小为1MB,默认值为3MB;FILEROWTH说明文件的增长率,默认值为10%。FORRESTORE子句说明重建一个数据库,该重建的数据库用于数据恢复操作。
例2.9创建一个名为XSCJ,主文件初始大小为5MB,最大大小为50MB,增长方式为按10%增长;日志文件大小为2MB,最大大小为5MB,每次增长1MB。分析:一个主数据文件和一个日志文件logon(name=xscj_log,filename='e:\xscj_log.ldf',size=2MB,Maxsize=5MB,filegrowth=1MB)createdatabaseXSCJon(name=xscj_dat,filename='e:\xscj_dat.mdf',size=5MB,Maxsize=50MB,filegrowth=10%)2.定义表:CREATETABLE〈表名〉(〈列名〉〈类型〉|AS〈表达式〉[〈字段约束〉][,……][〈记录约束〉])(1)字段约束
1)[NOTNULL|NULL]:不允许或允许字段值为空。
2)[PRIMARYKEYCLUSTERED|NONCLUSTERED:字段为主码并建立聚集或非聚集索引。
3)[REFERENCE〈参照表〉(〈对应字段〉)]:定义被参照表及字段。
4)[DEFAULT〈缺省值〉]:定义字段的缺省值。
5)[CHECK(〈条件〉)]:定义字段应满足的条件表达式。
6)[IDENTITY(〈初始值〉,〈步长〉)]:定义字段为数值型数据,并指出它的初始值和逐步增加的步长值。
(2)记录约束
CONSTRAINT〈约束名〉〈约束式〉
1)[PRIMARYKEY[CLUSTERED|NONCLUSTERED](〈列名组〉)]
2)[FOREIGNKEY(〈外码〉)REFERENCES〈参照表〉(〈对应列〉)]:
3)[CHECK(〈条件表达式〉)]:定义记录应满足的条件。
4)[UNIQUE(〈列组〉)]:定义不允许重复值的字段组。
字段约束CREATETABLEXS(学号char(6)primarykey,
姓名char(8)unique,
专业名char(10)notnull,
性别char(2)constraintckxbcheck(性别in(’男’,’女’))政治面貌char(6)default‘团员’
出生时间smalldatetime
notnull,
总学分intnull,
备注Varchar(500)null)Createtablesc(学号char(6),课程号char(3),成绩tinyint,学分tinyint,Primarykey(学号,课程号),constraintfk_xhforeignkey(学号)ReferencesXS(学号),constraintfk_kchforeignkey(课程号)ReferencesKC(课程号))3.基本表的维护(1)修改基本表
1)修改字段的定义。
ALTERTABLE〈表名〉ALTERCOLUMN〈列名〉〈新类型〉[NULL|NOTNULL]〈约束定义〉ALTERTABLExs3ALTERCOLUMNxhchar(8)2)增加字段和表约束规则。
ALTERTABLE〈表名〉ADD{〈列定义〉|[〈表约束定义〉]}ALTERTABLEXS3ADDCONSTRIANTkkCHECK(政治面貌=‘团员’or
政治面貌=‘群众’or政治面貌=‘党员’3)删除字段或约束规则。
ALTERTABLE〈表名〉DROP{[CONSTRAINT]〈约束名〉|COLUMN〈列名〉}ALTERTABLEXSDROPKK
4)使约束有效或无效。
ALTERTABLE〈表名〉{CHECK|NOCHECK}CONSTRAINT{ALL|〈约束名组〉}(2)删除基本表:DROPTABLE〈表名〉
4.创建和管理索引
(1)创建索引
CTEATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX〈索引名〉ON〈表名〉(〈索引列组〉)
(2)删除索引
DROPINDEX〈表名〉.〈索引名〉
5.创建和管理视图
(1)创建视图
创建视图的语法为:
CREATEVIEW〈视图名〉[(〈列名组〉)]
[WITHENCRYPTIOPN]
AS〈子查询〉
[WITHCHECKOPTION]
(2)删除视图
DROPVIEW〈视图名组〉
6.创建和管理缺省(1)创建缺省
CREATEDEFAULT〈缺省名〉
(2)绑定缺省
EXECsp_bindfault
‘〈缺省名〉’,‘〈表名〉.〈列名〉’
系统存储过程执行时的格式为:
EXEC〈存储过程名〉〈参数组〉
如果参数是常量,则要加定界符
‘
’
。
(3)解除缺省
EXECsp_unbinddefault‘〈缺省名〉’,‘〈表名〉.〈列名〉’
(4)删除缺省
DROPDEFAULT〈缺省名组〉
定义默认对象:设置默认值为男CREATEDEFAULTsex_mrAS
‘男’将默认对象sex_mr绑定到学生表的性别。
execsp_bindefault
‘sex_mr',‘学生.性别’删除学生表性别列和默认对象sex_mr的绑定。execsp_unbinddefault
‘学生.性别’删除默认对象sex_mr
DROPDEFAULTsex_mr
7.创建和管理规则(1)创建规则
CREATERULE〈规则名〉AS〈规则表达式〉
规则表达式是WHERE子句中的有效表达式。
(2)绑定规则
EXECsp_bindrule‘〈规则名〉’,‘〈对象名〉’(3)解除规则
EXECsp_unbindrule‘〈规则名〉’,‘〈对象名〉’(4)删除规则
DROPRULE〈规则名组〉定义规则对象:设置成绩在0分和100分之间。createrulecj_rl
AS@cj>=0and@cj<=100将规则对象cj_rl绑定到成绩表的成绩列。execsp_bindrule
‘cj_rl’,‘sc.成绩’删除学生表性别列和规则对象cj_rl的绑定。execsp_unbindrule
‘成绩.成绩’删除规则对象cj_rl。droprulecj_rl
8.创建和管理存储过程存储过程是一系列预先编译好的、能实现特定数据操作功能的SQL代码集,用户可以像使用函数一样重复调用这些存储过程,实现它所定义的操作。将执行计划存储在数据库的服务器中。它的运行速度比独立运行同样的程序要快。
(1)创建存储过程和调用存储过程
CREATEPROCEDURE〈过程名〉[;〈版本号〉][@〈参数名〉〈参数类型〉[=〈缺省值〉][OUTPUT]…]
[WITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]
AS〈SQL语句组〉
1)版本号是整数,它用于将有相同名字的存储过程编为不同的组。
2)OUTPUT用于给调用者返回值。3)RECOMPILE为重编译。
4)ENCYPTION为加密选项。
5)参数前加“@”为局部变量,加“@@”则说明为全局变量。
过程的调用语句为:
EXE[UTE]〈过程名〉[[@〈参数名〉=]〈参数〉…[〈版本号〉](2)删除存储过程
DROPPROCEDURE〈存储过程名组〉例1:创建存储过程,实现查询所有学生信息的功能。Createprocproc_7_1AsSelect*Fromxswhere学号='121103'例2:创建存储过程proc_7_2,要求实现根据学生学号,产生不同结果,如果该学生信息不存在,则显示“无此学号的学生!”,否则返回该学生的基本信息。Createprocproc_7_2@snochar(8)AsIfexists(Select*Fromxswhere学号=@sno)select*Fromxswhere学号=@snoElseprint'无此学号的学生!‘
===============================execproc_7_1execproc_7_2‘061101’例3:带有参数的存储过程,实现传递两个数,将计算的和返回调用处的接收变量。CREATEPROCEDURE
spAdd@Value1INT,@Value2INT,@ResultValue
INT
OUTPUTASSELECT@ResultValue=@Value1+@Value2ReturnDECLARE@v1INTDECLARE@v2INTDECLARE@valueTotal
INTSET@v1=125SET@v2=3SET@valueTotal=34EXECspAdd@v1,@v2,@valueTotal
OUTPUTPRINTCONVERT(CHAR(5),@v1)+'与'+CONVERT(CHAR(5),@v2)+'的和等于:'+
CONVERT(CHAR(5),@valueTotal)GO例4:建立存储过程,根据学生宿舍统计表dormitory,将每个宿舍人数统计结果插入到学生公寓人数管理信息表apartmentcreateprocgytj@gychar(5)asdeclare@summ
intbeginselect@summ=count(*)fromdormitorywhereroomid=@gyinsertintoapartmentvalues(@gy,@summ)endexecgytj'201'execgytj'202'execgytj'203'execgytj'204'execgytj'205'execgytj'510'修改存储过程ALTERPROCEDURE
存储过程名称参数定义ASSQL语句例5:修改proc_7_t1存储过程的定义。alterprocproc_7_t1asSelectxs.学号,姓名,性别,xskc.课程号,课程名,kc.学分,成绩Fromxs,sc,kc
Wherexs.学号=sc.学号andsc.课程号=kc.课程号and专业名='计算机教育‘删除存储过程:DROPPROC[EDURE]
存储过程名称例6.8:删除存储过程proc_7_1。
dropprocproc_7_1
触发器是一种特殊类型的存储过程,当表中数据被修改时,SQLServer自动执行触发器中定义的T-SQL语句。使用触发器可以实施更为复杂的数据完整性约束。工作原理:
触发器被触发时,内存中产生两个临时表:INSERTED和DELETEDinserted表和deleted表的结构总是与被该触发器作用的表的结构相同,而且只能由创建它们的触发器引用。它们是临时的逻辑表,由系统来维护,不允许用户直接对它们进行修改。它们存放于内存中,并不存放在数据库中。触发器工作完成后,与该触发器相关的这两个表也会被删除。9.创建和管理触发器1.INSERT触发器的工作原理当一个记录插入到表中时,INSERT触发器自动触发执行,相应的插入触发器创建一个inserted表,新的记录被增加到该触发器表和inserted表中。它允许用户参考初始的INSERT语句中的数据,触发器可以检查inserted表,以确定该触发器里的操作是否应该执行和如何执行。2.DELETE触发器的工作原理当从表中删除一条记录时,DELETE触发器自动触发执行,相应的删除触发器创建一个deleted表,deleted表是个逻辑表,用于保存已经从表中删除的记录,该deleted表允许用户参考原来的DELETE语句删除的已经记录在日志中的数据。应该注意:当被删除的记录放在deleted表中的时候,该记录就不会存在于数据库的表中了。因此,deleted表和数据库表之间没有共同的记录。3.UPDATE触发器的工作原理修改一条记录就等于插入一条新记录,删除一条旧记录。进行数据更新也可以看成由删除一条旧记录的DELETE语句和插入一条新记录的INSERT语句组成。当在某一个触发器表的上面修改一条记录时,UPDATE触发器自动触发执行,相应的更新触发器创建一个deleted表和inserted表,表中原来的记录移动到deleted表中,修改过的记录插入到了inserted表中。
CREATETRIGGER〈触发器名〉ON〈表名〉[WITHENCRYPTION]FOR{[DELETE][,][INSERT][,][UPDATE]}[WITHAPPEND][NOTFORREPLICATION]AS〈SQL语句组〉
1)WITHENCRYPTION为加密。
2)DELETE触发器是当对表执行DELETE操作时删除元组,将删除的元组放入deleted表中。检查delete表中的数据,确定该如何处理。
3)INSERT触发器在对执行插入数据操作时,将插入表中的数据拷贝并送入inserted表中,根据inserted表中的值决定如何处理。
4)UPDATE触发器仅在更新数据操作时将要被更新的原数据移入deleted表中,将更新后的数据备份送入inserted表中,对deleted和inserted表进行检查,并决定如何处理。
5)NOTFORREPLICATION项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不能被执行。例1:对Xs表创建delete、update和insert触发器。当触发该操作,自动执行T-SQL语句。CREATETRIGGERdelete_student1onXSFORDELETE,UPDATE,INSERTASprint‘数据操作成功'GO测试:deletefromXSwhere学号=‘1202701‘….例2:当试图删除SC表中的一条记录时,若成绩为空,则撤消事务。CREATETRIGGERt_xskc
ONSCAFTERDELETE ASDECLARE@scoreINT SELECT@score=成绩FROMDELETEDIF(@scoreISNULL)BEGIN
RAISERROR('不允许删除这条记录,因为该生的成绩必须给出后方可删除',16,1)END例3:教师录入课程成绩时,若成绩输入小于0或者大于100都提示出错。CREATETRIGGERtrigger1 ONcjbAFTERinsert ASDECLARE@scoreINT SELECT@score=cj
FROMinsertedIF(@score>100or@score<0)BEGIN
RAISERROR(‘不允许插入这条记录,因为该生的成绩无效,重新输入!!!',16,1)
ROLLBACKTRANSACTION
END触发器应用实例:createtablestudent( employeeidchar(6)notnullprimarykeyclustered, namechar(6)notnulluniquenonclustered, sexchar(2)notnull, birthdaydatetimenotnull, nationchar(10)notnull, departmentchar(6)notnull, classchar(8)notnull, politicalchar(4)notnull)createtableclasses( classchar(8)notnullprimarykey, boyintnotnull, girlintnotnull,
peoplesum
intnotnull)实现在student表中插入数据时和classes表数据的一致性createtriggerstudent_cfqonstudentafterinsertasbegindeclare@bj1char(8),@xb1char(2)—@bj1:班级变量,@xb1:性别变量declare@boyint,@girl
int--@boy:男生变量,@girl:女生变量set@boy=0--男生变量赋值set@girl=0--女生变量赋值select@bj1=class,@xb1=sexfrominserted--插入的记录先放在inserted表中,再将该表中班级class和性别sex的值赋值给对应的变量。select@boy=1frominsertedwhere@xb1='男'select@girl=1frominsertedwhere@xb1='女'updateclassessetboy=boy+@boywhereclass=@bj1updateclassessetgirl=girl+@girlwhereclass=@bj1updateclassessetpeoplesum=peoplesum+1endselect@boy=1frominsertedwhere@xb1='男'select@girl=1frominsertedwhere@xb1='女'updateclassessetboy=boy+@boywhereclass=@bj1updateclassessetgirl=girl+@girlwhereclass=@bj1updateclassessetpeoplesum=peoplesum+1以上改成if
else语句。例6-32:定义借阅表的插入触发器,要求当读者已经借过5本书时不能继续借书。Createtrigger借书限制on借阅afterinsertAsif(selectcount(*)frominserted,借阅whereinserted.读者证号=借阅.读者书证号)>5Beginrollbacktransactionprint‘借书已超过限额’end【例6-21】设有member表(成员表)、loan表(借书表)和reservation表(预定书表)。通过触发器定义未还图书的成员不能从成员表中删除,当删除成员时,该成员在的预定书表(reservation表)中的记录也将全部被删除。
CREATETRIGGERmember_deleteONmember
FORDELETE
ASIF(SELECTCOUNT(*)
FROMloan,deleted
WHEREloan.member_no=deleted.member_no)>0
ROLLBACKTRANSACTION
ELSE
DELETEreservation
FROMreservation,deleted
WHEREreservation.member_no=deleted.member_no
例:实现按成绩分为四个等级:优、良、中、合格、差select
学号,成绩,'scorelevel'=
case
when
成绩>=90and成绩<=100then'优'
when成绩>=80and成绩<90100then'良'
when成绩>=70and成绩<80then'中'
when成绩>=60and成绩<=70then'合格'
else'差'
endfromsc分析:书203页:例6-346.4.2数据操纵语言
1.数据检索语句的语句格式
SELECT〈查询列〉
[INTO〈新表名〉]
[FROM〈数据源〉]
[WHERE〈元组条件表达式〉]
[GROUPBY〈分组条件〉][HAVING〈组选择条件〉]
[ORDERBY〈排序条件〉]
[COMPUTER〈统计列组〉][BY〈表达式〉]
(1)SELECT子句SELECT[ALL|DISTINCT][TOP〈数值〉[PERCENT]]〈查询列组〉
查询列为:〈查询列〉::=*|〈表或视图〉.*|〈列名或表达式〉[AS]〈列别名〉
|〈列别名〉=〈表达式〉
1)ALL|DISTINCT:ALL为返回所有行,DISTINCT为仅显示结果集中的惟一行。该项不选时,ALL是缺省值。
2)TOP〈数值〉:仅返回结果集中的前〈数值〉行。如果有[PENCENT],则返回结果集中的百分之〈数值〉行记录。
3)“*”:指明返回表和视图的全部列。
4)〈表或视图〉.*:指明返回指定表或视图的全部列。
5)〈列别名〉:用来代替出现在结果集中的列名或表达式,别名可以在ORDERBY子句中出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校抽烟检讨书500字(6篇)
- 邮票的教学反思5篇
- 离职申请报告书怎么写范文(稿件8篇)
- 关于小区养狗问卷调查
- 清退侨房协议书
- 山东省土地承包经营权流转合同示范文本
- 班组长岗位职责
- 读爱的教育的读书心得8篇
- 绿色能源产业园区管理策略
- 装饰装修室外施工合同
- 2024年建筑电工复审考试题库附答案
- 2024年4月自考04737C++程序设计试题及答案含评分参考
- 睡眠医学智慧树知到期末考试答案章节答案2024年广州医科大学
- GB/T 17259-2024机动车用液化石油气钢瓶
- 国开(河北)2024年《中外政治思想史》形成性考核1-4答案
- 床边护理带教体会
- 2024年社区工作者考试必背1000题题库及必背答案
- MOOC 微型计算机原理与接口技术-南京邮电大学 中国大学慕课答案
- 1kw太阳能独立供电系统解决方案
- 七年级期中考试考后分析主题班会课件
- 环境教育与公众参与-第1篇
评论
0/150
提交评论