ch7TransactSQL编程

上传人:新** 文档编号:569309091 上传时间:2024-07-28 格式:PPT 页数:57 大小:491.50KB
返回 下载 相关 举报
ch7TransactSQL编程_第1页
第1页 / 共57页
ch7TransactSQL编程_第2页
第2页 / 共57页
ch7TransactSQL编程_第3页
第3页 / 共57页
ch7TransactSQL编程_第4页
第4页 / 共57页
ch7TransactSQL编程_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《ch7TransactSQL编程》由会员分享,可在线阅读,更多相关《ch7TransactSQL编程(57页珍藏版)》请在金锄头文库上搜索。

1、回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程第7章 Transact-SQL编程 本本章章主主要要内内容容是是批批处处理理、流流程程控控制制、事事务务处处理理、锁锁、游游标标在在内内的的Transact-SQLTransact-SQL语语言言的的程程序序设设计计知知识识,它它们们是是灵灵活活应应用用Transact-SQLTransact-SQL语语句句的的关关键键。通通过过本本章章学学习习,掌掌握握Transact-SQLTransact-SQL编编程程的的基基础础知知识识、基基本本语语句句;掌掌握握各各类类系系统统函函数数;

2、理理解解事事务务、游游标标、锁锁等等的的基基本本原原理理;对对系系统统函函数数、事事务务、锁和游标进行简单的运用。锁和游标进行简单的运用。 回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.1 批处理、脚本和注释批处理批处理是从客户机传递到服务器上的一组完整的数据和SQL命令(可以是一条也可以包含多条SQL命令)。SQL Server将批处理的语句编译为一个可执行单元,称为执行计划。执行计划中的语句每次执行一条。回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.1 批

3、处理、脚本和注释脚本脚本这个词通常是指一起使用的一串SQL语句,用以完成一些有用的目标。脚本既可以简单到只有一条查询语句,也可以复杂到由很多查询组成的用于创建整个数据库的一组命令。SQL Server客户端与管理工具具有为任何对象或者对象组合生成脚本的能力,甚至可以生成重建整个数据库的脚本。脚本通常保存在以SQL作为扩展名的文件中,这种文件是简单的纯文本文件。脚本可以用记事本或者其他文本编辑器创建、编辑。回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.1 批处理、脚本和注释注释注释是程序代码中不执行的文本字符串(也称为注解)。使

4、用注释对代码进行说明,不仅能使程序易读易懂,而且有助于日后的管理和维护。注释通常用于记录程序名称、作者姓名和主要代码更改的日期。注释还可以用于描述复杂的计算或者解释编程的方法。注释通常有两种形式:头块和行内注释。头块是写在诸如存储过程或者用户自定义函数这样的脚本对象之前的一块正式的行文。头块应该符合标准格式,并包含如下信息:脚本对象的名字、设计人员与程序员的名字、联系方式、创建日期、修改日期与注解、关于这段程序的说明。回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.2 常量和变量 常量,也称为字面值或标量值,是表示一个特定数据值

5、的符号。常量的格式取决于它所表示的值的数据类型。变量,是一种语言中必不可少的组成部分。Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.2 常量和变量 常量1 字符串常量2Unicode字符串3二进制常量4bit常量5datetime常量回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.2 常量和变量 常量 6integer常量7decimal常量8float和

6、real常量9money常量10uniqueidentifier常量回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.2 常量和变量 局部变量局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量被引用时要在其名称前加上标志“”,而且必须先用DECLARE命令定义后才可以使用。定义局部变量的语法形式如下:DECLAER local_variable data_type,n其中:local_variable用于指定局部变量的名称,变量名必须以符号开头,并且局部变量名必须符合SQL Server的命名规则。d

7、ata_type用于设置局部变量的数据类型及其大小,data_type可以是任何由系统提供的或用户定义的数据类型。但是,局部变量不能是text、ntext或image数据类型。回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.2 常量和变量 局部变量使用DECLARE命令声明并创建局部变量之后,会将其初始值设为NULL,如果想要设定局部变量的值,必须使用SELECT命令或者SET命令。其语法形式为:SET local_variable=expression或者或者SELECT local_variable=expression ,

8、.n 其中:local_variable是赋值并声明的局部变量。Expression是任何有效的SQL Server表达式。【例7-2】创建一个myvar变量,然后将一个字符串值放在变量中,最后输出myvar变量的值。DECLARE myvar char(20) -声明变量select myvar = This is a test -变量赋值select myvar -通过select语句输出变量myvar回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.2 常量和变量 全局变量除了局部变量之外,SQL Server系统本身还提供

