第2章结构化查询语言sql.doc

上传人:rrsccc 文档编号:9006135 上传时间:2021-01-29 格式:DOC 页数:16 大小:103KB
返回 下载 相关 举报
第2章结构化查询语言sql.doc_第1页
第1页 / 共16页
第2章结构化查询语言sql.doc_第2页
第2页 / 共16页
第2章结构化查询语言sql.doc_第3页
第3页 / 共16页
第2章结构化查询语言sql.doc_第4页
第4页 / 共16页
第2章结构化查询语言sql.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《第2章结构化查询语言sql.doc》由会员分享,可在线阅读,更多相关《第2章结构化查询语言sql.doc(16页珍藏版)》请在三一文库上搜索。

1、第2章 结构化查询语言SQL2.1 概述2.1.1 组成与功能1 SQL是“Structured Query Language(结构式查询语言)”的缩写,1986年SQL语言被批准为关系数据库语言的美国标准化语言。2SQL语言分类分为四大类:数据定义语言,数据查询语言,数据操纵语言,数据控制语言。(1)数据定义语言:主要用创建、修改或删除数据库中对象,如表、视图、模式、触发器和存储过程等,与其相关的主要SQL语句包括CREAT(创建)、ALTER(修改)、DROP(删除);(2)数据操纵语言:主要用于数据的增、删、改操作,主要语句有INSERT(插入)、DELETE(删除)、UPDATE(修改

2、);(3)数据查询语言:主要用于数据的检索查询,与其相关的语句是SELECT(查询);(4)数据控制语言:主要用于控制用户对数据库的访问权限、完整性规则描述、事务控制等操作。控制用户对数据库的访问权限的主要语句有 GRANT(授予权利)和REVOKE(取消权利)等。事务控制的语句包括 COMMIT(事务提交)和ROLLBACK(事务撤消)等。2SQL语言的特点1)非过程化语言: 非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求,必须指定存取路径。而用SQL语言进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过

3、程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。2)统一的语言: SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境,例如用户在数据库投入运行后,还可根据需要随时地逐步地修改模式,并不影响数据库的运行,从而使系统具有良好的可扩充性。3).面向集合的操作方式 SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的

4、对象也可以是元组的集合。 非关系数据模型采用的是面向记录的操作方式,任何一个操作其对象都是一条记录。例如查询所有平均成绩在80分以上的学生姓名,用户必须说明完成该请求的具体处理过程,即如何用循环结构按照某条路径一条一条地把满足条件的学生记录读出来。4)是所有关系数据库的公共语言。3SQL语言的基本数据类型SQL Server提供了数值型、字符型、日期型、二进制型、位型、双字节型等6大类数据类型。1)数值数据类型一般可以分为整数型、精确数值类型、浮点数值类型和货币类型等4类。数字数据只包含数字。数字数据类型包括正数和负数、小数(浮点数)和整数整数由正整数和负整数组成,例如 39、25、0-2 和

5、 33967。在 Micrsoft SQL Server 中,整数存储的数据类型是 Int,Smallint和 Tinyint。Int 数据类型存储数据的范围大于 Smallint 数据类型存储数据的范围,而 Smallint 据类型存储数据的范围大于Tinyint 数据类型存储数据的范围。使用 Int 数据狗昔存储数据的范围是从 -2 147 483 648 到 2 147 483 647(每一个值要求4个字节存储空间)。使用 Smallint 数据类型时,存储数据的范围从 -32 768 到 32 767(每一个值要求2个字节存储空间)。使用Tinyint 数据类型时,存储数据的范围是从0

6、 到255(每一个值要求1个字节存储空间)。精确小娄数据在 SQL Server 中的数据类型是 Decimal 和 Numeric。这种数据所占的存储空间根据该数据的位数后的位数来确定。在SQL Server 中,近似小数数据的数据类型是 Float 和 Real。例如,三分之一这个分数记作。3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数据可能与存储在该列中数据不完全一样。2)字符型常用的字符型有Char、Varchar和Text等3种。(1)char类型。长度固定。如果字段或变量被定义为char类型,而实际长度没有达到定义的长度,则在字符串尾部添加空格以达到固定的

