T-SQL简介

是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量、运算符、函数、流程控制和注释等语言元素。

T-SQL语句分类

1.变量声明:T-SQL语句中可以使用两种类型的变量:局部变量(标识符:@)和全局变量(标识符:@@)

2.数据定义语言(Data Definition Language,DDL),用来建立数据库及数据库对象,绝大部分以CREATE开头.

3.数据控制语言(Data Control Language,DCL),用来控制数据库组件的存取许可,权限等命令.

4.数据操作语言(Data Manipulation Language,DML),用来操作数据库中数据的命令(SELETCT,UPDATE等).

5.流程控制语言(Flow Control Language,FCL),用于控制应用程序流程的语句(IF,CASE等).

T-SQL中的注释

1.嵌入行内的注释语句: 用  --

2.块注释语句:用   " /* " 和 " */ "

T-SQL中的批处理

包含一条或多条T-SQL语句的语句组,这组语句从应用程序一次性地发送到SQLServer服务器执行.SQL Server服务器将批处理语句编译成一个可执行单元,这种单元称为执行单元.

在语句末尾添加"GO"标志着批处理的结束.

变量

1.局部变量

1.声明变量

DECLARE {@变量名 数据类型 [,...n]}

2.变量赋值

SET @变量名 = 值
SELECT @变量名 = 值

set一次只能赋一个值,select一次可以赋多个值

3.局部变量的作用域

从声明变量开始的地方到声明变量的批处理或存储过程的结尾.

4.局部变量的应用

(1)作为计数器计算循环执行的次数或控制循环执行的次数.

(2)保存数据值以供控制语言测试.

(3)保存存储过程要返回的数据值或函数返回值.

2.全局变量

(1)全局变量不是由用户的程序定义的,它们是在服务器级定义的.

(2)用户只能使用预先定义的全局变量.

(3)引用全局变量时,必须以标记符"@@"开头.

常用全局变量

@@ERROR 返回执行上一个T-SQL语句的错误代码数量,并覆盖上上次的错误代码的次数
@@IDENTITY 返回上次插入的标识值,并覆盖上上次的标识值
@@ROWCOUNT 返回受上一语句影响的行数.并覆盖上上次的行数记录
@@SERVERNAME 返回运行SQL Server的本地服务器的名称

 

 

输出语句

PRINT语句:以文本形式输出.

语法:

PRINT {字符串 | 变量 | 函数 | 字符串表达式}

SELECT语句:以网格形式输出.

T-SQL的流程控制

IF...ELSE语句

条件判断语句.

语法:

IF(条件表达式)
    语句或语句块
ELSE
    语句或语句块

定义语句块,使用控制流程关键字BEGIN和END.

语法:

IF(条件表达式)
    BEGIN
        ...语句
    END
ELSE
    BEGIN
        ...语句
    END

IF...ELSE可以嵌套使用,而且嵌套层数没有限制.

CASE语句

格式一:简单CASE格式:将某个表达式与一组简单表达式进行比较,以确定结果.

语法:

CASE 测试表达式
    WHEN 表达式 THEN 结果表达式1
    [...n]
    [ELSE 结果表达式n]
END

格式二:搜索CASE格式:计算一组布尔表达式,以确定结果.

语法:

CASE
    WHEN 布尔表达式 THEN 结果表达式1
    [...n]
    [ELSE 结果表达式n]
END

WHILE语句

WHILE 布尔表达式
    {语句或语句块}
        [BREAK]
    {语句或语句块}
        [CONTINUE]
    {语句或语句块}

若要定义语句块,则需要使用BEGIN和END将语句括起来.

使用子查询

常用的子查询有:

使用比较运算符(>,<,=等)的子查询:引入的子查询必须返回单个值而不是值列表.

IN  和 NOT IN 子查询:引入的子查询结果是包含零个值或多个值的列表.

EXISTS 和 NOT EXISTS子查询:子查询返回的行是否存在.

语法:

WHILE [NOT] EXISTS (子查询)