9、了一些全局变量。全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。在使用全局变量时应该注意以下几点:全局变量不是由用户的程序定义的,它们是在服务器级定义的。用户只能使用预先定义的全局变量。引用全局变量时,必须以标记符“”开头。局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL

10、 Transact-SQL编程编程7.3 流程控制语句流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 2005中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。主要包括:n BEGINEND语句块n IF.ELSE语句n CASE语句n WAITFOR语句n WHILE语句n GOTO语句n RETURN语句回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.3 流程控制语句BEGINEND语句块BEGINEND语句能够将多个Transact-SQL语句组合成一个语句块,并将它们视为

11、一个单元处理,常常用在象IFELSE这样的分支语句中,或While语句这样的循环语句中,当分支或循环体的语句超过一个时,就用BEGINEND将它们括起来,当作一个语句块看待。其语法形式为:BEGIN sql_statement | statement_block END其中:sql_statement | statement_block是任何有效的Transact-SQL语句或以语句块定义的语句分组。回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.3 流程控制语句IF.ELSE语句IFELSE语句是条件判断语句,其中ELSE子句

12、是可选的,最简单的IF语句没有ELSE子句部分。IFELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQL Server允许嵌套使用IFELSE语句,而且嵌套层数没有限制。IFELSE语句的语法形式IF Boolean_expression sql_statement | statement_block ELSE sql_statement | statement_block其中:sql_statement | statement_block是任何有效的Transact-SQL语句或以语句块定义的语句分组。Boolean_expression返回TRUE或FALS

13、E的表达式。如果条件表达式中含有SELECT语句,必须用圆括号将SELECT语句括起来。示例:将将Stud表中姓名为表中姓名为“陈飞陈飞”的学生的姓名改为的学生的姓名改为“程程飞飞”,并显示相应提示,并显示相应提示USE StudIF EXISTS(SELECT * FROM stu WHERE stuName=陈飞陈飞) -进行条件判断进行条件判断BEGIN -符合条件执行下面处理符合条件执行下面处理UPDATE stu SET stuName=程飞程飞 WHERE stuName=陈飞陈飞 -改名改名PRINT 修改完成,陈飞已经改为程飞!修改完成,陈飞已经改为程飞! -打印打印提示提示E

14、NDELSE -不符合条件进行下面处理不符合条件进行下面处理PRINT 没有发现叫陈飞的学生没有发现叫陈飞的学生 -打印提示打印提示回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.3 流程控制语句CASE语句CASE语句可以计算多个条件式,并将其中一个符合条件的结果表达式返回。CASE语句按照使用形式的不同,可以分为简单CASE语句和CASE查询语句。语法形式分别为:1简单CASE语句CASE input_expressionWHEN when_expression THEN result_expression .n ELSE

15、else_result_expressionEND其中:input_expression为用做条件判断的表达式。when_expression用于与input_expression比较,值相等执行后面的result_expression语句。当没有一个when_expression与input_expression的值相等时,执行else_result_expression语句。示例:use studselect stuname ,sex=case stusex when 男男 then 男生男生 when 女女 then 女生女生end,stuaddr from student回目录回目录上

16、一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.3 流程控制语句CASE语句2CASE查询语句CASEWHEN Boolean_expression THEN result_expression .n ELSE else_result_expressionEND 其中:Boolean_expression是布尔表达式,如果值为TRUE,则执行它后的result_expression语句。如果没有一个Boolean_expression的值为TRUE,则执行else_result_expression语句。 示例:use studselect

17、stuname ,sex=case when stusex=男男 then 男生男生 when stusex=女女 then 女生女生end,stuaddr from student回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.3 流程控制语句 WAITFOR语句指定触发语句块、存储过程或事务执行的时间、时间间隔或事件。语法形式为:WAITFOR DELAY time | TIME time 其中:DELAY time 是延迟一段时间。TIME time 是等待到一个时刻。示例使用使用WAITFOR TIME语句,以便在晚上语

18、句,以便在晚上10:20执行存储过程执行存储过程update_all_stats。USE StudBEGINWAITFOR TIME 22:20EXECUTE update_all_stats-等到等到22:20,执行存储过程,执行存储过程updata_all_statsEND 回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.3 流程控制语句WHILE语句语句WHILECONTINUEBREAK语句用于设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。其中,CONTINUE语句可以使程序跳过CONTINU

