SQL 的服务器端编程---T-SQL简介
Transact-SQL 的缩写为T-SQL,T-SQL是Microsoft 公司的SQL Server的数据库语言,它是对标准SQL语言的扩充。
一、数据类型
数据库中的数据通常需要定义一个数据类型,不同DBMS具体支持的数据类型大体相同,稍有差异,具体可参阅相关手册。
二、变量
分为全局变量和局部变量。
1. 全局变量
T-SQL中的全局变量由系统定义和维护,全局变量前有两个 @@ 符号为标记,主要用于存放SQL Server工作状态信息。
全局变量可以使用select、print显示其当前值。
例如:
select @@SERVERNAME --返回运行SQL服务器名称。
select @@LANGUAGE --返回当前使用的语言名
select @@VERSION --返回SQL服务器安装的日期、版本和处理器类型
print APP_NAME () --当前会话的应用程序
print USER_NAME() --返回用户数据库用户名
print GETDATE() --当前时间
2. 局部变量
T-SQL中的局部变量是由用户定义和使用的变量,其作用范围仅仅局限在定义的T-SQL程序内。局部变量前以一个 @ 为标记。
(1)局部变量和其他高级语言一样,要先声明后使用,用DECLARE语句声明,它只能在声明该变量的批语句和过程体内使用。
格式:
DECLARE @local_variable data_type......
例如:
DECLARE @x int,@y char(20),@z int
(2) 局部变量的赋值
- SET语句赋值
在T-SQL程序中,用SET语句给局部变量赋值的语法如下:
SET @local_variable=expression
其中,@local_variable为局部变量的名称,expression为有效的表达式,表示将表达式的值赋予局部变量。 - select语句赋值
与上面的SET等效的赋值语句是将SET替换为SELECT。
SELECT @local_variable=expression - 通过查询语句赋值
很多情况下,局部变量需要获取通过select查询语句查询某个表后得到的字段值。
SELECT @empId = max(empId) --查出的值赋给局部变量
FROM tableTest
如果查询语句返回的值不止一行,而且变量引用一个非标量表达式,那么最后变量的值将是最后一行记录的特定字段的值。
(3) 局部变量也可以使用select、print显示其当前值。
例1 给x和y赋值
declare @x int,@y char(20),@z char(20)
select @x=100,@y='计算机',@z='数据库原理及应用'
set @x=200
set @y='数学'
SELECT @x=max(sage) FROM student
例2 接上面例子,显示x、y、z的当前值
SELECT @x,@y
Print @z
运行结果:
(4) 局部变量还可在游标使用时由FETCH INTO赋值。
三、流程控制语句
T-SQL主要的流程控制语句包括:
GO:批处理命令的结束标志;
IF ELSE :条件选择语句;
BEGIN ... END :定义语句块;
GOTO :无条件转移语句;
WHILE :循环语句;
BREAK :循环跳出语句;
CONTINUE :继续执行循环语句
WAITFOR : 设置语句执行的延迟时间;
RETURN:从查询或存储过程无条件跳出;
CASE 表达式 :按表达式返回条件分支;