7、字符数。(2)varchar类型。长度可变。如果字段或变量被定义为varchar类型,而实际长度没有达到定义的长度,SQL Server会自动丢掉尾部的空格以节省空间。(3)text类型。当要存储的字符型数据非常庞大,长度超过了8000个字符时,可选择text数据类型。即文本型,最大可存储约2G的数据。3)日期时间型主要用来存储日期和时间的组合数据,根据取值范围的大小分为datetime和smalldatetime两种。日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98

8、”。前一个数据类型是日期在前,时间在后一个数据类型是霎时间在前,日期在后。在 Microsoft SQL Server中,日期和时间数据类型包括Datetime 和 Smalldatetime 两种类型时,所存储的日期范围是从 1753 年 1 月 1 日开始,到9999 年12 月 31 日结束(每一个值要求 8 个存储字节)。使用 Smalldatetime 数据类型时,所存储的日期范围是 1900年 1 月 1日 开始,到 2079 年 12 月 31 日结束(每一个值要求 4 个存储字节)。日期的格式可以设定。设置日期格式的命令如下:Set DateFormat format | fo

9、rmat _var|其中,format | format_var 是日期的顺序。有效的参数包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默认情况下,日期格式为MDY。例如,当执行 Set DateFormat YMD 之后,日期的格式为年 月 日 形式;当执行 Set DateFormat DMY 之后,日期的格式为日 月有年 形式4)二进制数据类型二进制数据类型有定长和变长之分,主要用来存储二进制数据,如图形图像、Word文档文件等。SQL Server提供了binary、varbinary和image等3种常用二进制数据类型。5)位型bit(位型)是SQL Server提供的

10、一种支持逻辑数据的类型,只用来存储1或0两种,只有一位字节长,在SQL Server中bit字段的用途很多,可以作为“真/假”、“男/女”、“开/关”这类状态信息的标志,可以作为活动账号的指示器或项目的使用标志等。6)特殊数据类型有两类不常用的数据类型,即双字节数据类型和时间戳数据(Timestamp)类型。它们主要是为了实现特殊的用途,称为特殊数据类型。时间戳数据类型往往因为其名字而造成误解,实际上它既不是日期,也不是时间数据,而是SQL Server根据事件的发生次序自动生成的一种二制数据。这个数据有很多用途,其中之一是在SQL Server关闭重新启动时,作为进行恢复工作的重要部分。另外

11、利用timestamp数据还可以替代传统的数据库加锁技术。2.3数据定义语言1)空值空值也可称为NULL值。空值不是“空格”符或“0”值,它表示的是没有值,是不确定的值。2)数据类型:确定后一般不改变2.3.1 数据库在SQL中,数据库被定义为对象的集合,这些对象主要有表、索引、视图、存储过程等。数据库在磁盘上是以文件为单位存储的,由数据文件和日志文件组成。数据文件中实际存放数据库的所有数据和对象,日志文件用来存放用户对数据库所进行的所有操作,它是维护数据库完整性的重要工具。(1)创建数据库语句格式: CREATE DATABASE 语句功能:创建一个数据库,就是定义一个存储空间。应用举例:C

12、REATE DATABASE 教学管理库(2)删除数据库语句格式:DROP DATABASE 语句功能:从计算机系统中删除(撤消)一个数据库。当然会同时把该库中的所有信息一并删除掉。语句举例:DROP DATABASE 教学管理232表1)表的概念关系数据库的主要特点之一就是用表的方式组织数据。表是SQL语言存放数据、查找数据以及更新数据的基本数据结构。在SQL语言中,表有严格的定义,它是一个由行、列组成的二维结构,通常把行称做记录,把列称为字段。表2-1 学生基本情况登记表学号姓名性别出生日期专业年级2008001张红女1988-3-6计算机应用12008002李勇男1988-10-11信息

