探讨Sql Server中的declare基本知识

 更新时间:2024年07月10日 16:39:27   作者:码农研究僧  
这篇文章主要探讨Sql Server中的declare基本知识,实战探讨主要来源于触发器的Demo,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

前言

实战探讨主要来源于触发器的Demo

1. 基本知识

@DECLARE 语句用于声明变量

声明的变量可以用于存储临时数据,并在 SQL 查询中多次引用

  • 声明变量:使用 DECLARE 语句声明一个或多个变量
  • 变量命名:变量名以 @ 开头,后面跟随变量名
  • 变量类型:必须为每个变量指定数据类型,如 INT、VARCHAR、DATE 等
  • 赋值:使用 SET 语句或在声明时直接赋值
  • 使用变量:在查询中引用变量,可以进行各种操作,如条件判断、循环等

基本的语法如下:

DECLARE @variable_name datatype;

2. Demo

示例 1:简单声明和赋值

-- 声明一个整数变量,还可直接这样定义 DECLARE @MyNumber INT=10;
DECLARE @MyNumber INT;
-- 为变量赋值
SET @MyNumber = 10;
-- 使用变量
SELECT @MyNumber AS 'My Number';

截图如下:

示例 2:在查询中使用变量

-- 声明变量
DECLARE @FirstName VARCHAR(50);
DECLARE @LastName VARCHAR(50);
DECLARE @FullName VARCHAR(100);
-- 赋值
SET @FirstName = 'John';
SET @LastName = 'Doe';
-- 连接字符串
SET @FullName = @FirstName + ' ' + @LastName;
-- 使用变量
SELECT @FullName AS 'Full Name';

截图如下:

示例 3:在条件语句中使用变量

-- 声明变量
DECLARE @Threshold INT;
DECLARE @Result VARCHAR(50);
-- 赋值
SET @Threshold = 50;
-- 条件判断
IF @Threshold > 100
    SET @Result = 'Above 100';
ELSE
    SET @Result = '100 or Below';
-- 使用变量
SELECT @Result AS 'Result';

截图如下:

示例 4:在循环中使用变量

-- 声明变量
DECLARE @Counter INT;
DECLARE @MaxCount INT;
-- 赋值
SET @Counter = 1;
SET @MaxCount = 5;
-- 循环
WHILE @Counter <= @MaxCount
BEGIN
    PRINT 'Counter is ' + CAST(@Counter AS VARCHAR(10));
    SET @Counter = @Counter + 1;
END

截图如下:

3. 拓展Mysql

对于Mysql的临时变量基本知识如下

  • 声明变量:使用 SET 或 SELECT … INTO 语句来声明变量
  • 变量命名:变量名以 @ 开头,后面跟随变量名
  • 变量类型:MySQL 中的变量不需要显式声明数据类型
  • 使用变量:在查询中引用变量,可以进行各种操作,如条件判断、循环等

基本语法如下:

SET @variable_name = value;

与上面同理,Demo如下:

示例 1:简单声明和赋值

-- 声明并赋值变量
SET @MyNumber = 10;
-- 使用变量
SELECT @MyNumber AS 'My Number';

截图如下:

示例 2:在查询中使用变量

-- 声明并赋值变量
SET @FirstName = 'John';
SET @LastName = 'Doe';
-- 连接字符串
SET @FullName = CONCAT(@FirstName, ' ', @LastName);
-- 使用变量
SELECT @FullName AS 'Full Name';

截图如下:

示例 3:在条件语句中使用变量

– 声明并赋值变量
SET @Threshold = 50;
– 条件判断
IF @Threshold > 100 THEN
SET @Result = ‘Above 100';
ELSE
SET @Result = ‘100 or Below';
END IF;
– 使用变量
SELECT @Result AS ‘Result';

截图如下:

示例 4:在循环中使用变量 (必须将循环逻辑封装在存储过程(或存储函数)中)