19、E语句后面的语句,回到WHILE循环的第一行命令。BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。WHILE语句的语法形式为:WHILE Boolean_expressionbegin sql_statement | statement_block BREAK CONTINUE sql_statement | statement_block End其中:sql_statement | statement_block是任何有效的Transact-SQL语句或以语句块定义的语句分组。Boolean_expression返回TRUE或FALSE的表达式。BREAK用于退出最内层的WHI

20、LE循环。CONTINUE用于重新开始下一次WHILE循环。 示例:计算计算1到到100的累加和,并输出结果。的累加和,并输出结果。USE Studdeclare k int ,sum int -声明变量,声明变量,k为为循环变量,循环变量,sum为求和结果变量为求和结果变量select k=1, sum=0 -对变量赋初值对变量赋初值while k =100 - 循环条件判断循环条件判断begin -开始处理开始处理select sum=sum+k 循环计算求和结循环计算求和结果果select k=k+1 循环变量循环变量k加加1End -处理结束处理结束print sum - 输出变量输出

21、变量1到到100的累加和的累加和回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.3 流程控制语句GOTO语句GOTO语句可以使程序直接跳到指定的标有标号的语句可以使程序直接跳到指定的标有标号的位置处继续执行,位置处继续执行,GOTO语句和标号可以用在语句语句和标号可以用在语句块、批处理和存储过程中,标号可以为数字与字符块、批处理和存储过程中,标号可以为数字与字符的组合,在定义时必须以的组合,在定义时必须以“:”结尾,如:结尾,如:“a1:”。定义定义GOTO的标号,语法形式为:的标号,语法形式为:label:GOTO语句的语法形

22、式为:语句的语法形式为:GOTO label其中:其中:label是声明的标号。是声明的标号。示例:示例:用用GOTO语句计算语句计算1100之间能被之间能被7整除的数。整除的数。Declare a int -声明变量声明变量aSet a=0 -变量变量a初始化初始化Label_1: -定义标号定义标号Set a=a+1 -变量变量a加加1If(a%7=0) Print a -判断变量判断变量a是否被是否被7整除,如整除,如果被果被7整除,输出变量整除,输出变量a的值的值If(a0, 第一行开始正数的第n行; n0, 从当前行开始正数的第n行; n90 -进行判断BEGINROLLBACK T

23、RANSACTION -回滚事务,并输出消息PRINT 事务回滚ENDELSEBEGINCOMMIT TRANSACTION -事务提交,并输出消息PRINT 事务提交END回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.7 事务与锁 锁定与并发控制锁能够防止下述破坏事务完整性的情形:锁能够防止下述破坏事务完整性的情形:(1)更新的丢失更新的丢失(2)脏读(脏读(Dirty Read)(3)不一致读(不一致读(Nonrepeatable Read)(4)幻像读(幻像读(Phantom Read)回目录回目录上一页上一页下一页下一

24、页第第7 7章章 Transact-SQL Transact-SQL编程编程7.7 事务与锁 锁的类型 SQL Server有两种主要类型的锁:基本锁和专用有两种主要类型的锁:基本锁和专用锁。锁。 基本锁(基本锁(Basic Locks):):一般来说,读操作需要一般来说,读操作需要共享锁,写操作需要独占锁。共享锁,写操作需要独占锁。(1)共享锁()共享锁(Shared Locks)(2)独占锁()独占锁(Exclusive Locks)回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.7 事务与锁 锁的类型 SQL Server

25、有两种主要类型的锁:基本锁和专用锁。有两种主要类型的锁:基本锁和专用锁。 专用锁(专用锁(Special Situation Locks):):根据情况,根据情况,SQL Server可以使用其它类型的锁可以使用其它类型的锁 (1)意向锁()意向锁(Intent Locks) (2)更新锁()更新锁(Update Locks) (3)模式锁()模式锁(Schema Locks) (4)成批()成批(bulk)更新锁()更新锁(Bulk Update Locks)回目录回目录上一页上一页下一页下一页第第7 7章章 Transact-SQL Transact-SQL编程编程7.7 事务与锁 锁的相容性锁可以与其它锁相容,也可以不相容。锁之间存在一个相容性矩阵,它用来说明哪些锁与同一资源上得到的其它锁是相容的。锁是按照从最低限制性(共享)到最高限制性(独占)的顺序列出的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号