SQL Server Transact-SQL编程详解

栗子
栗子
发布时间:2026-10-16 | 6人浏览过
原创

本文深入解析SQL Server中Transact-SQL(T-SQL)的编程核心,涵盖局部与全局变量的声明与赋值方法、Print与Select输出语句的区别,以及If-Else判断、While循环、Case分支等关键逻辑控制语句的使用技巧与完整示例。

T-SQL简介

Transact-SQL(T-SQL)是SQL Server数据库引擎的核心语言,主要用于管理数据库实例、创建和维护数据库对象,以及对数据进行增删改查(CRUD)操作。

变量管理与赋值

在T-SQL编程中,变量用于存储临时数据或作为过程执行的中间结果。根据作用域的不同,主要分为局部变量和全局变量。

第1步:局部变量的声明与使用

目的: 自定义并在当前脚本块内存储和管理数据。

入口/动作: 使用 DECLARE 关键字声明以 @ 开头的变量,并通过 SET 或 SELECT 进行赋值。

重要参数:

  • 声明语法:DECLARE @VariableName DataType
  • 赋值方式:SET @Var = Value(推荐用于常量赋值)或 SELECT @Var = Column FROM Table(用于查询赋值)
-- 声明并赋值示例
DECLARE @id CHAR(10),
        @age INT,
        @name VARCHAR(20);

-- SET 赋值给常量
SET @age = 55;
SET @name = 'jack';

-- SELECT 赋值给查询结果 (注意:若查询返回多行,仅取最后一行)
SELECT @name = name FROM student WHERE id = @id;

注意:使用 SELECT 从表查询赋值时,如果匹配到多行记录,系统将使用最后一条记录的值覆盖之前的值。

第2步:全局变量的调用

目的: 获取系统配置、统计信息或环境状态。

入口/动作: 全局变量以 @@ 开头,由系统预定义,直接引用即可读取其状态。

-- 常用全局变量示例
SELECT @@LANGUAGE;      -- 当前使用的语言环境
SELECT USER_NAME();     -- 当前用户名称

输出语句技巧

T-SQL提供了两种主要的输出来反馈执行结果或调试信息。

第3步:使用PRINT与SELECT输出

目的: 向客户端显示字符串信息或计算结果。

动作与区别:

  • PRINT:通常用于输出调试信息。非字符串类型需先用 CONVERT 转换。当字符串长度超过8000字符时,后续内容将被截断不显示。
  • SELECT:直接将结果集返回给用户。常用于展示数据或表达式结果,没有严格的8000字符限制(受限于网格显示)。
-- PRINT 示例 (需注意类型转换)
PRINT CONVERT(VARCHAR(10), @age) + '#' + @name;

-- SELECT 示例
SELECT 1 + 2 AS SumResult;
SELECT user_name() AS Current_User;

逻辑控制语句

T-SQL支持标准的流程控制结构,允许编写包含条件判断、循环和复杂逻辑的存储过程或脚本。

第4步:条件判断 IF-ELSE

目的: 根据特定条件的真假执行不同的代码块。

动作: 使用 IF ... ELSE IF ... ELSE 结构。

DECLARE @score INT = 85;

IF @score >= 90
    PRINT '优秀';
ELSE IF @score >= 60
    PRINT '及格';
ELSE
    PRINT '不及格';

第5步:循环控制 WHILE...

目的: 重复执行一段代码直到条件不满足。

动作: 结合 BREAK(退出循环)和 CONTINUE(跳过本次剩余代码进入下一次循环)使用。

DECLARE @i INT = 1;
WHILE (@i <= 5)
BEGIN
    IF @i = 3
    BEGIN
        SET @i = @i + 1;
        CONTINUE;  -- 跳过打印,直接进入下一轮
    END
    
    PRINT @i;
    SET @i = @i + 1;
END;

第6步:多分支处理 CASE

目的: 在查询或表达式中实现类似于多路分支的逻辑。

动作: 在 SELECT 语句中使用 CASE ... WHEN ... THEN ... ELSE ... END。

-- 将性别编码转换为中文描述
SELECT *,
       CASE sex
           WHEN 1 THEN '男'
           WHEN 0 THEN '女'
           ELSE '未知' 
       END AS Gender_Name
FROM student;

第7步:延时与批处理 WAITFOR

目的: 控制脚本执行的时间间隔。

动作: 使用 WAITFOR DELAY 指定等待的时间段。

-- 延时三秒后执行
WAITFOR DELAY '00:00:03';
PRINT '定时三秒后执行完成';

总结

掌握T-SQL的变量操作、输出反馈机制以及逻辑控制流,是编写高效、可靠的SQL Server数据库脚本的基础。通过合理利用 DECLARE、IF、WHILE 和 CASE 等语句,可以极大地扩展SQL在数据处理和自动化任务中的应用范围。以上就是SQL Server Transact-SQL编程详解的详细内容,更多关于SQL Server教程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表