13、管理1从表2-1可以看出,数据表一般具有以下属性:(1)表名:表的惟一标识。比如学生基本情况登记表;(2)字段:一张表可以由若干列组成,称为字段。列名惟一,且同一列的数据必须具有相同的数据类型。(3)记录:表中的每一行称为一条记录,比如“2008001,张红,女1988.3.6,计算机应用,1”,它描述了一名学生的若干属性;(4)主关键字:能够惟一表示数据表中的每条记录的字段或者字段的组合,也称为主码、主键,比如学号。在一个学校中,学生的姓名可能重复,但学号必须是惟一的。2)创建表结构(1)语句格式:CREATE TABLE (,,.)(2)语句功能:在当前数据库中定义一个表的结构(即关系模式

14、)。(3)语句举例:如果希望在“教学管理”数据库中创建一个名为“学生表”的表结构,则可执行下列语句:CREATE TABLE 学生表( 学号 char(7) Primary Key, 姓名 char(6), 性别 char(2), 出生日期 datetime, 专业 char(10), 年级 int )在上述语句中,数据表的名称为“学生表”,它包括学生号、姓名、性别、出生日期、专业、年级等6个字段(列)。学名的数据类型为Char型(字符型),长度为7;出生日期的数据类型为Datatime型(日期型);年级的数据类型为Int型(整数型)。3)删除表结构 (1)语句格式:DROP TABLE (2

15、)语句功能: 从当前数据库中删除一个表,当然在删除表结构的同时也删除了全部内容。(3) 语句举例:DROP TABLE 学生表从当前数据库中删除掉名称为“学生表”的表,假定事先已经在当前库建立过该表。232索引1索引的概念索引(Index)提供了一种快速访问数据的途径。索引具有以下特点。(1)索引是在基本表的列上建立的一种数据加对象,它和基本表分开存储,它的建立或撤消对数据的内容毫无影响。(2)索引一经创建,就完全由系统自动选择和维护,不需要用户指定使用索引,也不需要用户执行打开索引或进行重新索引等操作,所有这些工作都是由SQL Server数据库管理系统自动完成。(3)基本表的记录数量越多,

16、记录越长,越有必要创建索引,这对加快查询速度的效率十分明显。相反,对于记录比较少的基本表而言,创建索引的意义不大。(4)索引是为了加速查询速度而创建的,但同时会影响基本表的插入、删除或修改等更新活动的速度,当对基本表的数据进行增删改操作时,索引文件也要随之变化,以保持与基本表的一致,因此只有对那些数据量大、查询频度较高、实时性要求强的基本表要创建索引,并且一张基本表上不要创建过多的索引。2创建索引的原则索引是建立在基本表列上的对象,通常可参考以下原则:(1)基本表的记录数量越多,记录越长,越有必要创建索引,这对加快查询速度的效率十分明显。相反,对于记录比较少的基本表而言,创建索引的意义不大。(

17、2)索引是为了加速查询速度而创建的,但同时会影响基本表的插入、删除或修改等更新活动的速度,当对基本表的数据进行增、删、改操作时,索引文件也要随之变化,以保持与基本表的一致,因此只有对那些数据量大、查询频度较高、实时性要求强的基本表要创建索引,并且一张基本表上不要创建过多的索引。(3)索引是建立在基本表列上的对象,到底在哪个列上创建索引,通常可改变列在WHERE、ORDER BY、GROUP BY子句中出现的频率。比如,如果某个或某些列经常出现在ORDER BY子句中,那么就可考虑在之上建立索引。3 不易创建索引的几种情况(1)包含太多重复值的列;(2)查询中很少被引用的列;(3)值特别长的列。

18、(4)具有很多NULL值的列(5)需要经常插入、删除、修改的列。(6)记录较少的基本表(7)需要进行频繁、大批量数据更新的基本表4 索引的类型索引是创建在基本表列上的一种数据对象,从使用角度可将索引分为以下单列索引、惟一索引、复合索引三类;从是否改变基本表记录的物理位置角度可分为聚集索引和非聚集索引两类。实际的索引通常是这两大类5种方式的组合。5 聚集和非聚集索引的对比聚集索引和非聚集索引是SQL Server中经常用到的两个概念,是非此即彼的关系。一个单列或复合索引即可以是聚集的也可以是非聚集的。在建立索引时,是采用聚集方式还是非聚集方式主要应从以下几点考虑:(1)存取速度从建立了聚集索引的

19、表中取出数据要比建立了非聚集索引的表快。但相对而言,聚集索引会降低向表中插入、删除和修改数据的速度。(2)索引的数据对聚集索引的主要限制是每个表只能建立一个聚集索引。但是一个表可以有不止一个非聚集索引。实际上,对每个表最多可以建立249个非聚集索引。也可以对一个表同时建立聚集和非聚集索引。(3)所需空间非聚集索引需要较多的硬盘空间和内存。6 创建索引(1)语句格式:CREATE UNIQUECLUSTERED INDEX ON (次序,次序)(2)语句功能主要参数的意义是:UNIQUE:为表或视图创建惟一索引(不允许存在索引值相同的两行)。CLUSTERED:聚集索引索引名:在实际使用时,用户

