详细分析Sql Server中的declare基本知识

目录

  • 前言
  • 1. 基本知识
  • 2. Demo
  • 3. 拓展Mysql
  • 4. 彩蛋

前言

实战探讨主要来源于触发器的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 > 100SET @Result = 'Above 100';
ELSESET @Result = '100 or Below';-- 使用变量
SELECT @Result AS 'Result';

截图如下:

在这里插入图片描述

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

-- 声明变量
DECLARE @Counter INT;
DECLARE @MaxCount INT;-- 赋值
SET @Counter = 1;
SET @MaxCount = 5;-- 循环
WHILE @Counter <= @MaxCount
BEGINPRINT '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:在条件语句中使用变量
sql
复制代码
– 声明并赋值变量
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()
BEGINDECLARE Counter INT DEFAULT 1;DECLARE MaxCount INT DEFAULT 5;-- 使用准备好的语句进行循环PREPARE stmt FROM 'SELECT ? AS Counter';WHILE Counter <= MaxCount DOEXECUTE 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 THENSET @Result = 'Above 100';
ELSESET @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 DOEXECUTE stmt USING @Counter;SET @Counter = @Counter + 1;
END WHILE;
DEALLOCATE PREPARE stmt;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/46185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合JAX-RS接口

目录 二、创建RESTful资源 三、注册JAX-RS资源 四、修改配置等信息 五、启动SpringBoot程序、访问服务 六、遇到的问题 七、与feign进行配合使用 1、接口定义 2、接口实现 3、注册资源 4、调用方web服务实现&#xff0c;跟注入普通服务一样 5、启动两个服务&#xff…

html5——表单

目录 表单基本结构 表单标签 常用表单元素 文本框 密码框 邮箱 单选按钮 复选框 文件域 隐藏域 列表框 多行文本域 lable标签 表单按钮 常用表单属性 只读与禁用 placeholder required pattern autofocus autocomplete 用于指定表单是否有自动完…

NoSQL之redis的配置与优化

