第七章 T-SQL语言
掌握T-SQL语言的构成
了解批处理的作用
掌握T-SQL语言中的全局变量和局部变量
掌握T-SQL语言中的常用运算符及其优先级
掌握T-SQL语言中的常用函数的格式及用法
掌握T-SQL语言中的流程控制语句的种类及用法
●    本章要点:
本章教学内容:
7.1 T-SQL 语言概述
7.2 事务 
7.3 语法规则
7.4 变量
7.5 运算符
7.6 函数
7.7 流程控制语句
7.1 T-SQL 语言概述
T-SQL语言是在SQL Server 2000中使用的程序设计语言。
T-SQL语言包括:
标准T-SQL语言部分
注释、变量、运算符、函数、流程控制语句、错误和消息的处理等
1. 批处理
批处理是从客户机传递到服务器上的一组完整的数据和SQL指令。
一个批处理中可以包含一条SQL指令,也可以包含多条SQL指令。
批处理的所有语句被作为一个整体,而被成组的分析、编译和执行。
指定批处理的方法:
应用程序作为一个执行单元发出的所有SQL语句构成一个批处理,并生成单个执行计划。
存储过程或触发器内的所有语句构成一个批处理。
由EXECUTE语句执行的字符串是一个批处理。
由sp_executesql系统存储过程执行的字符串是一个批处理。
将GO语句作为批处理的结束标志。
SQL Server服务器将批处理编译成一个可执行单元,称为执行计划。
2. 注释
注释是写在程序代码中的说明性文字,对程序的结构及功能进行文字说明。
注释内容不被系统编译,也不被程序执行。
使用注释的目的是为了能够使程序易读易懂,而且有助于日后的管理和维护。
两种类型的注释字符:
单行注释: “--” 注释语句写在注释符之后,以最近的回车符作为注释的结束标志。
多行注释:“/*  */”,注释语句写在其中间。
不能跨越批处理 ,整个注释必须包含在一个批处理内。
3. GOTO
用来改变程序执行的流程。
GOTO语句可在标签过程、批处理或语句块中的任何位置使用。
可嵌套使用。
注意:
尽量少使用GOTO语句,过多使用可使T-SQL批处理的逻辑难于理解。
4. RETURN语句
用于在任何时候从过程、批处理语句块中结束当前程序、无条件退出,而不执行其后语句,返回到上一个调用它的程序,在括号内可指定一个返回值。
语法:
RETURN  [integer_expression]
返回0值表成功,否则失败
当用于存储过程中,不能返回空值。
可以后续T-SQL中包含返回状态值,但格式输入必须为:EXECUTE @return_status=procedure_name
5. PRINT语句
trunc函数类型将用户定义的字符串作为一个消息返回客户端或应用程序,此语句接受任何字符串表达式。
语法:
PRINT ‘any ASCII text’|@local_variable|@@function|string_expressing
此语句返回一个用户自定义的信息。
7.2 事务
事务:是SQL Server中并发控制的基本单位,是一种机制,是一个不可分割的工作逻辑单元。
事务的属性:原子性、一致性、隔离性、持久性。
事务模式
事务分为:显式事务、隐式事务、自动提交事务。
显式事务:由用户定义其开始与结束。
语法:
BEGIN TRAN[SACTION] [ transaction_name |@tran_name_variable]
  COMMIT [ TRAN[SACTION] [ transaction_name |@tran_name_variable]  ]
隐式事务:指当前事务在提交或回滚后,自动启动新事务,即不需明确的begin transaction。
隐式事务模式生成连续的事务链。
通过set implicit_trasaction on/off打开或关闭隐式事务。
7.5  变量
变量有两种:
全局变量:由系统预先定义。
局部变量:由用户根据需要自己定义。
7.3.1 全局变量
记录SQL Server服务器的活动状态。
以@@字符开头,由系统定义和维护。
用户只能使用,不能修改。
作用范围是整个SQL Server系统,任何程序都可以随时调用它们。
用户可以在程序中用全局变量来测试系统的设定值或者是T-SQL命令执行后的状态值。
7.3.2 局部变量
是用户在使用过程中根据需要定义的。
作用范围仅限于定义此变量的批处理内部。
局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。
利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。
1.局部变量的定义
格式:
DECLARE {@local_variable data_type} […n]
2.局部变量的赋值
格式:
    SET {@local_variable =expression}
或者
    SELECT {@local_variable =expression}