20、并不需要知道索引名,但在创建阶段,索引名应符合SQL Server的命名规则。并且在整个数据库中,索引名不能重复。次序:每个“列名”后面可以用“次序”指定索引值的排列次序,ASC表示升序,DESC表示降序,默认值是ASC。7 删除索引(1)语句格式: DROP INDEX ,n(2)语句功能:使用该语句一次可以撤消一个或多个指定的索引,索引名之间用逗号间隔。234视图1)视图的概念视图看上去同表一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存。在视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。2)视图的作用视图是由一个或多个基本表导出的表,人们通常

21、把它理解为一组存储在SQL Server数据库中,经过预先编译的SELECT语句。在SQL Server中可以基本表一样对视图进行查询、删除、更新操作,但在对视图数据所进行的增加、删除、修改等更新操作最终都映射到相应的基本表上,并有一定的限制,在实际应用中,尽可能不要通过视图对记录进行更新操作。(1)视图是经过预编译的SELECT语句,存储在数据库服务器端,因此执行视图比从客户端直接执行SELECT语句速度更快、效率更高一些。(2)视图属于用户模式范畴,在实际中,一般的用户不一定具有SELECT语句方面的专门知识,从户友好性角度来说,视图更便于用户使用。(3)利用视图可以简化的形式表达复杂的S

22、ELECT语句组,如嵌套查询等。3)创建视图(1)语句格式:CREATE VIEW (,.) AS (2)语句功能:在当前数据库中根据SELECT子句的查询结果建立一个视图。4)删除视图(1)语句格式:DROP VIEW (2)语句功能:删除当前数据库的一个视图。235存储过程1)存储过程的概念存储过程(Stored Procedure)是一组预先编译好的,以一种可执行的形式永久地存储在数据中的SQL代码,在master数据库中存储了一些SQL Server事先定义好的系统存储过程,通常以sp_xxxx做为存储过程的名字。当用户创建数据库时,也会自动生成一些事先定义好的存储过程,通常以dt_x

23、xxx做为名字。使用存储过程的好处可归纳为以下几点:(1)执行速度快。(2)模块化的程序设计。(3)减少网络流量。(4)保证系统的安全性。2)创建存储过程(1)语句格式:CREATE PROCEDURE AS (2)语句功能:创建一个存储过程,多数是指利用SQL Server的Transact-SQL编写的程序。(3)create proc dsh_proc1as select * from 学生表3)执行存储过程(1)语句格式:EXEC ,或直接运行存储过程名。(2)语句功能:执行当前数据库中事先定义好的一个存储过程。Exec dsh_proc14)修改存储过程(1)语句格式:ALTER P

24、ROC AS 。(2)语句功能:修改当前数据库中事先定义好的一个存储过程。Alert proc dsh_proc1As select *from 学生表 where 专业=软件5)删除存储过程(1)语句格式:DROP PROC 。(2)语句功能:删除当前数据库中事先定义好的一个存储过程。Drop proc dsh_proc19触发器触发器是一种特殊的存储过程,它基于一个表创建,但可以针对多个表进行操作,与表紧密相连,可以看作是表定义的一部分,主要用来保证数据的完整性。在SQL Server中一张表可以有多个触发器,用户可以针对UPDATE、DELETE、INSERT语句分别设置触发器,那么当用

