《第3章sqlserver2000的使用》由会员分享,可在线阅读,更多相关《第3章sqlserver2000的使用(85页珍藏版)》请在金锄头文库上搜索。
1、数据库原理及应用第3章SQL Server 2000的使用本章要点vSQL Server 2000系统的组成及基本特性vSQL Server 2000安装方法vTransact-SQL语句的使用vSQL Server 2000数据库管理v表的管理与使用v视图的创建与管理v索引的创建与管理v存储过程与触发器的使用8/12/2024数据库原理及应用3.1 SQL Server 2000特性 3.1.1 SQL Server 关系数据库发展简史SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司
2、共同开发的,并于1988年推出了第一个OS/2版本。SQLServer近年来不断更新版本,1992年,Microsoft公司开发了SQLServer的WindowsNT版本;1993年,Microsoft公司发布了运行在WindowsNT3.1上的SQLServer4.2;1994年,Microsoft和Sybase公司正式停止了技术合作;1995年,Microsoft公司公布了SQLServer6.0,SQLServer6.0提供了集中的管理方式,并内嵌了复制的功能;1996年,Microsoft推出了SQLServer6.5版本;1997年推出了SQLServer6.5企业版,该版本包含了
3、4GB的RAM支持,8处理器以及对群集计算机的支持。8/12/2024数据库原理及应用1998年,SQLServer7.0版本和用户见面;SQLServer2000是Microsoft公司于2000年推出的最新版本。3.1.2 SQL Server 特点(1)真正的客户机/服务器体系结构。(2)图形化用户界面,使系统管理和数据库管理更加直观、简单。(3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。(4)SQLServer与WindowsNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQLServer也可以很好地与MicrosoftBackOffice产
4、品集成。(5)具有很好的伸缩性,可跨越从运行Windows95/98的膝上型电脑到运行Windows2000的大型多处理器等多种平台。8/12/2024数据库原理及应用(6)对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。(7)SQLServer提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。SQLServer2000与以前版本相比较,又具有以下新特性:(1)支持XML(extensiveMarkupLanguage,扩展标记语言)。(2)强大的基于Web的分析。(3)增加了新的数据类型。(4)支持分布式的分区视图。(5)改进的英语查询。8/1
5、2/2024数据库原理及应用3.2 安装SQL Server 2000 3.2.1 安装SQL Server 2000对用户环境的要求(1)SQLServer2000常见的版本企业版(EnterpriseEdition)企业版支持SQLServer2000全部可用功能,并可根据支持最大的Web站点和企业联机事务处理(OLTP)及数据仓库系统所需的性能水平进行伸缩。企业版作为生产数据库使用。标准版(StandardEdition)标准版支持SQLServer2000的许多功能,但在服务器扩性、大型数据库支持、数据仓库、Web站点等方面能力欠缺。标准版适合于作为小工作组或部门的数据库服务器用。8/
6、12/2024数据库原理及应用 个人版(Personal Edition)供移动用户使用,这些用户有时从网络上断开,但所运行的应用程序需要SQL Server 数据存储。在客户端计算机上运行需要本地SQLServer数据存储的独立应用程序也使用个人版。开发者版(DeveloperEdition)开发者版支持企业版的所有功能,但是只能将开发版作为开发和测试系统使用,不能作为生产服务器使用。另外,SQLServer2000还有WindowsCE版和企业评估版两个比较不常见的版本。(2)安装、运行SQLServer2000的硬件需求计算机Inter及其兼容计算机,Pentium166Mz或者更高处理
7、器或DECAlpha和其兼容系统。8/12/2024数据库原理及应用 内存(RAM) 企业版最少64MB内存,其他版本最少需要32MB内存,建议使用更多的内存。 硬盘空间完全安装(Full)需要180MB的空间,典型安装(Typical)需要170MB的空间,最小安装(Minimum)需要65MB的空间。(3)安装、运行SQLServer2000的软件需求SQLServer2000企业版必须运行于安装WindowsNTServerEnterpriseEdition4.0或者Windows2000AdvancedServer以及更高版本的操作系统下。SQLServer2000标准版必须运行于安装
8、WindowsNTServerEnterpriseEdition4.0、WindowsNTServer4.0、Windows2000Server以及更高版本的操作系统下。8/12/2024数据库原理及应用 SQL Server 2000 个人版可在多种操作系统下运行,如可运行于Windows 9x, Windows NT 4.0或Windows 2000的服务器版或工作站版的操作系统下。SQL Server 2000 开发者版可运行于上述Windows 9x以外的所有操作系统下。3.2.2 安装SQL Server 2000SQLServer2000的安装过程与其它MicrosoftWindo
9、ws系列产品类似。用户可根据向导提示,选择需要的选项一步一步地完成。8/12/2024数据库原理及应用3.3 3.3 SQL Server 2000SQL Server 2000系统的组成系统的组成 3.3.1 数据库3.3.1.1 SQL Server数据库(1)Master数据库是SQLServer系统最重要的数据库,它记录了SQLServer系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQLServer的初始化信息和其它系统数据库及用户数据库的相关信息。(2)Model数据库是所有用户数据库和Tempdb数据库的模板数据库,它含有Master数据库所有系统表的子集,
10、这些系统数据库是每个用户定义数据库需要的。(3)Msdb数据库是代理服务数据库,为其警报、任务调度和记录操作员的操作提供存储空间。(4)Tempdb是一个临时数据库,它为所有的临时表、临时存储过程及其它临时操作提供存储空间。8/12/2024数据库原理及应用(5)Pubs和Northwind数据库是两个实例数据库,它们可以作为SQLServer的学习工具。3.3.1.2 SQL Server 系统表几个最重要的系统表(1)Sysobjects表SQLServer的主系统表sysobjects出现在每个数据库中,它对每个数据库对象含有一行记录。(2)Syscolumns表系统表syscolumn
11、s出现在master数据库和每个用户自定义的数据库中,它对基表或者视图的每个列和存储过程中的每个参数含有一行记录。(3)Sysindexes表 系统表sysindexes出现在master数据库和每个用户自定义的数据库中,它对每个索引和没有聚簇索引的每个表含有一行记录,它还对包括文本/图像数据的每个表含有一行记录。8/12/2024数据库原理及应用(4)Sysusers表系统表sysusers出现在master数据库和每个用户自定义的数据库中,它对整个数据库中的每个WindowsNT用户、WindowsNT用户组、SQLServer用户或者SQLServer角色含有一行记录。(5)Sysdat
12、abases表系统表sysdatabases对SQLServer系统上的每个系统数据库和用户自定义的数据库含有一行记录,它只出现在master数据库中。 (6)Sysdepends表 系统表Sysdepends对表、视图和存储过程之间的每个依赖关系含有一行记录,它出现在master数据库和每个用户自定义的数据库中。 (7)Sysconstraints表 系统表sysconstraints对使用CREATE TABLE或者ALTER TABLE语句为数据库对象定义的每个完整性约束含有 一行记录,它出现在master数据库和每个用户自定义的数据库中。8/12/2024数据库原理及应用3.3.2 S
13、QL Server 工具和实用程序3.3.2.1 服务管理器(Service Manager)3.3.2.2 客户端网络实用工具(Client Network Utility)3.3.2.3 服务器网络实用工具(Server Network Utility)3.3.2.4 企业管理器(Enterprise Manager) 利用企业管理器可以完成的操作有: 管理SQL Server 服务器。 建立与管理数据库。 建立与管理表、视图、存储过程、触发程序、角色、规则、默认值等数据库对象,以及用户定义的数据类型。 备份数据库和事务日志、恢复数据库。 复制数据库。 设置任务调度。 设置警报。 提供跨服
14、务器的拖放控制操作。 8/12/2024数据库原理及应用 管理用户帐户。 建立Transact-SQL命令语句以及管理和控制SQL Mail。 3.3.2.5 查询分析器(Query Analyzer) 3.3.2.6 联机丛书 8/12/2024数据库原理及应用3.4 3.4 Transact-SQLTransact-SQL语言简介语言简介 3.4.1 概述美国国家标准协会(ANSI)和国际标准化组织(ISO)为SQL定义了标准。Transact-SQL支持SQL-92入口级别的实现,能够在任何与ANSI-SQL兼容的产品中运行。Transact-SQL语言是MicrosoftSQLServ
15、er提供的一种定义、操作和控制数据的语言,是SQLServer内部使用的编程语言。使用Transact-SQL编写应用程序可以完成所有的数据库管理工作。任何应用程序,只要是向SQLServer数据库管理系统发出命令以获得数据库管理系统的响应,最终都必须体现为Transact-SQL形式的指令。对用户来讲,Transact-SQL是惟一可以和SQLServer数据库管理系统进行交互的语言。8/12/2024数据库原理及应用3.4.2 Transact-SQL语句类型3.4.2.1 数据定义语言(DDL)数据定义语言是指用来定义和管理数据库以及数据库中的各种对象的语句,这些语句包括CREATE、A
16、LTER和DROP等语句。在SQLServer2000中,数据库对象包括表、视图、触发器、存储过程、规则、缺省、用户自定义的数据类型等。这些对象的创建、修改和删除等都可以通过使用CREATE、ALTER、DROP等语句来完成。3.4.2.2 数据操纵语言(DML)数据操纵语言是指用来查询、添加、修改和删除数据库表中数据的语句,这些语句包括SELECT、INSERT、UPDATE、DELETE等。在默认情况下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成员才有权利执行数据操纵语言。8/12/2024数据库原理及应用数据查询操作使用SELECT语
17、句实现,其语法形式如下:SELECTselect_listINTOnew_tableFROMtable_source,nWHEREsearch_conditionGROUPBYgroup_by_expressionHAVINGsearch_conditionORDERBYorder_expressionASC|DESCCOMPUTEclause8/12/2024数据库原理及应用SELECT子句的语法形式如下所示:SELECTALL|DISTINCTTOPnPERCENT:=*|table_name|view_name|table_alias.*|column_name|expression|I
18、DENTITYCOL|ROWGUIDCOLAScolumn_alias|column_alias=expression,.n各个选项说明如下:SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。8/12/2024数据库原理及应用INTO子句用于指定所要生成的新表的名称。FROM子句用于指定要查询的表或者视图,最多可以指定16个表或者视图,用逗号相互隔开。WHERE子句用来限定查询的范围和条件。GROUPBY子句是分组查询子句。HAVING子句用于指定分组子句的条件。GROUPBY子句、HAVING子句和集合函数一起可以实现对每个组生成一行和一个汇总值
19、。ORDERBY子句可以根据一个列或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号。ASC表示升序排列,DESC表示降序排列。COMPUTE子句使用集合函数在查询的结果集中生成汇总行。 COMPUTE BY子句用于增加各列汇总行。8/12/2024数据库原理及应用(1)简单的查询(2)带TOP关键字的查询(3)带DISTINCT关键字的查询DISTINCT关键字能够从返回的结果数据集合中删除重复的行,使返回的结果更简洁。(4)使用计算列查询时需要对查询到的数据进行再次计算在Transact-SQL中使用计算列,计算列并不存储于表格所存储的数据库中,它是通过对某些列的数据
20、进行计算得来的结果。在计算列上允许使用=、-、*、/、%和按照位来进行计算的逻辑运算符,如AND(&)、OR(|)、XOR()、NOT()以及字符串连接运算符(+)。(5)操作查询列的名称可以对查询数据的列的名称进行修改,或者为没有标题的列增加列名。8/12/2024数据库原理及应用(6)使用WHERE子句where子句可使用的运算符算术运算符:=、!、!=、=、!=逻辑运算符:NOT、AND、OR例3.16显示居住在加利福尼亚州且姓名不为McBadden的作者列。使用BETWEEN关键字使用IN关键字(7)使用LIKE子句进行模糊查询like子句后面的查询条件字符串中,可以使用下列4种通配符
21、:%:表示从0到n个任意字符。_:表示单个的任意字符。:表示方括号里列出的任意一个字符。:任意一个没有在方括号里列出字符。8/12/2024数据库原理及应用(8)使用统计函数进行查询为了对查询的结果集进行有效的统计处理,SQLServer提供了一系列的统计函数,通过使用这些函数可以实现对结果集的汇总、求平均值、最大值、最小值等运算。统计函数共有六个,分别是:SUM():求和,返回一个数字列或计算列的总和AVG():求平均值,对一个数字列或计算列求平均值MIN():求最小值,返回一个数字列或数字表达式的最小值MAX():求最大值,返回一个数字列或数字表达式的最大值COUNT():返回非空值的字段
22、数目COUNT(*):返回符合查询条件的行的数目8/12/2024数据库原理及应用(9)使用GROUPBY子句进行查询GROUPBY子句将查询结果按某一列或多列值分组,值相等的为一组,在GROUPBY子句中,不支持列的别名和任何使用了统计函数的列。此外,select后面每一列数据除了出现在统计函数中的列以外,都必须在GROUPBY子句中应用。(10)使用COMPUTEBY及COMPUTE子句进行查询COMPUTEBY子句可以通过BY指定的字段进行分组计算,COMPUTE子句则计算所有的字段值之和。(11)多表连接查询在where中指定连接select输出表列from表1,表2where表1.列
23、1=表2.列2where子句“=”左边如果为“*”,表示左外连接,“=”右边如果为“*”,表示右外连接。8/12/2024数据库原理及应用使用JOIN和ON关键字指定连接条件select输出表列from表1JOIN表2ON表1.列1=表2.列2JOIN前面可以加上如下可选的关键字:INNER:表示内连接LEFT:表示左外连接RIGHT:表示右外连接FULLOUTER:表示完全连接连接两个以上的表的时候,如果有M个表进行连接操作,那么连接条件不能少于M-1个。(12)嵌套查询T_SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块,一个查询块嵌套在另一个查询块的WHERE子句或
24、HAVING短语的条件中的查询称为嵌套查询。其执行过程为,由里向外进行处理,子查询的结果用于建立其父查询的查找条件。8/12/2024数据库原理及应用(13)使用union子句进行查询使用Union子句的查询称为联合查询,它可以将两个或更多的查询结果集组合为一个单个结果集,该结果集包含联合查询中所有查询结果集中的全部行数据。语法格式:SELECT语句UNIONALLSELECT语句UNIONALLSELECT语句,N使用UNION组合多个查询结果集的基本规则是:所有查询中的列数和列的顺序必须相同。数据类型必须兼容。查询结果集的标题为第一个SELECT语句的标题。UNION子句自动删除重复行,若
25、要保留,使用ALL关键字。8/12/2024数据库原理及应用若要对结果集排序,则在最后一个SELECT语句中使用ORDERBY子句,但排序必须依据第一个SELECT语句中的列。添加数据操作使用INSERT语句实现,其基本语法格式为:INSERTINTOTable_name(column_name),nVALUES(expression),n使用INSERT语句注意事项:在insert语句中,values列表中的表达式的数量,必须匹配列表中的列数;表达式的数据类型必须可以和表格中对应各列的数据类型兼容。如果在表格种存在定义为NOTNULL的数据列,那么该列的值必须要出现在VALUES的列表中。否
26、则,会出错。8/12/2024数据库原理及应用修改数据使用UPDATE语句实现,其基本语法格式为:UPDATEtable_nameSETcolumn_name=expression|default|NULL,nFROMtable_namenWHEREsearchcondition3.4.2.3 数据控制语言(DCL)数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。下面只介绍每条语
27、句的基本作用,详细的用法将在下一章介绍。8/12/2024数据库原理及应用(1)GRANT语句GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。(2)DENY语句DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。(3)REVOKE语句REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。3.4.3 Transact-SQL语言编程基础8/12/2024数据库原理及应用3.4.3.1 注释 注释是程
28、序代码中不执行的文本字符串(也称为注解)。在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“-”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。 3.4.3.2 批处理批处理是一个T_SQL语句组,可以包含一条SQL语句,也可以包含多条SQL语句,这些语句被应用程序一次性地从客户机传递到服务器上执行。SQLServer将批处理的所有语句作为一个整体进行编译和执行。因此,如果在编译过程中出现错误,那么所有的语句都无法执行。可以一次提交给服务器多个批处理命令,所有的批处理都使用GO作为结束标志,当编译器读到GO时,它便把GO前面的所有语句当作
29、一个批处理发送给服务器。GO本身不是T_SQL语句的组成部分,它只是一个表示批处理结束的命令。8/12/2024数据库原理及应用3.4.3.3 变量变量是一种语言中必不可少的组成部分。Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。(1)局部变量局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前加上标志“”,而且必须先用DECLAR
30、E命令定义后才可以使用。声明局部变量的语法形式:DECLAREvariable_namedatatype,.n8/12/2024数据库原理及应用参数说明如下:varialbe_name:局部变量的变量名,必须以开头,varialbe_name的命名形式必须符合SQLServer的命名规则。datatype:变量的数据类型。可以是除text,ntext和image以外的所有数据类型。为局部变量赋值的语法形式:SELECTvariable_name=expression,.n或SETvariable_name=expression,.n(2)全局变量全局变量是SQLServer系统内部使用的变量,
31、其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQLServer的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。8/12/2024数据库原理及应用使用全局变量时应该注意以下几点:全局变量不是由用户的程序定义的,它们是在服务器级定义的。用户只能使用预先定义的全局变量。引用全局变量时,必须以标记符“”开头。局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。SQLServer中一共提供了30多个全局变量,读者需要的时候可以查阅帮助文档,在这里不再详细介绍。8/12/2
32、024数据库原理及应用3.4.3.5 函数在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQLServer的标准命令。Transact-SQL编程语言提供了三种函数:(1)行集函数:行集函数可以在Transact-SQL语句中当作表引用。(2)聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。如求titles表中所有行的price总和,用SUM()函数实现。selectsum(price)fromtitles(3)标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。如返回当前使用的数据库的名称,用DB_NAME()函数实现。se
33、lectDB_NAME()asdatabasename8/12/2024数据库原理及应用3.4.3.6 流程控制语句流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQLServer2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。(1)IFELSE语句IFELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IFELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQLServer允许嵌套使用IFELSE语句,而且嵌套层数没有限制。IFELSE语句的语法形式:IFBoolean_expres
34、sionsql_statement|statement_blockELSEsql_statement|statement_block8/12/2024数据库原理及应用(2)BEGINEND语句BEGINEND语句能够将多个Transact-SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGINEND语句,其语法形式为:BEGINsql_statement|statement_blockEND(3)WHILECONTINUEBREAK语句WHILECONTINUEBREAK语句用于设置重复执行SQL语
35、句或语句块的条件。只要指定的条件为真,就重复执行语句。其中,CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令。BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。8/12/2024数据库原理及应用结束WHILE语句的语法形式为:WHILEBoolean_expressionsql_statement|statement_blockBREAKsql_statement|statement_blockCONTINUE(5)GOTO语句GOTO语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于GOTO语句和标识符之间的程序将不会被
36、执行。GOTO语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以“:”结尾。GOTO语句的语法形式: GOTO label label:8/12/2024数据库原理及应用3.5 3.5 SQL ServerSQL Server数据库管理数据库管理 3.5.1 文件和文件组3.5.1.1 数据库文件(1)逻辑存储结构和物理存储结构数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成,SQLServer的数据库不仅仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中。数据库的物理存储结构则是讨论数据库文件是如何在磁盘上存储的,数据库在磁盘上是以文件
37、为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。8/12/2024数据库原理及应用(2)数据库文件主数据文件(PrimaryDatabaseFile)主数据文件是所有数据库文件的起点,主数据文件包含指向其他数据库文件的指针。每个数据库必须包含一个也只能包含一个主数据文件。主数据文件的默认扩展名是.mdf。二级数据文件(SecondaryDatabaseFile)又称辅助数据库文件、次要数据文件,是数据库文件中,除主数据文件以外的其他数据文件。如果主数据文件可以包含数据库中的所有数据,那么数据库就不需要二级数据文件,数据库也可以有多个二级数据
38、文件。有些数据库可能足够大故需要多个次要数据文件,或使用位于不同磁盘驱动器上的辅助文件将数据扩展到多个磁盘。二级数据文件默认扩展名是.ndf。8/12/2024数据库原理及应用(3)日志文件日志文件用于存放恢复数据库用的所有日志信息。每个数据库至少拥有一个日志文件,也可以拥有多个日志文件。日志文件的默认扩展名是.ldf。3.5.1.2 数据库文件组为了便于分配和管理,SQLServer允许将多个文件归纳为同一组,并赋予此组一个名称,这就是文件组。SQLSERVER2000提供了三种文件组类型,分别是主文件组、用户自定义文件组、默认文件组。主文件组:包含主数据文件和所有没有被包含在其他文件组里的
39、文件。数据库的系统表都包含在主文件组里。自定义文件组:包括所有在使用CREATEDATABASE或ALTERDATABASE时使用FILEGROUP关键字来进行约束的文件。默认文件组:容纳所有在创建时没有指定文件组的表、索引以及text,ntext,image数据类型的数据。任何时候,只能有一个文件组被指定为默认文件组。默认情况下,主文件组被当作默认文件组。8/12/2024数据库原理及应用3.5.1.3 使用数据文件和文件组的建议(1)主文件组必须足够大以容纳所有的系统表,如果没有另外指定默认文件组,则主文件组还要负责容纳所有未指定用户自定义文件组的任何数据库对象。如果主文件组空间不够,新的
40、信息将无法添加到系统表里,这就妨碍了任何要对系统表进行修改的数据库操作。(2)在具体应用的时候,建议把特定的表、索引和大型的文本或者图像数据放到专门的文件组里,特别要把频繁查询的文件和频繁修改的文件分开,这样可以减少驱动器的竞争。(3)日志文件是被频繁修改的,因此应该把日志文件放到查询工作量较轻的驱动器上。日志文件不属于任何文件组。(4)系统管理员在进行备份操作时,可以备份和恢复单个的文件或文件组而不是备份或恢复整个数据库。8/12/2024数据库原理及应用3.5.2 创建数据库3.5.2.1 创建数据库的方法(1)使用企业管理器创建数据库(2)使用Transact-SQL语言创建数据库,语法
41、如下:CREATEDATABASEdatabase_nameONPRIMARY,1,n,nLOGON1,nFORRESTORE:=(NAME=logical_file_name,FILENAME=os_file_name,SIZE=size,MAXSIZE=max_size|UNLIMITED,FILEGROWTH=growth_increment)1,n:=FILEGROUPfilegroup_name,n8/12/2024数据库原理及应用各参数说明如下:database_name:数据库的名称,最长为128个字符。PRIMARY:该选项是一个关键字,指定主文件组中的文件。LOGON:定义数
42、据库的日志文件。NAME:指定数据库的逻辑名称,这是在SQLServer系统中使用的名称,是数据库在SQLServer中的标识符。只在T_SQL语句中使用,是实际磁盘文件名的代号。FILENAME:指定数据库所在文件的操作系统文件名称和路径。SIZE:指定数据库的初始容量大小。MAXSIZE:指定操作系统文件可以增长到的最大尺寸。FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。可以用MB、KB,或使用%来设置增长的百分比。SQLSERVER使用MB作为增长速度的单位,最少增长1MB。8/12/2024数据库原理及应用3.5.3 查看数据库信息(1)USEda
43、tabase选择要执行操作的数据库。USEpubs改变pubs为当前数据库。(2)sp_helpdb查看当前服务器上所有数据库的信息。(3)sp_helpdbdatabase_name查看指定数据库的信息。sp_helpdbManager(4)sp_helpfile查看当前数据库上所有文件(包括数据文件和日志文件)的信息。sp_helpfilefile_name返回指定文件的信息。8/12/2024数据库原理及应用(5)sp_helpfilegroup查看当前数据库上所有文件组,包括主文件组和用户自定义文件组的信息。sp_helpfilegroupfilegroup_name(6)查看指定文件
44、组的信息。(7)使用企业管理器来查看更详细的有关数据库的信息3.5.4 管理数据库3.5.4.1 数据库更名sp_renamedbold_name,new_name例如将数据库Manager改名为Leader。sp_renamedbManager,Leader8/12/2024数据库原理及应用3.5.4.2 修改数据库选项(1)利用企业管理器浏览和修改数据库选项:(2)使用系统存储过程修改数据库选项sp_dboptiondbname=,optname,optvalueoptname:表示要查看或修改的选项,如果不指定该选项则返回该数据库所有当前值为on的选项。optvalue:表示指定选项的值
45、,可以表示为True/False或OFF/ON,如果不指定该选项则返回指定选相的当前值。8/12/2024数据库原理及应用3.5.4.3 使用ALTER DATABASE语句修改数据库ALTERDATABASEdatabasenameaddfile,ntofilegroupfilegroupname|addlogfile,n|removefilelogical_file_name|addfilegroupfilegroup_name|modifyfile|modifyfilegroupfilegroup_namefilegroup_propertyaddfile,ntofilegroupfil
46、egroupname:表示向指定的文件组里增加新的数据文件。addlogfile,n:增加新的日志文件。removefilelogical_file_name:删除某一操作系统文件。addfilegroupfilegroup_name:增加一个文件组。8/12/2024数据库原理及应用modifyfile:修改某操作系统文件的属性。modifyfilegroupfilegroup_namefilegroup_property:修改某文件组的属性。文件组的属性有以下三种:READONLY:只能读取该文件组中的数据。READWRITE:既可以读取又可以修改该文件组中的数据。DEFAULT:设置该文
47、件组为默认文件组。3.5.4.4 使用企业管理器修改数据库(1)选中要查看的数据库;(2)从下拉菜单或快捷菜单中选择属性命令。(3)在数据文件标签上增删数据文件或对其属性进行修改;(4)在事物标签上增删日志文件或对其属性进行修改。8/12/2024数据库原理及应用3.5.4.5 缩小数据库(1)使用企业管理器缩小数据库(2)DBCCSHRINKDATABASEDBCCSHRINKDATABASE(database_name,target_percent,NOTRUNCATE|TRUNCATEONLY)target_percent:表示当数据库被缩小后,还剩下的自由空间。NOTRUNCATE:被
48、释放的空间依然保持在数据库文件的范围内。如果不设置这一项,则被释放的空间将被操作系统回收利用。TRUNCATEONLY:将所有未使用的数据空间释放并让操作系统回收利用。使用时,将忽略target_percent的限制。8/12/2024数据库原理及应用例如:DBCCSHRINKDATABASE(Company,60,NOTRUNCATE)Go(3)使用DBCC来缩小某一个操作系统文件的长度。DBCCSHRINKFILE(file_name,target_size|,EMPTYFILE|NOTRUNCATE|TRUNCATEONLY)target_size:将文件缩小到指定的长度,以MB为单位,
49、如果不指定这一选项,文件将尽最大可能进行缩小。EMPTYFILE:将指定文件上的数据全部转移到本文件组内其他文件上。以后的操作将不会再在该文件上增加数据。8/12/2024数据库原理及应用3.5.4.6 自动收缩数据库使用企业管理器自动收缩数据库:(1)选中要查看的数据库;(2)从下拉菜单或快捷菜单中选择属性命令;(3)选中选项标签;(4)选中自动收缩复选框。3.5.5 删除数据库3.5.5.1 使用企业管理器删除数据库(1)选中要删除的数据库;(2)从快捷菜单或操作菜单中选择删除命令,并确定。3.5.5.2 使用T_SQL语句删除数据库DROPDATABASEdatabase_name,nD
50、ROPDATABASEmydb1,score注意,绝对不能删除系统数据库,否则会导致SQLSERVER服务器无法使用。8/12/2024数据库原理及应用3.6 3.6 表的管理与使用表的管理与使用 3.6.1 SQL Server数据类型3.6.1.1 系统数据类型(1)整型数据类型整型数据分为很多种,比较常用的有Int、Smallint、Tinyint等。Int:也可以写作integer,长度为4字节,可以存储从-231(-2,147,483,648)到231-1(2,147,483,647)范围内的数值。Smallint:长度为2字节,可以存储从-215(-32768)到215-1(327
51、67)范围内的数值。Tinyint:长度为1字节。可以存储从0到255范围之间的所有正整数。(2)浮点数据类型浮点数据类型用于存储十进制小数。浮点数值的数据在SQLServer中采用只入不舍的方式进行存储。8/12/2024数据库原理及应用Real:可以存储正的或者负的十进制数值,最大可以有7位精确位数。Float:可以精确到第15位小数,其范围从-1.79E-308到1.79E+308。Decimal和numeric:Decimal数据类型和numeric数据类型完全相同,它们可以提供小数所需要的实际存储空间,但也有一定的限制,可以用2到17个字节来存储从-1038-1到1038-1之间的数
52、值。(3)字符数据类型符数据类型可以用来存储各种字母、数字符号和特殊符号。Char:其定义形式为char(n),每个字符和符号占用一个字节的存储空间。8/12/2024数据库原理及应用Varchar:其定义形式为varchar(n)。用char数据类型可以存储长达255个字符的可变长度字符串。Nchar:其定义形式为nchar(n)。Nvarchar:其定义形式为nvarchar(n)。(4)日期和时间数据类型Datetime:用于存储日期和时间的结合体。它可以存储从公元1753年1月1日零时起到公元9999年12月31日23时59分59秒之间的所有日期和时间。Smalldatetime:与d
53、atetime数据类型类似,但其日期时间范围较小,它存储从1900年1月1日到2079年6月6日内的日期。(5)文本和图形数据类型Text:用于存储大量文本数据,其容量理论上为1到231-1(2,147,483,647)个字节,但实际应用时要根据硬盘的存储空间而定。8/12/2024数据库原理及应用Ntext:与text数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。Image:用于存储照片、目录图片或者图画,其理论容量为231-1(2,147,483,647)个字节。(6)货币数据类型Money:用于存储货币值,存储在money数据类型
54、中的数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为-922337213685477.5808到922337213685477.5808,精度为货币单位的万分之一。Smallmoney:与money数据类型类似,但其存储的货币值范围比money数据类型小,其存储范围为-214748.3468到214748.3467。(7)位数据类型Bit:称为位数据类型,其数据有两种取值:0和1,长度为1字节。8/12/2024数据库原理及应用(8)二进制数据类型Binary:其定义形式为binary(n),数据的存储长度是固定的,即n+4字节,当输入的二进制数据长度小于n时,余下部分填
55、充0。Varbinary:其定义形式为varbinary(n),数据的存储长度是变化的,它为实际所输入数据的长度加上4字节。其它含义同binary。(9)特殊数据类型Timestamp:亦称时间戳数据类型,它提供数据库范围内的唯一值,反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器。Uniqueidentifier:用于存储一个16字节长的二进制数据类型,它是SQLServer根据计算机网络适配器地址和CPU时钟产生的唯一号码而生成的全局唯一标识符代码(GloballyUniqueIdentifier,简写为GUID)。8/12/2024数据库原理及应用(10)新增数据类型Bigin
56、t:用于存储从-263(-9,223,372,036,854,775,807)到263-1(9,223,372,036,854,775,807)之间的所有正负整数。SQL_VARIANT:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQLServer数据。TABLE:用于存储对表或者视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。3.6.1.2 自定义数据类型(1)使用企业管理器(EnterpriseManager)创建用户自定义数据类型。(2)利用系统存储过程创建用户自定义数据类型。系统存储过程sp_addty
57、pe为用户提供了T_SQL语句8/12/2024数据库原理及应用创建自定义数据类型的途径,其语法形式如下:sp_addtypetypename=type,phystype=system_data_type,nulltype=null_type,owner=owner_name自定义一个地址数据类型。execsp_addtypeaddr,varchar(60),notnull结果为:(1row(s)affected)typeadded.3.6.2 数据库中表的创建3.6.2.1 利用Enterprise Manager创建表8/12/2024数据库原理及应用3.6.2.2 利用create命令创
58、建表其语法形式如下:CREATETABLEdatabase_name.owner.|owner.table_name( |column_nameAScomputed_column_expression|,n)ONfilegroup|DEFAULT创建表的各参数的说明如下:database_name:用于指定在其中创建表的数据库名称。owner:用于指定新建表的所有者的用户名。table_name:用于指定新建的表的名称。column_name:用于指定新建表的列的名称。computed_column_expression:用于指定计算列的列值的表达式。ONfilegroup|DEFAULT:用
59、于指定存储表的文件组名。8/12/2024数据库原理及应用TEXTIMAGE_ON:用于指定text、ntext和image列的数据存储的文件组。data_type:用于指定列的数据类型。DEFAULT:用于指定列的缺省值。constant_expression:用于指定列的缺省值的常量表达式。IDENTITY:用于指定列为标识列。Seed:用于指定标识列的初始值。Increment:用于指定标识列的增量值。NOTFORREPLICATION:用于指定列的IDENTITY属性在把从其它表中复制的数据插入到表中时不发生作用,即不足的生成列值,使得复制的数据行保持原来的列值。ROWGUIDCOL:
60、用于指定列为全球唯一鉴别行号列。8/12/2024数据库原理及应用3.6.3数据库中表的删除3.6.3.1 利用企业管理器删除表3.6.3.2 利用DROP TABLE语句删除表DROPTABLE语句可以删除一个表和表中的数据及其与表有关的所有索引、触发器、约束、许可对象。DROPTABLE语句的语法形式如下:DROPTABLEtable_name例如:DROPTABLEteacher3.6.4数据库中表的修改3.6.4.1 增加、删除和修改字段(1)利用企业管理器增加、删除和修改字段。(2)利用Transact-SQL语言中的altertable命令增加、删除和修改字段。8/12/2024数
61、据库原理及应用ALTERTABLEtable_nameALTERCOLUMNcolumn_namenew_data_typeNULL|NOTNULL|ADDcolumn_namedata_typeNULL|DEFAULT|DROPCOLUMNcolumn_name,n注意一个ALTERTABLE命令一次只能修改一个属性。利用Transact-SQL语言中的altertable命令增加、删除和修改字段的各参数的说明如下:table_name:用于指定要修改的表的名称。ALTERCOLUMN:用于指定要变更或者修改数据类型的列。column_name:用于指定要更改、添加或删除的列的名称。8/12
62、/2024数据库原理及应用new_data_type:用于指定新的数据类型的名称。NULL|NOTNULL:用于指定该列是否可以接受空值。ADD:用于指定要添加一个或多个列定义、计算列定义或者约束。DROPCOLUMN:用于删除表中指定的列。3.6.5 查看表的属性3.6.5.1 使用系统存储过程查看表属性(1)显示对象的名称、列名、拥有者、创建时间、列的属性等信息。Sp_helpobjname=namename为对象的名称,如果是表,则为表名称。要查询对象必须在当前数据库中。省略objname=name项时显示数据库中所有对象的信息。8/12/2024数据库原理及应用(2)查看指定表与其他相
63、关数据库对象的关联信息sp_dependsobjname=name(3)查看数据库或表的存储空间的信息,如分配(保留)的空间数量、数据使用的空间数量、索引使用的空间数量以及由数据库对象保留的未用空间数量。sp_spaceused表名3.6.5.2 使用企业管理器查看表属性在企业管理器中,选择指定的表,然后单击鼠标右键,在弹出的快捷菜单中选择“属性”命令即可。3.6.6 表的重命名(1)用系统存储过程使用系统存储过程sp_rename可以修改许多数据库对象的名称,包括表、视图、存储过程、触发器、默认值、数据库、对象或规则等,语法如下:sp_renameobjname=原名,newname=新名8
64、/12/2024数据库原理及应用(2)使用企业管理器在企业管理器中,选择要重命名的表,然后单击鼠标右键,在弹出的快捷菜单中选择“重命名”命令,输入新表名即可。3.6.7 编辑维护表格数据3.6.7.1 使用insert添加表格数据(1)insert语句的基本语法:INSERTINTOTable_name(column_name),nVALUES(expression),n3.6.7.2 使用UPDATE语句修改数据(1)UPDATE语句的语法格式updatetable_namesetcolumn_name=expression|default|NULL,nfromtable_name,nwhe
65、researchcondition8/12/2024数据库原理及应用3.6.7.3 使用DELETE语句删除表格中数据(1)DELETE语句的语法格式。DELETEFROMtable_nameWHEREsearch_conditions(2)使用TRUNCATETABLE清空表格TRANCATETABLE语句可以删除表格中所有的数据,只留下一个表格的定义。delete语句快。语法格式:TRUNCATEtable_name8/12/2024数据库原理及应用3.6.7.4 使用企业管理器管理表格数据(1)利用企业管理器管理表格步骤:选择指定的表格。单击右键,从弹出的快捷菜单中选择打开表命令,在“打
66、开表”命令下有3个子命令:“返回所有行”:表示打开表以后,将返回表中所有的数据;“返回首行”:表示打开表以后,只返回指定的前面的n行数据。企业管理器将弹出如下对话框,输入n值,然后,可以直接在表格中编辑数据。 “查询”:利用图形化的方式或者直接书写SQL语句进行查询。8/12/2024数据库原理及应用3.7 3.7 视图及其应用视图及其应用 3.7.1 视图的创建和查询3.7.1.1 创建视图创建视图时应该注意以下几点:只能在当前数据库中创建视图。如果视图引用的基表或者视图被删除,则该视图不能再被使用,直到创建新的基表或者视图。视图的名称必须遵循标识符的规则,且对每个用户必须是唯一的。此外,该
67、名称不得与该用户拥有的任何表的名称相同。(1)利用企业管理器创建视图(2)利用Transact-SQL语句中的CREATEVIEW命令创建视图8/12/2024数据库原理及应用使用Transact-SQL语句中的CREATEVIEW创建视图的语法形式如下:CREATEVIEWview_namecolumnname,.ASSelect_statementWITHCHECKOPTION参数说明如下:view_name用于指定视图的名称。columnname用于指定视图中的字段名称。select_statement用于创建视图的SELECT语句,利用SELECT命令可以从表中或者视图中选择列构成新视
68、图的列。WITHCHECKOPTION用于强制视图上执行的所有数据修改语句都必须符合由select_statement设置的准则。8/12/2024数据库原理及应用视图的列名可以省略,但是以下情况下,必须为视图提供列名:该列是从表格中的计算列或者从一个常量继承下来。当视图从多个表产生,而这些表中有数据列重名。当视图中有一个数据列使用了和表格中相应列名不同的时候,所有列名都必须给出。3.7.2 视图的修改和删除3.7.2.1 修改视图(1)利用企业管理器修改视图(2)使用ALTERVIEW语句修改视图ALTERVIEWview_name(column,.n)ASselect_statementW
69、ITHCHECKOPTION8/12/2024数据库原理及应用3.7.2.2 重命名视图(1)利用企业管理器重命名视图选择视图,在其上单击鼠标右键,在弹出的快捷菜单中选择“重命名”命令即可。(2)可以使用系统存储过程sp_rename修改视图的名称,该过程的语法形式如下:sp_renameold_name,new_name3.7.2.3 删除视图(1)使用企业管理器删除视图(2)使用Transact-SQL语句DROPVIEW删除视图的语法形式如下:DROPVIEWview_name,n可以使用该命令同时删除多个视图,只需在要删除的视图名称之间用逗号隔开即可。8/12/2024数据库原理及应用
70、3.7.3 通过视图修改数据使用视图修改数据时,需要注意以下几点:修改视图中的数据时,不能同时修改两个或者多个基本表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基本表。不能修改那些通过计算得到的字段。如果在创建视图时指定了WITHCHECKOPTION选项,那么所有使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围。执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。如果视图引用多个表时,无法用DELETE命令删除数据。8/12/2024数据库原理及应用3.7.3.1 插入数据记录使用视图可以插入数据记录,数据添加到数
71、据库中的基表。3.7.3.2 更新数据记录使用视图可以更新数据记录,但应该注意的是,更新的只是数据库中的基表。3.7.3.3 删除数据记录使用视图删除记录,可以删除任何基表中的记录,直接利用DELETE语句删除记录即可。但应该注意,必须指定在视图中定义过的字段来删除记录。8/12/2024数据库原理及应用3.8 3.8 索引的创建与管理索引的创建与管理 3.8.1 创建索引SQLServer2000创建索引的方法:利用企业管理器中的索引向导创建索引。利用企业管理器直接创建索引。利用Transact-SQL语句中的CREATEINDEX命令创建索引。3.8.1.1 利用企业管理器创建索引3.8.
72、1.2 利用Transact-SQL语句中的CREATE INDEX 命令创建索引8/12/2024数据库原理及应用语法形式如下:CREATEUNIQUECLUSTERED|NONCLUSTEREDINDEXindex_nameONtable|view(columnASC|DESC,.n)各参数说明如下:UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。CLUSTERED:用于指定创建的索引为聚集索引。NONCLUSTERED:用于指定创建的索引为非聚集索引。index_name:用于指定所创建的索引的名称。table:用于指定创建索引的表的名称。view:用于指定创
73、建索引的视图的名称。ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。Column:用于指定被索引的列。8/12/2024数据库原理及应用例3.83为表employees创建了一个唯一聚集索引。USENorthwindGOCREATEUNIQUECLUSTEREDINDEXemp_id_indexONemployees(EmployeeIDdesc)3.8.2 查看、修改和删除索引3.8.2.1 利用企业管理器查看、修改和删除索引8/12/2024数据库原理及应用3.8.2.2 使用系统存储过程查看和更改索引名称(1)使用系统存储过程sp_helpindex查看索引信息。其语法形式
74、如下:sp_helpindexobjname=name其中objname=name参数用于指定当前数据库中的表的名称。(2)使用系统存储过程sp_rename更改索引的名称。其语法形式如下:sp_renameobjname=object_name,newname=new_name,objtype=object_type8/12/2024数据库原理及应用3.8.2.3 使用DROP INDEX命令删除索引DROPINDEX命令可以删除一个或者多个当前数据库中的索引。其语法形式如下:DROPINDEXtable.index|view.index,.n其中,table|view用于指定索引列所在的表
75、或索引视图;index用于指定要删除的索引名称。8/12/2024数据库原理及应用3.9 3.9 存储过程与触发器存储过程与触发器 3.9.1 存储过程的使用与管理在SQLServer中存储过程分为两类:系统存储过程和用户自定义存储过程。系统存储过程存储在master数据库中,主要用于从系统表中获取信息。用户自定义的存储过程是用户在数据库中为了完成某一任务而编写的存储过程。创建存储过程时,需要确定存储过程的三个组成部分:(1)所有的输入参数以及传给调用者的输出参数。(2)被执行的针对数据库的操作语句,包括调用其它存储过程的语句。(3)返回给调用者的状态值,以指明调用是成功还是失败。8/12/2
76、024数据库原理及应用创建存储过程时应注意以下几点:(1)不能将CREATEPROCEDURE语句与其它SQL语句组合到单个批处理中。(2)创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。(3)存储过程是数据库对象,其名称必须遵守标识符规则。(4)只能在当前数据库中创建存储过程。一个存储过程的最大尺寸为128M。使用SQLServer企业管理器创建存储过程很简单,在SQLServer企业管理器中,选择指定的服务器和数据库,用右键单击要创建存储过程的数据库,在弹出的快捷菜单中选择“新建”选项,再选择下一级菜单中的“存储过程”选项,或者用右键单击存储过程图标,从弹出的快捷菜
77、单中选择“新建存储过程”选项,然后根据提示创建即可。8/12/2024数据库原理及应用使用Transact-SQL语言中的CREATEPROCEDURE创建存储过程的语法形式如下:CREATEPROCEDUREprocedure_nameparameterdata_typeVARYING= defaultOUTPUT,.nWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONFORREPLICATIONASsql_statement.n8/12/2024数据库原理及应用3.9.2 触发器的使用与管理触发器是一种特殊类型的存储过程。触发器主要是通过事件进行触发
78、而被执行的,而存储过程可以通过存储过程名称而被直接调用。触发器可以使每个站点可以在有数据修改时自动强制执行其业务规则。触发器可以用于SQLServer约束、默认值和规则的完整性检查。使用触发器主要优点有:触发器是自动的,当对表中的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。触发器可以通过数据库中的相关表进行层叠更改。触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。8/12/2024数据库原理及应用创建触发器时应该注意以下几个问题:(1)CREATETRIGGER语句必须是批处理中的第一个语句。(2)创建触发器的权限默认分配给表的所有者,且不能将该权限转给
79、其他用户。(3)触发器为数据库对象,其名称必须遵循标识符的命名规则。(4)虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。(5)虽然不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。(6)在含有用DELETE或UPDATE操作定义的外键的表中,不能定义INSTEADOF和INSTEADOFUPDATE触发器。8/12/2024数据库原理及应用(7)虽然TRUNCATETABLE语句类似于没有WHERE子句(用于删除行)的DELETE语句,但它并不会引发DELETE触发器,因为TRUNCATETABLE语句没有记录。(8)WRITETEXT语句不会引发INSER
80、T或UPDATE触发器。(9)当创建一个触发器时必须指定:名称;在其上定义触发器的表;触发器将何时激发;激活触发器的数据修改语句。使用企业管理器创建触发器的方法如下:在企业管理器中,展开指定的服务器和数据库项,然后展开要在其上创建触发器的表所在的数据库,用右键单击该表,从弹出的快捷菜单中选择所有任务子菜单下的管理触发器选项,则会出现触发器属性对话框。在该对话框中,在名称文本框中选择新建,然后在文本框中输入触发器文本。8/12/2024数据库原理及应用单击“检查语法”按钮,则可以检查语法是否正确。单击“应用”按钮,则在名称下拉列表中会有新创建的触发器名称。最后,单击“关闭”按钮,即可关闭该对话框
81、,成功创建触发器。使用Transact-SQL语言中的CREATETRIGGER命令创建触发器的语法格式如下:CREATETRIGGERtrigger_nameONtable|viewWITHENCRYPTIONFOR|AFTER|INSTEADOFINSERT,UPDATEWITHAPPENDNOTFORREPLICATIONAS8/12/2024数据库原理及应用IFUPDATE(column)AND|ORUPDATE(column).n|IF(COLUMNS_UPDATED()bitwise_operatorupdated_bitmask)comparison_operatorcolumn
82、_bitmask.nsql_statement.n例3.90在employee上创建一个delete类型的触发器。usepubsgocreatetriggermy_trigger8/12/2024数据库原理及应用onemployeeinsteadofdeleteasraiserror(你无权删除记录!,10,1)INSERT触发器通常被用来更新时间标记字段,或者验证被触发器监控的字段中的数据满足要求的标准,以确保数据完整性。UPDATE触发器和插入触发器的工作过程基本上一致,修改一条记录等于插入了一条新的记录并且删除一条旧的记录。DELETE触发器通常用于两种情况,第一种情况是为了防止那些确实需要删除但会引起数据一致性问题的记录的删除;第二种情况是执行可删除主记录的子记录的级联删除操作。可以使用这样的触发器从主销售记录中删除所有的定单项。8/12/2024