7.4  运算符
运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进行比较。
在SQL Server 2000中,运算符主要有以下六大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符以及字符串串联运算符。
7.4.1 算术运算符
算术运算符包括加(+)、减(—)、乘(*)、除(/)和取模(%)。
算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。
7.4.2 赋值运算符
只有一个赋值运算符,即等号(=)。
赋值运算符使我们能够将数据值指派给特定的对象。
使用赋值运算符在列标题和为列定义值的表达式之间建立关系。
7.4.3 位运算符
位运算符使我们能够在整型数据或者二进制数据(image 数据类型除外)之间执行位操作。
在位运算符左右两侧的操作数不能同时是二进制数据。
表7-1  位运算符
               
               
        &(按位 AND
    按位 AND(两个操作数)
        |(按位 OR
    按位 OR(两个操作数)
      ^(按位互斥 OR
    按位互斥 OR(两个操作数)
7.4.4 比较运算符
比较运算符用于比较两个表达式的大小或是否相同,其比较的结果是布尔值,即TRUE(表示表达式的结果为真)、FALSE(表示表达式的结果为假)以及UNKNOWN。
除了 text、ntext 或 image 数据类型的表达式外,比较运算符可以用于所有的表达式。
7.4.5 逻辑运算符
逻辑运算符可以把多个逻辑表达式连接起来。
逻辑运算符包括AND、OR和NOT等运算符。
逻辑运算符和比较运算符一样,返回带有 TRUE 或 FALSE 值的布尔数据类型。
7.4.6 字符串串联运算符
字符串串联运算符允许通过加号 (+) 进行字符串串联,这个加号即被称为字符串串联运算符。
例如对于语句SELECT ‘abc’+’def’,其结果为abcdef。
7.4.7 运算符的优先级
等级从高到低
括号:();
乘、除、求模运算符:*、/、%;
加减运算符:+、- ;
比较运算符:=、>、<、>=、<=、<>、!=、!>、!<;
位运算符:^、&、|;
逻辑运算符:NOT;
逻辑运算符:AND;
逻辑运算符:OR。
7.5 函数
函数用函数名来标识,在函数之后有一对小括号。
大部分函数在小括号中需要一个或者多个参数。
7.5.1 系统函数
系统函数用于返回有关SQL Server 2000 系统、用户、数据库和数据库对象的信息。
7.5.2 字符串函数
字符串函数可以对二进制数据、字符串和表达式执行不同的运算。
可以在SELECT语句的SELECT和WHERE子句及表达式中使用字符串函数。
7.5.3 日期和时间函数
用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。
7.5.4 数据函数
用于对数字表达式进行数学运算并返回运算结果。
可以对数字数据(decimal、integer、float、real、money、smallmoney、smallint、inyint)进
行处理。
7.5.5 转换函数
转换分为:
隐式转换
显式转换
隐式转换:当系统能够自动处理某些数据类型的转换时,称为转换。
显式转换:
CONVERT
CAST
CONVERT:允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把日期转换成不同的样式。
格式:
  CONVERT (data_type[(length)],expression[,style])
style能以不同的格式显示日期和时间。
CAST:允许把一种数据类型强制转换为另一种数据类型。
格式:
  CAST (expression as data_type)
7.5.6 用户自定义函数
可以包含0个或多个参数,函数的返回值可以是数值,还可以是一个表。
创建返回数值的用户自定义函数
格式:
    CREATE FUNCTION 函数名称
    (形式参数名称AS数据类型)
    RETURNS 返回数据类型
    BEGIN
    函数内容
    RETURN 表达式
    END
调用用户自定义函数
格式:
    变量=用户名.函数名称(实际参数列表)
说明:
在调用返回数值的用户自定义函数时,一定要在函数名称的前面加上用户名,否则会出现“‘函数名称’不是可以识别的函数名”的错误提示。
7.6 流程控制语句
流程控制语句是指那些用来控制程序执行和流程分支的命令。
在SQL Server 2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。
7.6.1 BEGIN…END语句
BEGIN…END语句能够将多个Transact-SQL语句组合成一个语句块,并将它们视为一个单元处理。
在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGIN…END语句。
格式:
  BEGIN
    { sql_statement | statement_block    }
END
7.6.2 IF…ELSE语句
IF…ELSE语句是条件判断语句,当条件成立时执行某段程序,条件不成立时执行另一段程序。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。