第九章 SQL Server程序设计-数据库原理与技术(SQL Server 2012)-申时凯
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在一个GO语句行中不能包括其他T-SQL语句,但可以使用注释文字。如果 在一个批处理中包含语法错误,如引用了一个并不存在的对象,则整个批处 理就不能被成功地编译和执行。如果一个批处理中不存在语法错误,但某句 有执行错误,如违反了约束,则它仅影响该语句的执行。即执行错误将终止 从错误发生的地方到此批处理末端的批处理的执行,而其后批处理的编译执 行不受影响。
事务是SQL Server中的执行单元,它由一系列TSQL语句组成。
这个执行单元要么成功完成所有操作,要么就是失 败,并将所做的一切复原。
事务机制的提出与实施是为了防止多用户访问同一 数据时造成的数据异常。
由于事务的执行机制,确保了数据能够正确地被访 问,避免因多个数据操作的并发或是在访问数据过 程中受到其他操作的干扰而造成数据不完整。
不能把规则和默认值绑定到表字段或用户自定义数据类型之后, 立即在同一个批处理中使用它们。
不能定义一个CHECK约束之后,立即在同一个批处理中使用该约 束。
不能在修改表中的一个字段名之后,立即在同一个批处理中引用 新字段名。
如果一个批处理中的第一个语句是执行某个存储过程的EXECUTE语 句,则EXECUTE关键字可以省略;如果该语句不是第一个语句, 则必须使用EXECUTE关键字,EXECUTE可以省写为“EXEC”。
➢ 行注释 ➢ 块注释
1.行内注释 如果整行都是注释而并非所要执行的程序行,则该行可用行内注释。
语法格式为: --注释语句
这种注释形式用来在一行内加以注释,可以与要执行的代码处在同一 行,也可以另起一行。从双连字符(--)开始到行尾均为注释。
2.块注释 如果所加的注释内容较长,则可使用块注释。浯法格式为:
不同数据库厂商的DBMS提供的SQL语言略有差别。 Microsoft SQL Server中使用的SQL语言称为T-SQL语言 (Transact-SQL语言)。
应用程序必须通过向服务器发送T-SQL语言才能实现与SQL Server的通信。
9.1 程序中的批处理、脚本、注释
9.1.1 批处理 9.1.2 脚本 9.1.3 注释
图9-1 在查询分析器中执行批处理
9.1.2 脚本
脚本是以文件存储的一系列SQL语句,即一系列按顺序提交 的批处理。
T-SQL脚本中可以包含一个或多个批处理。GO语句是批处理 结束的标志。如果没有GO语句,则将它作为单个批处理执行。
脚本可以通过集成管理器建立查询窗口来执行,这也是建立、 编辑和使用脚本的首选环境。在查询窗口中,不仅可以新建、 保存、打开、编辑脚本文件,还可以通过执行脚本来查看脚 本的运行结果,从而检验脚本内容是否正确。
9.2.1 事务概述
建立批处理时,使用GO语句作为批处理的结束标记。GO语句本身并不是TSQL语句的组成部分,而是由各种SQL Server命令实用程序(如:SSMS中的" 查询"窗口)识别的命令,它只是一个用于表示批处理结束的指令。当这些使 用程序读取到GO语句时,会把GO语句之前到上一个GO语句之间所有的语 句当做一个批处理,并将这些语句打包发送给服务器,不包含GO语句。
第九章 SQL Server程序设计
9.1 程序中的批处理、脚本、注释 9.2 程序中的事务 9.3 SQL Server变量 9.4 SQL语言流程控制 9.5 应用举例 练习题
目录
SQL语言是操作关系数据库的通用标准语言,能进行数据定 义、数据操纵、数据控制等与数据库有关的全部功能,是一 种非过程化的语言。
建立批处理时,应当注意以下几点:
CREATE DEFAULT、CREATE PROCEDURE、CREATE RULE、 CREATE TRIGGER及CREATE VIEW语句不能与其他语句组合 使用,放在一个批处理中。
不能在删除一个对象之后,在同一批处理中再次引用这个对象。
不能在一个批处理中引用其他批处理中所定义的变量。
有些任务不能由单独的T-SQL语句来完成,这时就要使用 SQL Server的批处理、脚本、存储过程、触发器等来组织多 条T-SQL语句来完成。
9.1.1 批处理
批处理是一条或多条T-SQL语句的集合,从应用程序一次性发送到SQL Server并由SOL Server编译成一个可执行单元,此单元称为执行计划。执行 计划中的语句每次执行一条。
9.1.3 注释
注释是指程序中用来说明程序内容的文字,它不能执行且不 参与程序的编译。
注释用于语句代码的说明,或部分语句的暂时禁用。 为程序加上注释不仅能增强程序的可读性,而且有助于日后
的管理和维护。 在程序中使用注释是一个程序员良好的编程习惯。 SQL Server支持两种形式的注释语句:
/*注释语句*/ 这种注释形式用来对多行加以注释,可以与要执行的代码处在同一行,
也可以另起一行,甚至可以放在可执行代码内。对于多行注释,必 须使用开始注释字符(/*)开始注释,使用结束注释字符(*/)结 束注释,“/*”和“*/”之间的全部内容都是注释部分。注意:整 个注释必须包含在一个批处理中,多行注释不能跨越批处理。
【例9.1】利用集成管理器的查询窗口执行两个批处理,用来显示系 部表中的信息及记录个数。 代码如下:
USE student
GO PRINT '系部表包含如下信息:' SELECT * FROM 系部 PRINT '系部表记录个数为:' SELECT COUNT(*) FROM 系部
GO 例中包含两个批处理,前者仅包含一个语句,后者包含四个语句, 其中,PRINT语句用于在消息页中显示char、varchar类型,或可 自动转换为字符串类型的数据。运行结果如图9-1所示。
【例9.2】注释语句举例。 /* 注释语句应用示例 块注释 */ USE student GO SELECT * FROM 学生 --行注释:检索所有学生的情况 GO
9.2 程序中的事务
9.2.1 事务布式事务 9.2.4 锁定
9.2 程序中的事务
事务是SQL Server中的执行单元,它由一系列TSQL语句组成。
这个执行单元要么成功完成所有操作,要么就是失 败,并将所做的一切复原。
事务机制的提出与实施是为了防止多用户访问同一 数据时造成的数据异常。
由于事务的执行机制,确保了数据能够正确地被访 问,避免因多个数据操作的并发或是在访问数据过 程中受到其他操作的干扰而造成数据不完整。
不能把规则和默认值绑定到表字段或用户自定义数据类型之后, 立即在同一个批处理中使用它们。
不能定义一个CHECK约束之后,立即在同一个批处理中使用该约 束。
不能在修改表中的一个字段名之后,立即在同一个批处理中引用 新字段名。
如果一个批处理中的第一个语句是执行某个存储过程的EXECUTE语 句,则EXECUTE关键字可以省略;如果该语句不是第一个语句, 则必须使用EXECUTE关键字,EXECUTE可以省写为“EXEC”。
➢ 行注释 ➢ 块注释
1.行内注释 如果整行都是注释而并非所要执行的程序行,则该行可用行内注释。
语法格式为: --注释语句
这种注释形式用来在一行内加以注释,可以与要执行的代码处在同一 行,也可以另起一行。从双连字符(--)开始到行尾均为注释。
2.块注释 如果所加的注释内容较长,则可使用块注释。浯法格式为:
不同数据库厂商的DBMS提供的SQL语言略有差别。 Microsoft SQL Server中使用的SQL语言称为T-SQL语言 (Transact-SQL语言)。
应用程序必须通过向服务器发送T-SQL语言才能实现与SQL Server的通信。
9.1 程序中的批处理、脚本、注释
9.1.1 批处理 9.1.2 脚本 9.1.3 注释
图9-1 在查询分析器中执行批处理
9.1.2 脚本
脚本是以文件存储的一系列SQL语句,即一系列按顺序提交 的批处理。
T-SQL脚本中可以包含一个或多个批处理。GO语句是批处理 结束的标志。如果没有GO语句,则将它作为单个批处理执行。
脚本可以通过集成管理器建立查询窗口来执行,这也是建立、 编辑和使用脚本的首选环境。在查询窗口中,不仅可以新建、 保存、打开、编辑脚本文件,还可以通过执行脚本来查看脚 本的运行结果,从而检验脚本内容是否正确。
9.2.1 事务概述
建立批处理时,使用GO语句作为批处理的结束标记。GO语句本身并不是TSQL语句的组成部分,而是由各种SQL Server命令实用程序(如:SSMS中的" 查询"窗口)识别的命令,它只是一个用于表示批处理结束的指令。当这些使 用程序读取到GO语句时,会把GO语句之前到上一个GO语句之间所有的语 句当做一个批处理,并将这些语句打包发送给服务器,不包含GO语句。
第九章 SQL Server程序设计
9.1 程序中的批处理、脚本、注释 9.2 程序中的事务 9.3 SQL Server变量 9.4 SQL语言流程控制 9.5 应用举例 练习题
目录
SQL语言是操作关系数据库的通用标准语言,能进行数据定 义、数据操纵、数据控制等与数据库有关的全部功能,是一 种非过程化的语言。
建立批处理时,应当注意以下几点:
CREATE DEFAULT、CREATE PROCEDURE、CREATE RULE、 CREATE TRIGGER及CREATE VIEW语句不能与其他语句组合 使用,放在一个批处理中。
不能在删除一个对象之后,在同一批处理中再次引用这个对象。
不能在一个批处理中引用其他批处理中所定义的变量。
有些任务不能由单独的T-SQL语句来完成,这时就要使用 SQL Server的批处理、脚本、存储过程、触发器等来组织多 条T-SQL语句来完成。
9.1.1 批处理
批处理是一条或多条T-SQL语句的集合,从应用程序一次性发送到SQL Server并由SOL Server编译成一个可执行单元,此单元称为执行计划。执行 计划中的语句每次执行一条。
9.1.3 注释
注释是指程序中用来说明程序内容的文字,它不能执行且不 参与程序的编译。
注释用于语句代码的说明,或部分语句的暂时禁用。 为程序加上注释不仅能增强程序的可读性,而且有助于日后
的管理和维护。 在程序中使用注释是一个程序员良好的编程习惯。 SQL Server支持两种形式的注释语句:
/*注释语句*/ 这种注释形式用来对多行加以注释,可以与要执行的代码处在同一行,
也可以另起一行,甚至可以放在可执行代码内。对于多行注释,必 须使用开始注释字符(/*)开始注释,使用结束注释字符(*/)结 束注释,“/*”和“*/”之间的全部内容都是注释部分。注意:整 个注释必须包含在一个批处理中,多行注释不能跨越批处理。
【例9.1】利用集成管理器的查询窗口执行两个批处理,用来显示系 部表中的信息及记录个数。 代码如下:
USE student
GO PRINT '系部表包含如下信息:' SELECT * FROM 系部 PRINT '系部表记录个数为:' SELECT COUNT(*) FROM 系部
GO 例中包含两个批处理,前者仅包含一个语句,后者包含四个语句, 其中,PRINT语句用于在消息页中显示char、varchar类型,或可 自动转换为字符串类型的数据。运行结果如图9-1所示。
【例9.2】注释语句举例。 /* 注释语句应用示例 块注释 */ USE student GO SELECT * FROM 学生 --行注释:检索所有学生的情况 GO
9.2 程序中的事务
9.2.1 事务布式事务 9.2.4 锁定
9.2 程序中的事务