25、户进行UPDATE、INSER、DELETE等数据维护操作执行后,这些事先定义好的触发器对象就会被“触发”,并按事先定义好的规则自动执行。触发器如果使用不当,会影响数据库的效果,因此初学者慎用。24数据操纵语言SQL数据定义语言的主要作用是创建存储数据的结构,而数据操纵语言的主要作用则是向数据库中填写数据,具体包括增加、删除、修改等操作。1)插入数据(1)语句格式INSERT INTO (, ) VALUES(,)(2)语句功能向一个表中所指定的若干列插入一行记录。当向表中插入一完整的记录时,可以省略列名表表。(3)语句举例INSERT INTO 学生表 VALUES(2007001,王丽,女

26、,1987-10-31,2)在当前数据库中执行上述语句后,将在名为“学生表”的数据表中插入一名新同学的完整信息。由于“学生表”的学号、姓名和性别字段被定义为了字符型(Char型),因此它们对应的字段值必须用半角的单引号引起来,在SQL Server中日期型(Datetime)也需要用单引号,而数值型(Int)则不需要这样做。2)删除数据(1)语句格式DELETE FROM WHERE (2)语句功能删除一个表中满足条件的所有记录。(3)语句举例DELETE FROM 学生表 WHERE 性别=男在当前数据库中执行上述语句后,将把“学生表”中所有性别等于“男”的记录删除。此处用到的“性别=男”是

27、一种逻辑表达式,表示删除的条件,我们将在下一节详细介绍。如果要删除所有记录,则可以直接执行“DELETE FROM 学生表”。3)修改数据(1)语句格式UPDATE SET =, WHERE (2)语句功能按条件修改一个表中的某些列的值。(3)语句举例UPDATE 学生表 SET 姓名=王莉 WHERE 学号=2007001在当前数据库中执行上述语句后,将把“学生表”中学号等于“2007001”的记录的姓名字段的值修改为“王莉”。25数据查询语言1)基本语法格式SQL数据查询语言的主要作用是把数据从基本表中提取、展示出来,它只对应一条语句,即SELECT语句。SELECT的英文的选择的意思,该

28、语句带有丰富的选项(称为子句),每个选项都由一个关键字标识,其基本语法格式如下:SELECT 字段列表 INTO 新表名 FROM 源表名 WHERE 查询条件 GROUP BY 分组表达式 HAVING 查找条件 ORDER BY 排序表达式 ASC | DESC 2)最简单的格式SELECT * FROM 表名 3)最常用的格式SELECT * FROM 表名 WHERE 查询条件这条语句翻译成中文就是:从(FROM)某张表中选择(SELECT)出所有满足条件(WHERE)的所有字段(*)。二、本章涉及的实际操作以下内容均可在SQL Server 的查询分析器内进行实验。1建立数据库建立名

