T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版
命名规则
- 开头不能是数字、空格或特殊符号
- 首字符后可以包含字母、数字、汉字、_@#
- 不能是系统保留字
全局变量
以 @@开头 由 SQL Server 内置的都能访问的变量 。不能修改和创建,只能读取。全局变量全局有效
@@ERROR -- 返回执行的上一个T-SQL语句的错误号@@IDENTITY -- 返回插入到表的IDENTITY列的最后一个值@@LANGUAGE -- 返回当前所用语言的名称@@MAX_CONNECTIONS -- 返回Sql Server实例允许同时进行的最大用户连接数@@ROWCOUNT -- 返回上一次语句影响的数据行的行数@@SERVERNAME -- 返回运行Sql Server的本地服务器的名称@@SERVICENAME -- 返回Sql Server正在其下运行的注册表项的名称@@TIMETICKS -- 返回每个时钟周期的微秒数@@TRANCOUNT -- 返回当前连接的活动事务数@@VERSION -- 返回当前安装的日期、版本和处理器类型
局部变量
定义变量
定义局部变量,以 DECLARE 进行定义,变量名必须以@开头。
DECLARE @变量名 变量类型 = 变量值; -- 可以不赋予变量值
变量赋值
- SELECT 赋值 ```plsql DECLARE @变量名 = 0; — 定义变量,初始化值
SELECT @变量名 = 值; — 直接赋值
SELECT @a变量名 = 列名 FROM 表名; — 通过查询语句进行赋值
- SET 赋值```plsqlSET @变量名 = 值; -- 不可通过查询语句进行赋值
流程控制
IF 结构
IF(...)BEGINSQL 语句体ENDELSE IF(...)BEGINSQL 语句体END
- IF 后面的括号可以省略,但是如果是 SELECT语句就不可以
- BEGIN…END 相当于 {}
CASE 结构
- 函数用法
CASE 字段WHEN 条件1 THEN 结果WHEN 条件2 THEN 结果ELSE 结果END
CASEWHEN 条件1, [条件2] THEN 结果WHEN 条件2, [条件2] THEN 结果ELSE 结果END
CASE 结构只返回第一个符合条件的值,剩下的 CASE 部分将会被自动忽略
- 行转列
SELECT MAX(CASE 被转行名 WHEN N'转列名' THEN 行名 ELSE 0 END) AS 转列名 FROM 表名;
SELECT * FROM 表名 PIVOT(MAX(行名) FOR 被转行名 IN (被转字段, ..))
WHILE 结构
HHILE(...)BEGINSQL 语句体BREAK/CONTINUE/RETURNEND
- RETURN: 从查询或者过程中无条件退出
- BREAK: 推出循环
- CONTINUE: 重新开始循环,在 CONTINUE 关键字之后的任何语句都被忽略