一、redis数据库的基础介绍与对比 Redis(RemoteDictionaryServer&#xff0c;远程字典型)是一个开源的、使用C语言编写的NoSQL数据库。Redis 基于内存运行并支持持久化&#xff0c;采用 key-value(键值对)的存储形式&#xff0c;是目前分布式架构中不可或缺的一环。 1.非关系…

昇思25天打卡营-mindspore-ML- Day23-应用实践-RNN实现情感分类

学习了关于 RNN 算法及其应用。RNN&#xff0c;即循环神经网络&#xff0c;是一种专门用于处理序列数据的神经网络。其基本原理是通过循环连接&#xff0c;让网络能够记住之前的输入信息&#xff0c;并将其用于后续的计算&#xff0c;从而捕捉序列数据中的时间依赖关系。 RNN …

百日筑基第二十天-一头扎进消息队列3-RabbitMQ

百日筑基第二十天-一头扎进消息队列3-RabbitMQ 如上图所示&#xff0c;RabbitMQ 由 Producer、Broker、Consumer 三个大模块组成。生产者将数据发送到 Broker&#xff0c;Broker 接收到数据后&#xff0c;将数据存储到对应的 Queue 里面&#xff0c;消费者从不同的 Queue 消费数…

我的智能辅助大师-办公小浣熊

一、基本介绍 随着2022年ChatGPT为代表的AI工具对互联网领域进行第一次冲击后&#xff0c;作为一名对编程领域涉足不算特别深的一名程序员&#xff0c;对AI大模型的接触也真的不能算少了&#xff0c;这是时代的必然趋势。在此之前也曾接触过很多的AI工具&#xff0c;他们都能在…

【Vscode】显示多个文件 打开多个文件时实现标签栏多行显示

Vscode显示多个文件&VSCode打开多个文件时实现标签栏多行显示 写在最前面一、解决打开文件的时候只显示一个tab的办法解决办法如下&#xff1a; 二、文件标签栏多行显示设置步骤&#xff1a; &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时…

Service Mesh 是一种用于处理服务间通信的基础设施层

Service Mesh 是一种用于处理服务间通信的基础设施层&#xff0c;它通常与微服务架构一起使用&#xff0c;以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。Service Mesh 的一个流行实现是 Istio&#xff0c;它基于 Envoy 代理和 Kubernetes。 然而&#xff0…

电脑维护全攻略:让你的“战友”焕发新生

目录 电脑维护全攻略&#xff1a;让你的“战友”焕发新生 引言 方向一&#xff1a;了解你的“战友” 1.1 电脑品牌与型号的选择 1.2 电脑硬件配置的重要性 1.3 电脑软件配置的重要性 方向二&#xff1a;日常维护措施 2.1 定期清理与优化 2.2 保持良好的上网习惯 2.3 …

微服务-注册中心

一. 分布式系统架构与微服务 分布式系统架构和微服务是现代软件开发中常见的两种概念&#xff0c;它们通常结合使用来构建灵活、可扩展和高效的应用程序。 分布式系统架构&#xff1a; 分布式系统架构是指将一个单一的应用程序或服务拆分成多个独立的部分&#xff0c;这些部分…

社团信息管理系统

代码语言&#xff1a; python 第三方库&#xff1a; mysql tkinter PIL datetime 这是一个demo&#xff0c;用于数据库练手&#xff0c;逻辑及功能不全&#xff0c;仍需要补充 import mysql.connector import tkinter as tk from tkinter import messagebox from tkinter.ttk…

邮箱表单系统源码

邮箱表单简介 我们的邮箱表单系统是一个简洁高效的工具&#xff0c;旨在为用户提供一种便捷的方式来提交他们的邮箱地址。该系统可以用于订阅新闻通讯、注册活动、获取用户反馈等多种场景。 功能特点&#xff1a; 用户友好的界面&#xff1a; 表单设计简洁直观&#xff0c;用…

t-SNE降维可视化并生成excel文件使用其他画图软件美化

t-sne t-SNE&#xff08;t-分布随机邻域嵌入&#xff0c;t-distributed Stochastic Neighbor Embedding&#xff09;是由 Laurens van der Maaten 和 Geoffrey Hinton 于 2008 年提出的一种非线性降维技术。它特别适合用于高维数据的可视化。t-SNE 的主要目标是将高维数据映射…

修改vscode的字体为等宽字符

在文件——首选项——设置 中 搜索 Editor: Font Family 将内容改为下面的 Consolas, Courier New, monospace 之后重启Vscode就行了

初步探究Rust生态与图形界面编程

引言 Rust作为一种现代的、安全的系统编程语言&#xff0c;自2010年问世以来&#xff0c;逐渐在开发社区中崭露头角。它的内存安全保证、并发处理能力、以及无需垃圾回收机制的高性能特性&#xff0c;使得它成为了开发系统工具、网络服务、以及嵌入式系统的热门选择。然而&…

(五十三)第 8 章 动态存储管理(伙伴系统)

1. 背景说明 2. 示例代码 buddySystem.h // 伙伴系统实现头文件#ifndef BUDDY_SYSTEM_H #define BUDDY_SYSTEM_H#include "errorRecord.h"#define POWER_TIME 10 // 可利用空间总容量的 2 的幂次,子表的个数为 POWER_TIME + 1 #define MAX_USED_BLOCK_NUM 100 //…

我的 Java 面试“打怪升级”之路01

前言 在当今的科技行业&#xff0c;Java 作为一门广泛应用的编程语言&#xff0c;其相关的岗位竞争可谓十分激烈。作为一名求职者&#xff0c;经历 Java 面试就如同一场充满挑战的“打怪升级”游戏。在这里&#xff0c;我想和大家分享一下我在 Java 面试中的一些经历和感悟。 …

python求回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…

SwiftUI 截图(snapshot)视频画面的极简方法

功能需求 在 万物皆可截图:SwiftUI 中任意视图(包括List和ScrollView)截图的通用实现 这篇博文中,我们实现了在 SwiftUI 中截图几乎任何视图的功能,不幸的是它对视频截图却无能为力。不过别着急,我们还有妙招。 在上面的演示图片中,我们在 SwiftUI 中可以随心所欲的截图…

智能车的网络安全隐患及其防护技术

**题目&#xff1a;智能车的网络安全隐患及其防护技术** **摘要** 智能车的发展为人们的出行方式带来了革命性的变化&#xff0c;但也带来了网络安全隐患。本文分析了智能车的主要网络安全威胁&#xff0c;包括车辆通信系统、自动驾驶系统、以及车载娱乐系统的潜在风险。在此…