
第3章sqlserver2000的使用.ppt
85页数据库原理及应用第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 关系数据库发展简史 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本 SQL Server近年来不断更新版本,1992年,Microsoft公司开发了SQL Server的Windows NT版本;1993年,Microsoft公司发布了运行在Windows NT 3.1上的SQL Server 4.2;1994年,Microsoft和Sybase公司正式停止了技术合作;1995年,Microsoft公司公布了SQL Server 6.0,SQL Server 6.0提供了集中的管理方式,并内嵌了复制的功能;1996年,Microsoft 推出了SQL Server 6.5版本;1997年推出了SQL Server 6.5企业版,该版本包含了4GB的RAM支持,8处理器以及对群集计算机的支持。
8/12/2024数据库原理及应用 1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出的最新版本3.1.2 SQL Server 特点 (1)真正的客户机/服务器体系结构 (2)图形化用户界面,使系统管理和数据库管理更加直观、简单 (3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地 (4)SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等SQL Server也可以很好地与Microsoft BackOffice产品集成 (5)具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台 8/12/2024数据库原理及应用 (6)对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上 (7)SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。
SQL Server 2000与以前版本相比较,又具有以下新特性: (1)支持XML(extensive Markup Language,扩展标记语言) (2)强大的基于Web的分析 (3)增加了新的数据类型 (4)支持分布式的分区视图 (5)改进的英语查询 8/12/2024数据库原理及应用3.2 安装SQL Server 2000 3.2.1 安装SQL Server 2000对用户环境的要求 (1)SQL Server 2000常见的版本企业版(Enterprise Edition) ●企业版支持SQL Server 2000全部可用功能,并可根据支持最大的Web站点和企业联机事务处理(OLTP)及数据仓库系统所需的性能水平进行伸缩企业版作为生产数据库使用 ●标准版(Standard Edition)标准版支持SQL Server 2000的许多功能,但在服务器扩性、大型数据库支持、数据仓库、Web站点等方面能力欠缺标准版适合于作为小工作组或部门的数据库服务器用。
8/12/2024数据库原理及应用 ●个人版(Personal Edition)供移动用户使用,这些用户有时从网络上断开,但所运行的应用程序需要SQL Server 数据存储在客户端计算机上运行需要本地SQL Server 数据存储的独立应用程序也使用个人版 ●开发者版(Developer Edition)开发者版支持企业版的所有功能,但是只能将开发版作为开发和测试系统使用,不能作为生产服务器使用另外,SQL Server 2000还有Windows CE版和企业评估版两个比较不常见的版本 (2)安装、运行SQL Server 2000的硬件需求 ●计算机 Inter及其兼容计算机,Pentium 166Mz或者更高处理器或DEC Alpha和其兼容系统 8/12/2024数据库原理及应用 ●内存(RAM) 企业版最少64MB内存,其他版本最少需要32MB内存,建议使用更多的内存 ●硬盘空间 完全安装(Full)需要180MB的空间,典型安装(Typical)需要170MB的空间,最小安装(Minimum)需要65MB的空间。
(3)安装、运行SQL Server 2000的软件需求 SQL Server 2000企业版必须运行于安装Windows NT Server Enterprise Edition 4.0或者Windows2000 Advanced Server以及更高版本的操作系统下 SQL Server 2000标准版必须运行于安装Windows NT Server Enterprise Edition 4.0、Windows NT Server 4.0、Windows 2000 Server以及更高版本的操作系统下 8/12/2024数据库原理及应用 SQL Server 2000 个人版可在多种操作系统下运行,如可运行于Windows 9x, Windows NT 4.0或Windows 2000的服务器版或工作站版的操作系统下SQL Server 2000 开发者版可运行于上述Windows 9x以外的所有操作系统下3.2.2 安装SQL Server 2000 SQL Server 2000的安装过程与其它Microsoft Windows系列产品类似。
用户可根据向导提示,选择需要的选项一步一步地完成 8/12/2024数据库原理及应用3.3 3.3 SQL Server 2000SQL Server 2000系统的组成系统的组成 3.3.1 数据库3.3.1.1 SQL Server数据库 (1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息这些系统信息包括所有的登录信息、系统设置信息、SQL Server的初始化信息和其它系统数据库及用户数据库的相关信息 (2)Model数据库是所有用户数据库和Tempdb数据库的模板数据库,它含有Master数据库所有系统表的子集,这些系统数据库是每个用户定义数据库需要的 (3)Msdb数据库是代理服务数据库,为其警报、任务调度和记录操作员的操作提供存储空间 (4)Tempdb是一个临时数据库,它为所有的临时表、临时存储过程及其它临时操作提供存储空间 8/12/2024数据库原理及应用 (5)Pubs和Northwind数据库是两个实例数据库,它们可以作为SQL Server的学习工具。
3.3.1.2 SQL Server 系统表 几个最重要的系统表 (1)Sysobjects表SQL Server 的主系统表sysobjects出现在每个数据库中,它对每个数据库对象含有一行记录 (2)Syscolumns表 系统表syscolumns出现在master数据库和每个用户自定义的数据库中,它对基表或者视图的每个列和存储过程中的每个参数含有一行记录 (3)Sysindexes表 系统表sysindexes出现在master数据库和每个用户自定义的数据库中,它对每个索引和没有聚簇索引的每个表含有一行记录,它还对包括文本/图像数据的每个表含有一行记录8/12/2024数据库原理及应用 (4)Sysusers表 系统表sysusers出现在master数据库和每个用户自定义的数据库中,它对整个数据库中的每个Windows NT用户、Windows NT用户组、SQL Server 用户或者SQL Server 角色含有一行记录 (5)Sysdatabases表 系统表sysdatabases对SQL Server 系统上的每个 系统数据库和用户自定义的数据库含有一行记录,它只出现在master数据库中。
(6)Sysdepends表 系统表Sysdepends对表、视图和存储过程之间的每个依赖关系含有一行记录,它出现在master数据库和每个用户自定义的数据库中 (7)Sysconstraints表 系统表sysconstraints对使用CREATE TABLE或者ALTER TABLE语句为数据库对象定义的每个完整性约束含有 一行记录,它出现在master数据库和每个用户自定义的数据库中 8/12/2024数据库原理及应用3.3.2 SQL 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 服务器 ● 建立与管理数据库 ● 建立与管理表、视图、存储过程、触发程序、角色、规则、默认值等数据库对象,以及用户定义的数据类型。
● 备份数据库和事务日志、恢复数据库 ● 复制数据库 ● 设置任务调度 ● 设置警报 ● 提供跨服务器的拖放控制操作 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语言是Microsoft SQL Server提供的一种定义、操作和控制数据的语言,是SQL Server内部使用的编程语言使用Transact-SQL编写应用程序可以完成所有的数据库管理工作任何应用程序,只要是向SQL Server数据库管理系统发出命令以获得数据库管理系统的响应,最终都必须体现为Transact-SQL形式的指令。
对用户来讲,Transact-SQL是惟一可以和SQL Server数据库管理系统进行交互的语言 8/12/2024数据库原理及应用3.4.2 Transact-SQL语句类型3.4.2.1 数据定义语言(DDL) 数据定义语言是指用来定义和管理数据库以及数据库中的各种对象的语句,这些语句包括CREATE、ALTER和DROP等语句在SQL Server 2000中,数据库对象包括表、视图、触发器、存储过程、规则、缺省、用户自定义的数据类型等这些对象的创建、修改和删除等都可以通过使用CREATE、ALTER、DROP等语句来完成 3.4.2.2 数据操纵语言(DML) 数据操纵语言是指用来查询、添加、修改和删除数据库表中数据的语句,这些语句包括SELECT、 INSERT、UPDATE、DELETE等在默认情况下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成员才有权利执行数据操纵语言8/12/2024数据库原理及应用 数据查询操作使用SELECT语句实现,其语法形式如下: SELECT select_list [ INTO new_table ] FROM table_source[,…n] [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] [COMPUTE clause] 8/12/2024数据库原理及应用 SELECT子句的语法形式如下所示: SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ]] < select_list > < select_list > ::= {* | { table_name | view_name | table_alias }.* | { column_name | expression | IDENTITYCOL | ROWGUIDCOL } [ [ AS ] column_alias ] | column_alias = expression } [ ,...n ]各个选项说明如下: ● SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。
8/12/2024数据库原理及应用 ● INTO子句用于指定所要生成的新表的名称 ● FROM子句用于指定要查询的表或者视图,最多可 以指定16个表或者视图,用逗号相互隔开 ● WHERE子句用来限定查询的范围和条件 ● GROUP BY子句是分组查询子句 ● HAVING子句用于指定分组子句的条件 ● GROUP BY子句、HAVING子句和集合函数一起可以实现对每个组生成一行和一个汇总值 ● ORDER BY子句可以根据一个列或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号 ● ASC表示升序排列,DESC表示降序排列 ● COMPUTE子句使用集合函数在查询的结果集中生成汇总行 ● COMPUTE BY子句用于增加各列汇总行8/12/2024数据库原理及应用 (1)简单的查询 (2)带TOP关键字的查询 (3)带DISTINCT关键字的查询 DISTINCT关键字能够从返回的结果数据集合中删除重复的行,使返回的结果更简洁。
(4)使用计算列 查询时需要对查询到的数据进行再次计算在Transact-SQL中使用计算列,计算列并不存储于表格所存储的数据库中,它是通过对某些列的数据进行计算得来的结果在计算列上允许使用=、-、*、/、%和按照位来进行计算的逻辑运算符,如AND(&)、OR(|)、XOR(^)、NOT(~)以及字符串连接运算符(+) (5)操作查询列的名称 可以对查询数据的列的名称进行修改,或者为没有标题的列增加列名 8/12/2024数据库原理及应用 (6)使用WHERE子句 ① where 子句可使用的运算符 算术运算符:=、<、>、<>、!>、!<、>=、<=、!= 逻辑运算符:NOT、AND、OR 例3.16 显示居住在加利福尼亚州且姓名不为 McBadden 的作者列 ② 使用BETWEEN关键字 ③ 使用IN关键字 (7)使用LIKE子句进行模糊查询 like 子句后面的查询条件字符串中,可以使用下列4种通配符: %:表示从0到n个任意字符。
_ :表示单个的任意字符 [ ]:表示方括号里列出的任意一个字符 [^]:任意一个没有在方括号里列出字符 8/12/2024数据库原理及应用 (8)使用统计函数进行查询 为了对查询的结果集进行有效的统计处理,SQL Server提供了一系列的统计函数,通过使用这些函数可以实现对结果集的汇总、求平均值、最大值、最小值等运算 统计函数共有六个,分别是: SUM():求和,返回一个数字列或计算列的总和 AVG():求平均值,对一个数字列或计算列求平均值 MIN():求最小值,返回一个数字列或数字表达式的最小值 MAX():求最大值,返回一个数字列或数字表达式的最大值 COUNT():返回非空值的字段数目 COUNT(*):返回符合查询条件的行的数目8/12/2024数据库原理及应用 (9)使用GROUP BY子句进行查询 GROUP BY子句将查询结果按某一列或多列值分组,值相等的为一组,在GROUP BY子句中,不支持列的别名和任何使用了统计函数的列。
此外,select后面每一列数据除了出现在统计函数中的列以外,都必须在GROUP BY子句中应用 (10)使用COMPUTE BY及COMPUTE子句进行查询 COMPUTE BY子句可以通过BY指定的字段进行分组计算,COMPUTE子句则计算所有的字段值之和 (11)多表连接查询 ① 在where 中指定连接select 输出表列from 表1,表2 where 表1.列1 = 表2.列2 where子句“=”左边如果为“*”,表示左外连接,“=”右边如果为“*”,表示右外连接 8/12/2024数据库原理及应用② 使用JOIN 和ON关键字指定连接条件 select 输出表列 from 表1 JOIN 表2 ON 表1.列1 = 表2.列2 JOIN前面可以加上如下可选的关键字: INNER:表示内连接 LEFT:表示左外连接 RIGHT:表示右外连接 FULL OUTER:表示完全连接③ 连接两个以上的表的时候,如果有M个表进行连接操作,那么连接条件不能少于M-1个。
12)嵌套查询 T_SQL语言中,一个SELECT-FROM-WHERE语句称 为一个查询块,一个查询块嵌套在另一个查询块的 WHERE子句或HAVING短语的条件中的查询称为嵌套查询其执行过程为,由里向外进行处理,子查询的结果用于建立其父查询的查找条件 8/12/2024数据库原理及应用 (13)使用union子句进行查询 使用Union子句的查询称为联合查询,它可以将两个或更多的查询结果集组合为一个单个结果集,该结果集包含联合查询中所有查询结果集中的全部行数据语法格式: SELECT 语句 UNION [ ALL ] SELECT 语句 [ UNION [ ALL ] SELECT 语句 ] [ ,…N ]使用UNION 组合多个查询结果集的基本规则是: ●所有查询中的列数和列的顺序必须相同 ●数据类型必须兼容 ●查询结果集的标题为第一个SELECT 语句的标题 ●UNION子句自动删除重复行,若要保留,使用ALL关键字。
8/12/2024数据库原理及应用 ●若要对结果集排序,则在最后一个SELECT 语句中使用ORDER BY 子句 ,但排序必须依据第一个SELECT语句中的列 添加数据操作使用INSERT语句实现,其基本语法格式为: INSERT [INTO] Table_name (column_name)[,…n] VALUES (expression)[,…n]使用INSERT语句注意事项: ●在insert语句中,values列表中的表达式的数量,必须匹配列表中的列数;表达式的数据类型必须可以和表格中对应各列的数据类型兼容 ●如果在表格种存在定义为NOT NULL的数据列,那么该列的值必须要出现在VALUES的列表中否则,会出错 8/12/2024数据库原理及应用修改数据使用UPDATE语句实现,其基本语法格式为:UPDATE table_nameSETcolumn_name={expression|default|NULL}[,…n][FROM table_name[‘…n]]WHERE searchcondition 3.4.2.3 数据控制语言(DCL) 数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。
下面只介绍每条语句的基本作用,详细的用法将在下一章介绍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 注释 注释是程序代码中不执行的文本字符串(也称为注解)在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */” 3.4.3.2 批处理 批处理是一个T_SQL语句组,可以包含一条SQL语句,也可以包含多条SQL语句,这些语句被应用程序一次性地从客户机传递到服务器上执行。
SQL Server将批处理的所有语句作为一个整体进行编译和执行因此,如果在编译过程中出现错误,那么所有的语句都无法执行 可以一次提交给服务器多个批处理命令,所有的批处理都使用GO作为结束标志,当编译器读到GO时,它便把GO前面的所有语句当作一个批处理发送给服务器GO本身不是T_SQL语句的组成部分,它只是一个表示批处理结束的命令8/12/2024数据库原理及应用3.4.3.3 变量 变量是一种语言中必不可少的组成部分Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量 (1)局部变量局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用声明局部变量的语法形式:DECLARE {@variable_name datatype}[,...n] 8/12/2024数据库原理及应用参数说明如下: ●varialbe_name:局部变量的变量名,必须以@开 头,varialbe_name的命名形式必须符合SQL Server的命名规则。
●datatype:变量的数据类型可以是除text,ntext和 image以外的所有数据类型为局部变量赋值的语法形式: SELECT {@variable_name = expression}[,...n] 或 {SET @variable_name = expression}[,...n] (2)全局变量 全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用全局变量通常存储一些SQL Server的配置设定值和统计数据用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值8/12/2024数据库原理及应用使用全局变量时应该注意以下几点: ●全局变量不是由用户的程序定义的,它们是在服务器级定义的 ●用户只能使用预先定义的全局变量 ●引用全局变量时,必须以标记符“@@”开头 ●局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。
SQL Server中一共提供了30多个全局变量,读者需要的时候可以查阅帮助文档,在这里不再详细介绍8/12/2024数据库原理及应用3.4.3.5 函数 在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令Transact-SQL 编程语言提供了三种函数: (1) 行集函数:行集函数可以在Transact-SQL语句中当作表引用 (2) 聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值如求titles表中所有行的price总和,用SUM()函数实现 select sum(price) from titles (3) 标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值如返回当前使用的数据库的名称,用DB_NAME()函数实现 select DB_NAME() as 'databasename' 8/12/2024数据库原理及应用3.4.3.6 流程控制语句 流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。
(1) IF…ELSE语句IF…ELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分IF…ELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序SQL Server允许嵌套使用IF…ELSE语句,而且嵌套层数没有限制IF…ELSE语句的语法形式: IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ] 8/12/2024数据库原理及应用 (2) BEGIN…END语句 BEGIN…END语句能够将多个Transact-SQL语句组合成一个语句块,并将它们视为一个单元处理在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGIN…END语句,其语法形式为: BEGIN { sql_statement | statement_block}END (3) WHILE…CONTINUE…BREAK语句 WHILE…CONTINUE…BREAK语句用于设置重复执行 SQL 语句或语句块的条件。
只要指定的条件为真,就重复执行语句其中,CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令BREAK语句则使程序完全跳出循环,结束WHILE语句的执行 8/12/2024数据库原理及应用 结束WHILE语句的语法形式为: WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] (5) GOTO语句 GOTO语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于GOTO语句和标识符之间的程序将不会被执行GOTO语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以“:”结尾 GOTO语句的语法形式: GOTO label …… label:8/12/2024数据库原理及应用3.5 3.5 SQL ServerSQL Server数据库管理数据库管理 3.5.1 文件和文件组3.5.1.1 数据库文件 (1) 逻辑存储结构和物理存储结构 数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成,SQL Server的数据库不仅仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中。
数据库的物理存储结构则是讨论数据库文件是如何在磁盘上存储的,数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件8/12/2024数据库原理及应用 (2) 数据库文件 主数据文件(Primary Database File) 主数据文件是所有数据库文件的起点,主数据文件包含指向其他数据库文件的指针每个数据库必须包含 ●一个也只能包含一个主数据文件主数据文件的默认扩展名是.mdf ●二级数据文件(Secondary Database File)又称辅助数据库文件、次要数据文件,是数据库文件中,除主数据文件以外的其他数据文件如果主数据文件可以包含数据库中的所有数据,那么数据库就不需要二级数据文件,数据库也可以有多个二级数据文件有些数据库可能足够大故需要多个次要数据文件,或使用位于不同磁盘驱动器上的辅助文件将数据扩展到多个磁盘二级数据文件默认扩展名是.ndf 8/12/2024数据库原理及应用 (3)日志文件 日志文件用于存放恢复数据库用的所有日志信息。
每个数据库至少拥有一个日志文件,也可以拥有多个日志文件日志文件的默认扩展名是.ldf3.5.1.2 数据库文件组 为了便于分配和管理,SQL Server允许将多个文件归纳为同一组,并赋予此组一个名称,这就是文件组SQL SERVER 2000提供了三种文件组类型,分别是主文件组、用户自定义文件组、默认文件组 主文件组:包含主数据文件和所有没有被包含在其他文件组里的文件数据库的系统表都包含在主文件组里 自定义文件组:包括所有在使用CREATE DATABASE或ALTER DATABASE时使用FILEGROUP关键字来进行约束的文件 默认文件组:容纳所有在创建时没有指定文件组的表、索引以及text,ntext,image数据类型的数据任何时候,只能有一个文件组被指定为默认文件组默认情况下,主文件组被当作默认文件组 8/12/2024数据库原理及应用3.5.1.3 使用数据文件和文件组的建议 (1) 主文件组必须足够大以容纳所有的系统表,如果没有另外指定默认文件组,则主文件组还要负责容纳所有未指定用户自定义文件组的任何数据库对象。
如果主文件组空间不够,新的信息将无法添加到系统表里,这就妨碍了任何要对系统表进行修改的数据库操作 (2) 在具体应用的时候,建议把特定的表、索引和大型的文本或者图像数据放到专门的文件组里,特别要把频繁查询的文件和频繁修改的文件分开,这样可以减少驱动器的竞争 (3) 日志文件是被频繁修改的,因此应该把日志文件放到查询工作量较轻的驱动器上日志文件不属于任何文件组 (4) 系统管理员在进行备份操作时,可以备份和恢复单个的文件或文件组而不是备份或恢复整个数据库 8/12/2024数据库原理及应用3.5.2 创建数据库3.5.2.1 创建数据库的方法 (1) 使用企业管理器创建数据库 (2) 使用Transact-SQL语言创建数据库,语法如下:CREATE DATABASE database_name[ON [PRIMARY] [,
PRIMARY:该选项是一个关键字,指定主文件组中的文件 LOG ON:定义数据库的日志文件 NAME:指定数据库的逻辑名称,这是在SQL Server系统中使用的名称,是数据库在SQL Server中的标识符只在T_SQL语句中使用,是实际磁盘文件名的代号 FILENAME:指定数据库所在文件的操作系统文件名称和路径 SIZE:指定数据库的初始容量大小 MAXSIZE:指定操作系统文件可以增长到的最大尺寸 FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长可以用MB、KB,或使用%来设置增长的百分比SQL SERVER使用MB作为增长速度的单位,最少增长1MB 8/12/2024数据库原理及应用3.5.3 查看数据库信息 (1)USE {database} 选择要执行操作的数据库 USE pubs 改变pubs 为当前数据库 (2)sp_helpdb 查看当前服务器上所有数据库的信息。
(3)sp_helpdb database_name 查看指定数据库的信息 sp_helpdb Manager (4)sp_helpfile 查看当前数据库上所有文件(包括数据文件和日志文件) 的信息 sp_helpfile file_name 返回指定文件的信息 8/12/2024数据库原理及应用 (5)sp_helpfilegroup 查看当前数据库上所有文件组,包括主文件组和用户自定义文件组的信息sp_helpfilegroup filegroup_name (6)查看指定文件组的信息 (7)使用企业管理器来查看更详细的有关数据库的信息 3.5.4 管理数据库3.5.4.1 数据库更名 sp_renamedb old_name,new_name 例如将数据库Manager改名为Leader sp_renamedb 'Manager','Leader' 8/12/2024数据库原理及应用3.5.4.2 修改数据库选项(1)利用企业管理器浏览和修改数据库选项:(2)使用系统存储过程修改数据库选项 sp_dboption [dbname=], [optname] [,optvalue] [optname]:表示要查看或修改的选项,如果不指定该选项则返回该数据库所有当前值为on的选项。
[optvalue]:表示指定选项的值,可以表示为True/False或OFF/ON,如果不指定该选项则返回指定选相的当前值 8/12/2024数据库原理及应用3.5.4.3 使用ALTER DATABASE语句修改数据库 ALTER DATABASE databasename {add file
add log file
8/12/2024数据库原理及应用3.5.4.5 缩小数据库 (1)使用企业管理器缩小数据库 (2) DBCC SHRINKDATABASE DBCC SHRINKDATABASE (database_name [,target_percent] [,[NOTRUNCATE|TRUNCATEONLY]]) target_percent:表示当数据库被缩小后,还剩下的自由空间 NOTRUNCATE:被释放的空间依然保持在数据库文件的范围内如果不设置这一项,则被释放的空间将被操作系统回收利用 TRUNCATEONLY:将所有未使用的数据空间释放并让操作系统回收利用使用时,将忽略target_percent的限制8/12/2024数据库原理及应用例如:DBCC SHRINKDATABASE(Company,60, NOTRUNCATE) Go (3)使用DBCC来缩小某一个操作系统文件的长度。
DBCC SHRINKFILE (file_name { [,target_size]| [ ,{ EMPTYFILE|NOTRUNCATE|TRUNCATEONLY} ]} )target_size:将文件缩小到指定的长度,以MB为单位,如果不指定这一选项,文件将尽最大可能进行缩小 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语句删除数据库 DROP DATABASE database_name[,…n] DROP DATABASE mydb1,score 注意,绝对不能删除系统数据库,否则会导致SQL SERVER服务器无法使用 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(32767)范围内的数值Tinyint:长度为1字节可以存储从0到255范围之间的所有正整数 (2) 浮点数据类型 浮点数据类型用于存储十进制小数。
浮点数值的数据在SQL Server中采用只入不舍的方式进行存储 8/12/2024数据库原理及应用 Real:可以存储正的或者负的十进制数值,最大可以有7位精确位数 Float:可以精确到第15位小数,其范围从-1.79E-308到1.79E+308 Decimal和numeric:Decimal数据类型和numeric数据类型完全相同,它们可以提供小数所需要的实际存储空间,但也有一定的限制,可以用2到17个字节来存储从-1038-1到1038-1之间的数值 (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:与datetime数据类型类似,但其日期时间范围较小,它存储从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数据类型中的数值以一个正数部分和一个小数部分存储在两个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时,余下部分填充0Varbinary:其定义形式为varbinary(n),数据的存储长度是变化的,它为实际所输入数据的长度加上4字节其它含义同binary (9) 特殊数据类型 Timestamp:亦称时间戳数据类型,它提供数据库范围内的唯一值,反应数据库中数据修改的相对顺序,相当于一个单调上升的计数器Uniqueidentifier:用于存储一个16字节长的二进制数据类型,它是SQL Server根据计算机网络适配器地址和CPU时钟产生的唯一号码而生成的全局唯一标识符代码(Globally Unique Identifier,简写为GUID)。
8/12/2024数据库原理及应用 (10) 新增数据类型 Bigint:用于存储从-263(-9,223,372,036,854,775,807)到263-1(9,223,372,036,854,775,807)之间的所有正负整数SQL_VARIANT:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQL Server数据 TABLE:用于存储对表或者视图处理后的结果集这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷3.6.1.2 自定义数据类型(1)使用企业管理器(Enterprise Manager)创建用户自定义数据类型2)利用系统存储过程创建用户自定义数据类型 系统存储过程sp_addtype为用户提供了T_SQL语句8/12/2024数据库原理及应用创建自定义数据类型的途径,其语法形式如下: sp_addtype [@typename=] type, [@phystype=] system_data_type [, [@nulltype=] ‘null_type’] [, [@owner=] ‘owner_name’]自定义一个地址数据类型。
exec sp_addtype addr, ‘varchar(60)’, ‘not null’结果为: (1 row(s) affected) type added. 3.6.2 数据库中表的创建3.6.2.1 利用Enterprise Manager创建表8/12/2024数据库原理及应用3.6.2.2 利用create命令创建表 其语法形式如下: CREATE TABLE [ database_name.[ owner ] .| owner.] table_name ( { < column_definition >| column_name AS computed_column_expression| < table_constraint >} [,…n]) [ ON { filegroup | DEFAULT } ] 创建表的各参数的说明如下: database_name:用于指定在其中创建表的数据库名称。
owner:用于指定新建表的所有者的用户名 table_name:用于指定新建的表的名称 column_name:用于指定新建表的列的名称 computed_column_expression:用于指定计算列的列值的表达式 ON {filegroup | DEFAULT}:用于指定存储表的文件组名 8/12/2024数据库原理及应用 TEXTIMAGE_ON:用于指定 text、ntext 和 image 列的数据存储的文件组 data_type:用于指定列的数据类型 DEFAULT:用于指定列的缺省值 constant_expression:用于指定列的缺省值的常量表达式 IDENTITY:用于指定列为标识列 Seed:用于指定标识列的初始值 Increment:用于指定标识列的增量值 NOT FOR REPLICATION:用于指定列的 IDENTITY属性在把从其它表中复制的数据插入到表中时不发生作用,即不足的生成列值,使得复制的数据行保持原来的列值。
ROWGUIDCOL:用于指定列为全球唯一鉴别行号列 8/12/2024数据库原理及应用3.6.3数据库中表的删除3.6.3.1 利用企业管理器删除表3.6.3.2 利用DROP TABLE语句删除表 DROP TABLE语句可以删除一个表和表中的数据及其与表有关的所有索引、触发器、约束、许可对象 DROP TABLE语句的语法形式如下: DROP TABLE table_name例如: DROP TABLE teacher3.6.4数据库中表的修改3.6.4.1 增加、删除和修改字段 (1)利用企业管理器增加、删除和修改字段 (2) 利用Transact-SQL语言中的alter table命令增加、删除和修改字段 8/12/2024数据库原理及应用 ALTER TABLE table_name { [ALTER COLUMN column_name {new_data_type [NULL| NOT NULL]}]| ADD column_name data_type [NULL|DEFAULT]| DROP COLUMN column_name [,…n] } 注意一个ALTER TABLE 命令一次只能修改一个属性。
利用Transact-SQL语言中的alter table命令增加、 删除和修改字段的各参数的说明如下: table_name:用于指定要修改的表的名称 ALTER COLUMN:用于指定要变更或者修改数据类型的列 column_name:用于指定要更改、添加或删除的列的名称8/12/2024数据库原理及应用 new_data_type:用于指定新的数据类型的名称 NULL | NOT NULL:用于指定该列是否可以接受空值 ADD:用于指定要添加一个或多个列定义、计算列定义或者约束 DROP COLUMN:用于删除表中指定的列3.6.5 查看表的属性3.6.5.1 使用系统存储过程查看表属性 (1)显示对象的名称、列名、拥有者、创建时间、列的属性等信息 Sp_help [[@objname=] name] name 为对象的名称,如果是表,则为表名称要查询对象必须在当前数据库中。
省略[@objname=]name项时显示数据库中所有对象的信息 8/12/2024数据库原理及应用 (2)查看指定表与其他相关数据库对象的关联信息 sp_depends [@objname=] name (3)查看数据库或表的存储空间的信息,如分配(保留)的空间数量、数据使用的空间数量、索引使用的空间数量以及由数据库对象保留的未用空间数量 sp_spaceused 表名3.6.5.2 使用企业管理器查看表属性 在企业管理器中,选择指定的表,然后单击鼠标右键,在弹出的快捷菜单中选择“属性”命令即可3.6.6 表的重命名 (1)用系统存储过程 使用系统存储过程sp_rename 可以修改许多数据库对象的名称,包括表、视图、存储过程、触发器、默认值、数据库、对象或规则等,语法如下: sp_rename [@objname=] ‘原名’,[@newname=] ’新名’8/12/2024数据库原理及应用 (2)使用企业管理器 在企业管理器中,选择要重命名的表,然后单击鼠标右键,在弹出的快捷菜单中选择“重命名”命令,输入新表名即可。
3.6.7 编辑维护表格数据3.6.7.1 使用insert添加表格数据 (1)insert语句的基本语法: INSERT [INTO] Table_name (column_name)[,…n] VALUES (expression)[,…n] 3.6.7.2 使用UPDATE语句修改数据 (1)UPDATE语句的语法格式 update table_name set column_name={expression|default|NULL}[,…n] [from table_name[,…n]] where searchcondition8/12/2024数据库原理及应用3.6.7.3 使用DELETE语句删除表格中数据 (1)DELETE语句的语法格式 DELETE [FROM] table_name WHERE search_conditions (2)使用TRUNCATE TABLE清空表格 TRANCATE TABLE语句可以删除表格中所有的数据,只留下一个表格的定义。
delete语句快 语法格式: TRUNCATE table_name8/12/2024数据库原理及应用3.6.7.4 使用企业管理器管理表格数据 (1)利用企业管理器管理表格步骤: ①选择指定的表格②单击右键,从弹出的快捷菜单中选择[打开表]命令,在“打开表”命令下有3个子命令:“返回所有行”:表示打开表以后,将返回表中所有的数据;“返回首行”:表示打开表以后,只返回指定的前面的n行数据企业管理器将弹出如下对话框,输入n值,然后,可以直接在表格中编辑数据 “查询”:利用图形化的方式或者直接书写SQL语句进行查询 8/12/2024数据库原理及应用3.7 3.7 视图及其应用视图及其应用 3.7.1 视图的创建和查询3.7.1.1 创建视图创建视图时应该注意以下几点: ●只能在当前数据库中创建视图 ●如果视图引用的基表或者视图被删除,则该视 图不能再被使用,直到创建新的基表或者视图 ●视图的名称必须遵循标识符的规则,且对每个用户必须是唯一的此外,该名称不得与该用户拥有的任何表的名称相同。
(1) 利用企业管理器创建视图 (2)利用Transact-SQL语句中的CREATE VIEW命令创建视图8/12/2024数据库原理及应用使用Transact-SQL语句中的CREATE VIEW创建视图的语法形式如下: CREATE VIEW view_name [columnname,......] AS Select_statement [ WITH CHECK OPTION ]参数说明如下: view_name用于指定视图的名称 columnname用于指定视图中的字段名称 select_statement用于创建视图的SELECT语句, 利用SELECT命令可以从表中或者视图中选择列构成新视图的列 WITH CHECK OPTION用于强制视图上执行的所有数据修改语句都必须符合由 select_statement 设置的准则 8/12/2024数据库原理及应用 视图的列名可以省略,但是以下情况下,必须为视图提供列名: ●该列是从表格中的计算列或者从一个常量继承下来。
●当视图从多个表产生,而这些表中有数据列重名 ●当视图中有一个数据列使用了和表格中相应列名不同的时候,所有列名都必须给出3.7.2 视图的修改和删除3.7.2.1 修改视图 (1)利用企业管理器修改视图 (2)使用ALTER VIEW语句修改视图 ALTER VIEW view_name [(column[,...n])] AS select_statement [ WITH CHECK OPTION ]8/12/2024数据库原理及应用3.7.2.2 重命名视图 (1)利用企业管理器重命名视图 选择视图,在其上单击鼠标右键,在弹出的快捷菜单中选择“重命名”命令即可 (2)可以使用系统存储过程sp_rename修改视图的名称,该过程的语法形式如下: sp_rename old_name,new_name3.7.2.3 删除视图 (1)使用企业管理器删除视图 (2)使用Transact-SQL语句DROP VIEW删除视图的语法形式如下: DROP VIEW {view_name} [,…n] 可以使用该命令同时删除多个视图,只需在要删除的视图名称之间用逗号隔开即可。
8/12/2024数据库原理及应用3.7.3 通过视图修改数据 使用视图修改数据时,需要注意以下几点: ● 修改视图中的数据时,不能同时修改两个或者多个基本表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基本表 ● 不能修改那些通过计算得到的字段 ● 如果在创建视图时指定了WITH CHECK OPTION选项,那么所有使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围 ● 执行UPDATE、DELETE命令时,所删除与 更新的数据必须包含在视图的结果集中 ● 如果视图引用多个表时,无法用DELETE命令删除数据8/12/2024数据库原理及应用3.7.3.1 插入数据记录 使用视图可以插入数据记录,数据添加到数据库中的基表3.7.3.2 更新数据记录 使用视图可以更新数据记录,但应该注意的是,更新的只是数据库中的基表3.7.3.3 删除数据记录 使用视图删除记录,可以删除任何基表中的记录,直接利用DELETE语句删除记录即可。
但应该注意,必须指定在视图中定义过的字段来删除记录8/12/2024数据库原理及应用3.8 3.8 索引的创建与管理索引的创建与管理 3.8.1 创建索引 SQL Server 2000创建索引的方法: ●利用企业管理器中的索引向导创建索引 ●利用企业管理器直接创建索引 ●利用Transact-SQL语句中的CREATE INDEX命令创建索引3.8.1.1 利用企业管理器创建索引3.8.1.2 利用Transact-SQL语句中的CREATE INDEX 命令创建索引8/12/2024数据库原理及应用语法形式如下: CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED ] INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )各参数说明如下: ●UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行 ●CLUSTERED:用于指定创建的索引为聚集索引。
●NONCLUSTERED:用于指定创建的索引为非聚集索引 ●index_name:用于指定所创建的索引的名称 ●table:用于指定创建索引的表的名称 ●view:用于指定创建索引的视图的名称 ●ASC|DESC:用于指定具体某个索引列的升序或降序排序方向 ● Column:用于指定被索引的列8/12/2024数据库原理及应用 例3.83 为表employees创建了一个唯一聚集索引 USE Northwind GO CREATE UNIQUE CLUSTERED INDEX emp_id_index ON employees (EmployeeID desc) 3.8.2 查看、修改和删除索引3.8.2.1 利用企业管理器查看、修改和删除索引 8/12/2024数据库原理及应用3.8.2.2 使用系统存储过程查看和更改索引名称 (1)使用系统存储过程sp_helpindex查看索引信息。
其语法形式如下: sp_helpindex [@objname=]’name’ 其中[@objname=]’name’参数用于指定当前数据库中的表的名称 (2)使用系统存储过程sp_rename更改索引的名称 其语法形式如下: sp_rename [@objname=]'object_name',[@newname=]'new_name'[,[ @objtype=]'object_type'] 8/12/2024数据库原理及应用3.8.2.3 使用DROP INDEX命令删除索引 DROP INDEX命令可以删除一个或者多个当前数据库中的索引其语法形式如下: DROP INDEX 'table.index | view.index' [ ,...n ]其中,table | view用于指定索引列所在的表或索引视图;index用于指定要删除的索引名称 8/12/2024数据库原理及应用3.9 3.9 存储过程与触发器存储过程与触发器 3.9.1 存储过程的使用与管理 在SQL Server中存储过程分为两类:系统存储过程和用户自定义存储过程。
系统存储过程存储在master数据库中,主要用于从系统表中获取信息用户自定义的存储过程是用户在数据库中为了完成某一任务而编写的存储过程 创建存储过程时,需要确定存储过程的三个组成部分: (1)所有的输入参数以及传给调用者的输出参数 (2)被执行的针对数据库的操作语句,包括调用其它存储过程的语句 (3)返回给调用者的状态值,以指明调用是成功还是失败8/12/2024数据库原理及应用创建存储过程时应注意以下几点: (1)不能将 CREATE PROCEDURE 语句与其它SQL语句组合到单个批处理中 (2)创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户 (3)存储过程是数据库对象,其名称必须遵守标识符规则 (4)只能在当前数据库中创建存储过程 一个存储过程的最大尺寸为128M 使用SQL Server 企业管理器创建存储过程很简单,在SQL Server企业管理器中,选择指定的服务器和数据库,用右键单击要创建存储过程的数据库,在弹出的快捷菜单中选择“新建”选项,再选择下一级菜单中的“存储过程”选项,或者用右键单击存储过程图标,从弹出的快捷菜单中选择“新建存储过程”选项,然后根据提示创建即可。
8/12/2024数据库原理及应用 使用Transact-SQL语言中的CREATE PROCEDURE创建存储过程的语法形式如下: CREATE PROC[ EDURE ] procedure_name [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ]] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] 8/12/2024数据库原理及应用3.9.2 触发器的使用与管理 触发器是一种特殊类型的存储过程触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用触发器可以使每个站点可以在有数据修改时自动强制执行其业务规则触发器可以用于 SQL Server 约束、默认值和规则的完整性检查。
使用触发器主要优点有: 触发器是自动的,当对表中的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活 触发器可以通过数据库中的相关表进行层叠更改 触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂8/12/2024数据库原理及应用创建触发器时应该注意以下几个问题: (1)CREATE TRIGGER 语句必须是批处理中的第一个语句 (2)创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户 (3)触发器为数据库对象,其名称必须遵循标识符的命名规则 (4)虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器 (5)虽然不能在临时表或系统表上创建触发器,但是触发器可以引用临时表 (6)在含有用 DELETE 或 UPDATE 操作定义的外键的表中,不能定义 INSTEAD OF 和 INSTEAD OF UPDATE 触发器8/12/2024数据库原理及应用 (7)虽然 TRUNCATE TABLE 语句类似于没有 WHERE 子句(用于删除行)的 DELETE 语句,但它并不会引发 DELETE 触发器,因为 TRUNCATE TABLE 语句没有记录。
(8)WRITETEXT 语句不会引发 INSERT 或 UPDATE 触发器 (9)当创建一个触发器时必须指定:名称;在其上定义触发器的表;触发器将何时激发;激活触发器的数据修改语句 使用企业管理器创建触发器的方法如下: 在企业管理器中,展开指定的服务器和数据库项,然后展开要在其上创建触发器的表所在的数据库,用右键单击该表,从弹出的快捷菜单中选择所有任务子菜单下的管理触发器选项,则会出现触发器属性对话框在该对话框中,在名称文本框中选择新建,然后在文本框中输入触发器文本8/12/2024数据库原理及应用单击“检查语法”按钮,则可以检查语法是否正确单击“应用”按钮,则在名称下拉列表中会有新创建的触发器名称最后,单击“关闭”按钮,即可关闭该对话框,成功创建触发器 使用Transact-SQL语言中的CREATE TRIGGER命令创建触发器的语法格式如下: CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] {{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS8/12/2024数据库原理及应用 [ { IF UPDATE ( column ) [ { AND | OR } UPDATE ( column ) ] [ ...n ] | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) { comparison_operator } column_bitmask [ ...n ] } ] sql_statement [ ...n ] } }例3.90 在employee上创建一个delete类型的触发器。
use pubs go create trigger my_trigger8/12/2024数据库原理及应用 on employee instead of delete as raiserror('你无权删除记录!',10,1) INSERT触发器通常被用来更新时间标记字段,或者验证被触发器监控的字段中的数据满足要求的标准,以确保数据完整性 UPDATE触发器和插入触发器的工作过程基本上一致,修改一条记录等于插入了一条新的记录并且删除一条旧的记录 DELETE触发器通常用于两种情况,第一种情况是为了防止那些确实需要删除但会引起数据一致性问题的记录的删除;第二种情况是执行可删除主记录的子记录的级联删除操作可以使用这样的触发器从主销售记录中删除所有的定单项 8/12/2024。