DELIMITER $$
CREATE PROCEDURE LoopExample()
BEGIN
    DECLARE Counter INT DEFAULT 1;
    DECLARE MaxCount INT DEFAULT 5;
    -- 使用准备好的语句进行循环
    PREPARE stmt FROM 'SELECT ? AS Counter';
    WHILE Counter <= MaxCount DO
        EXECUTE stmt USING @Counter;
        SET Counter = Counter + 1;
    END WHILE;
    DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
-- 调用存储过程
CALL LoopExample();

截图如下:

4. 彩蛋

以下为错误的Demo

对于循环遍历,Mysql中不适合使用if,需要使用case

-- 声明并赋值变量
SET @Threshold = 50;
-- 条件判断
IF @Threshold > 100 THEN
    SET @Result = 'Above 100';
ELSE
    SET @Result = '100 or Below';
END IF;
-- 使用变量
SELECT @Result AS 'Result';

以及不可直接使用如下方式

-- 声明并赋值变量
SET @Counter = 1;
SET @MaxCount = 5;
-- 使用准备好的语句进行循环
PREPARE stmt FROM 'SELECT ? AS Counter';
WHILE @Counter <= @MaxCount DO
    EXECUTE stmt USING @Counter;
    SET @Counter = @Counter + 1;
END WHILE;
DEALLOCATE PREPARE stmt;

到此这篇关于Sql Server中的declare基本知识的文章就介绍到这了,更多相关Sql Server declare内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySql更新优化策略

    MySql更新优化策略

    数据库优化是一项很复杂的工作,因为这关系到对系统优化的理解。mysql更新优化是程序员必掌握的知识,这篇文章主要介绍mysql更新优化的策略,需要的朋友可以参考下
    2015-08-08
  • SQLSERVER 出现死锁查找方法和解决办法(推荐)

    SQLSERVER 出现死锁查找方法和解决办法(推荐)

    这篇文章主要介绍了SQLSERVER 出现死锁查找方法和解决办法(推荐),文中讲解了查询死锁语句,杀死死锁的解决方法,需要的朋友可以参考下
    2024-02-02
  • SqlServer 数据库 三大  范式

    SqlServer 数据库 三大 范式

    本文将基于三大范式原则,结合具体的实例做简要分析,对SqlServer 数据库 三大 范式相关知识感兴趣的朋友一起看看吧
    2019-11-11
  • SQLServer 清理日志的实现

    SQLServer 清理日志的实现

    本文主要介绍了SQLServer 清理日志的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 使用mongovue把sqlserver数据导入mongodb的步骤

    使用mongovue把sqlserver数据导入mongodb的步骤

    MongoVUE免费版支持MySQL导入Mongo,所以思路是SQLServer导入MySQL,再从MySQL导入Mongo。
    2014-01-01
  • SQL Server快速彻底卸载实例方法分享

    SQL Server快速彻底卸载实例方法分享

    最近在安装了SQL Server后,当由于某些原因我们需要卸载它时,我们应该怎么操作呢?这篇文章主要给大家介绍了关于SQL Server快速彻底卸载的相关资料,需要的朋友可以参考下
    2023-10-10
  • SQL分组排序去重复的小实例

    SQL分组排序去重复的小实例

    这篇文章介绍了SQL分组排序去重复的实例代码,有需要的朋友可以参考一下
    2013-07-07
  • 一些SQL Server存储过程参数及例子

    一些SQL Server存储过程参数及例子

    下面是sql server多版本下的存储过程参数及例子
    2008-08-08
  • Mysql中悲观锁与乐观锁应用介绍

    Mysql中悲观锁与乐观锁应用介绍

    乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展.这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人,文中详细介绍了悲观锁与乐观锁,需要的朋友可以参考下
    2022-08-08
  • SQL Server 数据库分离与附加(图文教程)

    SQL Server 数据库分离与附加(图文教程)

    SQL Server 数据库分离与附加(图文教程),需要的朋友可以参考一下
    2013-05-05

最新评论