✍️
炼码教程 - SQL 边学边练
  • License
  • 介绍 Introduction
    • 目录 Content
  • Level 1
    • Hello SQL
    • 简单的 SELECT 语句
    • 简单的 INSERT 语句
    • 简单的 UPDATE 语句
    • 简单的 DELETE 语句
  • Level 2
    • 简单的数据库和数据表操作
      • 创建数据库
      • 创建数据表
      • 删除数据表
      • 删除数据库
    • 约束
      • 主键约束
      • 自增长约束
    • 常见数据类型
  • Level 3
    • SELECT进阶
      • WHERE 条件子句
      • ORDER BY 与 LIMIT
      • SELECT DISTINCT
    • Function 函数
      • AVG()
      • COUNT()
      • MAX()
      • MIN()
      • SUM()
      • ROUND()
      • NULL()
  • Level 4
    • Level 4 时间
  • Level 5
    • Level 5 多表单联合
    • 外键
    • 别名
    • 多表联结
      • INNER JOIN
      • LEFT JOIN
      • RIGHT JOIN
      • OUTER JOIN
  • Level 6
    • Level 6 临时表单
    • GROUP BY
    • HAVING
    • 子查询
      • SELECT 语句中的子查询
      • INSERT 语句中的子查询
      • UPDATE 语句中的子查询
      • DELETE 语句中的子查询
      • 多行子查询
      • 多列子查询
      • HAVING 子句中的子查询
      • 内联视图子查询
  • Level 7
    • Level 7 索引
  • Level 8
    • Level 8 事务 Transaction
  • Level 9
    • Level 9 复杂的SQL查询
  • Level MAX
    • Level 10 变量和循环
  • 附录 Appendix
    • 数据类型参考手册
    • 函数 Function
    • 通配符
    • 演示数据库
    • common
    • Bug 001
Powered by GitBook
On this page
  • 1. 变量
  • 1.1 变量是什么
  • 1.2 变量的使用
  • 2. FOR循环
  • 2.1 FOR实例

Was this helpful?

  1. Level MAX

Level 10 变量和循环

1. 变量

1.1 变量是什么

变量是保存特定类型的单个值的对象,例如整数,日期或变化的字符串。通常在以下情况下使用变量:

  • 作为循环计数器来计算循环执行的次数。

  • 保持要通过控制流语句(如WHILE)进行测试的值。

  • 存储函数或存储过程返回的值。

此外,变量分为局部变量和全局变量

局部变量是用户可自定义的变量,它的作用范围仅在程序内部。局部变量的名称是用户自定义的,命名的局部变量名要符合SQL标识符命名规则,局部变量名必须以@开头。

而全局变量是系统预定义的,返回一些系统信息,全局变量以两个@开头即(@@)开头。

1.2 变量的使用

1.2.1 局部变量声明

要声明变量,请使用DECLARE语句。

语法

DECLARE { @LOCAL_VARIABLE_NAME DataType [ = value ] }

其中 LOCAL_VARIABLE_NAME 为局部变量的名称,DataType为数据类型。

例如,以下语句声明了一个名为@SEL_TYPE的变量,变量类型为char ,长度为2

DECLARE  @SEL_TYPE char(2)

1.2.2 局部变量赋值

语法

SET @variable_name=value

或

SELECT @variable_name=value

两者的区别:SET赋值语句一般用于赋给变量一个指定的常量,SELECT赋值语句一般用于从表中查询出数据然后赋给变量。

1.2.3 局部变量实例

声明局部变量count,并赋值123

DECLARE @count int
SET @count=123

声明局部变量retCount,从TableA中将Returned值为0的数据个数赋值给变量retCount

DECLARE @retCount int; //声明一个变量@retCount
SELECT @retCount = count(*) FROM TableA WHERE Returned = 0 
--将查询到的count值赋值给变量@retCount

1.2.4 全局变量的声明和实例

1.2.4.1 全局变量的声明

由于全局变量是系统定义的,比如SQL SERVER有如下全局变量

@@ERROR --最后一个T-SQL错误的错误号
@@IDENTITY --最后一次插入的标识值
@@LANGUAGE --当前使用的语言名称
@@MAX_CONNECTIONS --可以创建的同时连接的最大数目
@@SERVERNAME --本地服务器的名称
@@VERSION --SQL Server的版本信息
@@rowcount --主要是返回上次sql语句所影响的数据行数

1.2.4.2 全局变量实例

-- 在查询分析器中运行的结果如下:

insert into tb_Student01
values('小明','85')
select @@identity as ‘学生编号’

-- 结果: 学生编号
-- 1 1006

2. FOR循环

在SQL中,我们并没有FOR循环,但是我们可以使用WHILE循环模拟FOR循环从而实现功能

语法

DECLARE @cnt INT = 0;

WHILE @cnt < cnt_total
BEGIN
   {...statements...}
   SET @cnt = @cnt + 1;
END;

其中,cnt_total记录了你希望循环执行的总次数,变量cnt记录了当前步骤为循环从0开始的执行第几轮循环

2.1 FOR实例

DECLARE @cnt INT = 0;

WHILE @cnt < 10
BEGIN
   PRINT 'Inside simulated FOR LOOP on TechOnTheNet.com';
   SET @cnt = @cnt + 1;
END;

PRINT 'Done simulated FOR LOOP on TechOnTheNet.com';
GO
PreviousLevel 9 复杂的SQL查询Next数据类型参考手册

Last updated 4 years ago

Was this helpful?