29、为“教学管理库”的数据库create database教学管理库2建立表建立名为“学生表”的表create table 学生表 (学号 char (8) primary Key,姓名 char(8),性别 bit,出生日期 datetime,专业 char(10),年龄 int)3数据的插入与查询1)给表中插入一个数据insert into 学生表 values (2007001,王丽,1,1982-8-5,计算机应用,26)insert into 学生表 values (2007002,张华,0,1982-9-5,计算机应用,26)insert into 学生表 values (200700

30、3,李敏,1,1982-3-15,计算机应用,26)2) 查询刚才输入的记录Select * from 学生表3) 教材29页的例子学生表:create table 学生表 (学号 char (8) primary Key,姓名 char(8),性别 bit,出生日期 datetime,专业 char(10),年龄 int)课程表:create table 课程表 (课程号 char (7) primary Key,课程名 char(20),任课教师 char (8)成绩表:create table 成绩表 (学号 char (8),课程号 char (7),成绩 Numeric (4,2)给

31、学生表中添加的记录:insert into 学生表 values (20030001,张青,1,1982-3-15,软件,21)insert into 学生表 values (20030002,王丽,0,1984-6-29,软件,19)insert into 学生表 values (20030003,赵红,0,1985-7-21,软件,18)insert into 学生表 values (20030004,李明,1,1981-9-21,应用,22)insert into 学生表 values (20030005,赵东,1,1981-8-19,应用,22)查看其中的内容:Select * fro

32、m 学生表给课程表中添加的记录:insert into 课程表 values (1000044,计算机网络,张向东)insert into 课程表 values (1000045,程序设计,王洪伟)insert into 课程表 values (1000046,有能力与应用数据库,李利)查看其中的内容:Select * from 课程表给成绩表中添加的记录:insert into 成绩表 values (20030001,1000044,80.5)insert into 成绩表 values (20030002,1000044,78.5)insert into 成绩表 values (2003

33、0001,1000045,81.5)insert into 成绩表 values (20030003,1000045,83)insert into 成绩表 values (20030001,1000046,0)insert into 成绩表 values (20030003,1000046,0)查看其中的内容:Select * from 成绩表4查询的实例教材31页开始的各种涉及查询的实例例1:查询学生表中的学号、姓名、年龄、专业Select 学号,姓名,年龄,专业 from 学生表例2:通配符*的使用Select * from 学生表例3:基于字段的表达式,注意str、year、month、

34、as的含义:按*年*月形式显示出生年月Select 学号,姓名,str(year(出生日期),4)+年+str(month(出生日期),2)+月 as 年月 from 学生表例4:distinct短语的使用:列出所有的专业名Select distinct 专业 from 学生表例5:使用where子句:查询所有年龄在19-20的学生情况Select * from 学生表 where 年龄 between 19 and 21Select * from 学生表 where 年龄=19 and 年龄1985-1-1例9:练习使用in 短语:列出所有年龄为19,21的学生记录Select * from

35、 学生表 where 年龄 in (19,21)Select * from 学生表 where 年龄=19 or 年龄=21例10:练习使用LIKE短语:列出所有姓王的学生的信息Select * from 学生表 where 姓名 like 王%例11:练习使用order by 字句:显示所有“软件”专业学生记录Select * from 学生表 where 专业=软件 order by 年龄例12:练习统计函数的使用:在学生表中列出专业个数Select count (distinct 专业) AS 专业数 from 学生表例13:练习统计函数的使用:统计“学生表中”软件专业学生个数Selec

36、t count (*) AS 专业人数 from 学生表 where 专业=应用例14:练习统计函数的使用:查询学生表中应用专业学生的最大年龄,最小年龄,平均年龄Select max(年龄) as 最大, min(年龄) as 最小, avg(年龄) as 平均 from 学生表 where 专业=应用Select max(年龄) as 最大, min(年龄) as 最小, avg(年龄) as 平均 from 学生表 where 专业=应用例15:列出学生表中不同专业中,各专业的学生人数Select 专业, count(*) as学生数 from 学生表 group by 专业例16:练习i

37、nto字句的使用Select * into 软件专业学生表 from 学生表 order by 学号复杂查询(连接查询)例17: 列出所有学生的学号,姓名,课程号和成绩Select 学生表.学号,姓名,课程号,成绩 from 学生表,成绩表 where 学生表.学号=成绩表.学号嵌套查询例18:列出所有学生的学号,姓名,课程号,课程名和成绩Select 学生表.学号,姓名,课程表.课程号,课程名,成绩 from 学生表,课程表,成绩表 where 学生表.学号=成绩表.学号 and 课程表.课程号=成绩表.课程号例19:查询所有女同学选修的课程号和课程名。Select课程号,课程名 from

38、课程表 where 课程号 in (select 课程号 from 成绩表 where 学号 in (select 学号 from 学生表 where 性别=0)例20:平均成绩小于总平均成绩的学生学号、姓名、专业。Select 学号,姓名,专业 from 学生表 where 学号 in (select distinct 学号 from 成绩表 where 成绩(select avg(成绩) from 成绩表)2.6数据控制语言数据控制语言的种类很多,其中事务控制是最常用、最重要的一种。1)事务的概念事务(Transaction)是并发控制的基本单位,它反映了现实世界中需要以一个完整的单位提交

39、的一项工作。SQL Server通过事务机制,将逻辑相关的一组操作捆绑在一起,以便服务器保持数据的完整性。它是SQL复杂程序设计必不可少的内容。在使用事务的情况下,SQL Server可以保证,要么所有的记录要么全部处理,要么一行也不处理。如果修改了全部记录的一半时服务器出错了,SQL Server会返回到以前未执行UPDATE操作前的位置,清除它已经修改过的数据,这就是事务处理的作用。2)事务处理控制语句SQL Server中可通过以下3个语句完成事务控制:(1)开始一个事务:BEGIN TRANSACTION 事务名。(2)提交一个事务:COMMIT TRANSACTION 事务名。(3)回滚一个事务:ROLLBACK TRANSACTION 事务名在数据库应用程序设计中,事务控制语句的一般用法是:第1步:BEGIN TRAN 事务名第2步:对数据库进行增、删、改等操作第3步:提交事务或回滚:基本逻辑是,如果没有发生异常情况,则通过COMMIT语句提交事务,确认第2步的操作;否则执行ROLLBACK回滚命令,撤消第2步的所有操作。16

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1