当前位置: 首页 > article >正文

数据库局部变量,全局变量,流程控制

前言知识点什么时候用局部变量调试脚本、存储过程参数、临时存值全局变量获取执行状态、错误处理IF/WHILE条件判断、批量数据处理视图简化复杂查询、统一查询逻辑索引加快查询速度函数封装可复用的计算逻辑存储过程封装复杂业务、批量操作一SQL局部变量变量1.是什么以开头是你自己在 SQL 脚本里定义的 “临时小盒子”只能在当前这一段 SQL 里用GO之后就失效了作用存一个值后面反复用避免到处写死数字 / 字符串2.三步使用语法-- ① 定义变量DECLARE 变量名 数据类型 DECLARE stuId INT; -- 存数字 DECLARE stuName NVARCHAR(20); -- 存中文/字符串 -- ② 给变量赋值两种方式 SET stuId 1; -- 方式1SET赋值推荐 SELECT stuName 张三; -- 方式2SELECT赋值 -- ③ 使用变量直接写在SQL里 SELECT * FROM Student WHERE id stuId AND name stuName;3.常用场景调试时把条件统一改成变量改一次全生效存储过程里接收参数把查询结果临时存起来给后面的语句用二SQL全局变量1.是什么以开头系统自带的变量不用你定义用来获取数据库的状态、执行信息直接就能用2.最常用的4个-- ① IDENTITY获取刚插入数据的自增ID INSERT INTO Student(name) VALUES(李四); DECLARE newId INT IDENTITY; -- 拿到刚插入的ID -- ② ROWCOUNT上一条SQL影响了多少行 UPDATE Student SET age20 WHERE id1; PRINT 更新了 CAST(ROWCOUNT AS NVARCHAR) 行; -- ③ ERROR上一条SQL的错误码0没出错 DELETE FROM Student WHERE id999; IF ERROR 0 PRINT 删除出错了; -- ④ VERSION查看SQL Server版本 SELECT VERSION;三流程控制IF/While1.是什么让SQL脚本 会思考会循环 像C#一样写逻辑2.IF条件判断IF (条件) BEGIN -- 条件成立时执行的代码多条语句必须加BEGIN...END PRINT 条件成立; END ELSE BEGIN PRINT 条件不成立; END示例根据分数判断是否及格DECLARE score INT 85; IF score 60 BEGIN PRINT 及格了; SELECT * FROM Student WHERE score score; END ELSE BEGIN PRINT 不及格需要补考; END3.While循环WHILE (循环条件) BEGIN -- 循环体每次执行的代码 -- 注意一定要有跳出条件不然会死循环 IF 条件满足 BREAK; -- 跳出循环 END示例批量删除旧日志分批删不锁表DECLARE batchSize INT 1000; -- 每次删1000条 WHILE 11 -- 死循环靠里面的BREAK退出 BEGIN -- 每次删1000条 DELETE TOP (batchSize) FROM Logs WHERE CreateTime 2023-01-01; -- 如果这次没删到数据说明删完了退出循环 IF ROWCOUNT 0 BREAK; END PRINT 删除完成;四视图1.是什么一张 “虚拟表”本质是一条存起来的SELECT语句每次查询视图就会自动执行这条 SQL索引视图是它的特殊形式会把结果物理存起来2.基础创建语法-- 普通视图 CREATE VIEW v_student_score AS SELECT s.id, s.name, sc.score FROM Student s JOIN Score sc ON s.id sc.stuId; -- 使用视图和普通表一样查 SELECT * FROM v_student_score WHERE score 90;3.索引视图-- 必须加WITH SCHEMABINDING且只能用INNER JOIN CREATE VIEW v_student_score_index WITH SCHEMABINDING AS SELECT s.id, s.name, sc.score FROM dbo.Student s INNER JOIN dbo.Score sc ON s.id sc.stuId; GO -- 创建聚集索引视图数据会物理存储 CREATE UNIQUE CLUSTERED INDEX idx_v ON v_student_score_index(id);五索引1.是什么给表加的 “目录”加快查询速度就像书本的目录不用逐页翻直接定位到内容2.最常用的索引语法1. 普通非聚集索引CREATE INDEX idx_stu_name ON Student(name);目的让按name查询变快适用场景SELECT * FROM Student WHERE name张三2. 唯一索引CREATE UNIQUE INDEX idx_stu_phone ON Student(phone);目的既让phone查询变快又强制phone字段的值不能重复适用场景手机号、身份证号这种不能重复的字段3. 复合索引CREATE INDEX idx_stu_age_name ON Student(age, name);目的按age先排序再按name排序优化多条件查询适用场景WHERE age22 AND name张三这种查询走复合索引比两个单字段索引快得多注意顺序很重要(age, name)只能优化age开头的条件反过来(name, age)就不行。六函数1.是什么封装好的一段 SQL 逻辑输入参数返回结果分为标量函数返回单个值和表值函数返回一张表2.标量函数示例返回单个值-- 创建一个函数根据分数返回等级 CREATE FUNCTION GetScoreLevel(score INT) RETURNS NVARCHAR(10) AS BEGIN DECLARE level NVARCHAR(10); IF score 90 SET level 优秀; ELSE IF score 60 SET level 及格; ELSE SET level 不及格; RETURN level; END; -- 使用函数 SELECT name, dbo.GetScoreLevel(score) AS level FROM Student;七存储过程1.是什么把多条 SQL 语句封装成一个 “方法”支持参数、流程控制调用一次就执行里面所有逻辑适合复杂业务、批量操作2.基础创建语法-- 创建存储过程根据学号查学生成绩 CREATE PROCEDURE GetStudentInfo stuId INT -- 输入参数 AS BEGIN -- 里面可以写多条SQL支持变量、IF、WHILE SELECT * FROM Student WHERE id stuId; SELECT * FROM Score WHERE stuId stuId; END; -- 调用存储过程 EXEC GetStudentInfo stuId 1;八触发器和游标1. 触发器Trigger核心特点触发时机BEFORE/AFTER操作前 / 操作后触发事件INSERT、UPDATE、DELETE自动执行无参数无返回值实战示例MySQL需求给用户表加一个自动记录修改日志的触发器-- 日志表 CREATE TABLE user_log( id INT PRIMARY KEY AUTO_INCREMENT, info VARCHAR(200), create_time DATETIME ); -- 用户表 CREATE TABLE user( id INT PRIMARY KEY, name VARCHAR(50) ); -- 创建触发器当user表新增数据时自动写日志 DELIMITER // -- 临时修改语句结束符 CREATE TRIGGER trg_user_insert AFTER INSERT ON user -- 插入后触发 FOR EACH ROW -- 每一行都触发 BEGIN INSERT INTO user_log(info, create_time) VALUES(CONCAT(新增用户, NEW.name), NOW()); END // DELIMITER ; -- 测试插入用户触发器自动执行 INSERT INTO user(id, name) VALUES(1, 张三);✅ 效果你只插了用户表日志表自动多了一条记录全程不用手动调用触发器。2. 游标Cursor核心特点用于循环遍历查询结果集逐行处理四步标准流程声明 → 打开 → 取数据 → 关闭缺点性能比整批 SQL 差尽量少用实战示例MySQL 存储过程 游标需求逐行读取用户表打印每个用户名DELIMITER // CREATE PROCEDURE proc_cursor_test() BEGIN -- 1. 声明变量 DECLARE done INT DEFAULT 0; DECLARE userName VARCHAR(50); -- 2. 声明游标 DECLARE user_cursor CURSOR FOR SELECT name FROM user; -- 3. 游标结束标记 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done 1; -- 4. 打开游标 OPEN user_cursor; -- 5. 循环逐行读取 read_loop: LOOP FETCH user_cursor INTO userName; -- 取一行数据 IF done 1 THEN LEAVE read_loop; END IF; SELECT userName; -- 输出当前行逐行处理 END LOOP; -- 6. 关闭游标 CLOSE user_cursor; END // DELIMITER ; -- 调用 CALL proc_cursor_test();九事务1.是什么事务是数据库中的一个操作序列这些操作要么全部完成要么全部不做。换句话说事务是保证数据库数据一致性和完整性的单位。生活类比转账操作你从账户 A 转 100 元到账户 B包含两个操作A 减 100B 加 100事务保证两步要么都成功要么都不做不会出现 A 减了钱但 B 没收到的情况。2. 事务的四大特性ACID事务保证数据库安全性和可靠性核心有ACID四个特性特性英文含义原子性Atomicity事务是最小操作单位要么全做要么全不做一致性Consistency事务完成后数据库从一个合法状态变到另一个合法状态隔离性Isolation多个事务并发执行时互不干扰持久性Durability事务完成后结果永久保存在数据库即使系统崩溃也不丢失3.事务操作语法--1.开始事务 begin transaction --2.提交事务 commit --3.回滚事务 rollback4.事务操作实例假设有一个账户表 AccountCREATE TABLE Account( AccountID INT PRIMARY KEY, Balance DECIMAL(10,2) ); INSERT INTO Account VALUES (1, 1000), (2, 500);转账示例BEGIN TRANSACTION; -- 从账户1扣钱 UPDATE Account SET Balance Balance - 200 WHERE AccountID 1; -- 给账户2加钱 UPDATE Account SET Balance Balance 200 WHERE AccountID 2; -- 检查是否有异常 IF ERROR 0 ROLLBACK; -- 出错就撤销 ELSE COMMIT; -- 没问题就提交特点如果更新账户2时出错比如表锁住或数据异常账户1的钱也不会减少。事务保证了原子性。5.事务隔离级别当多个事务同时执行时需要控制“互相看到的数据状态”。SQL Server 提供 4 种隔离级别隔离级别特点常见问题Read Uncommitted可读未提交的数据脏读看到未提交的数据Read Committed只能读已提交的数据防止脏读但可发生不可重复读Repeatable Read锁定读取的行防止不可重复读但可能有幻读Serializable完全锁表严格顺序防止幻读但性能最低

相关文章:

数据库局部变量,全局变量,流程控制

前言知识点什么时候用?局部变量调试脚本、存储过程参数、临时存值全局变量获取执行状态、错误处理IF/WHILE条件判断、批量数据处理视图简化复杂查询、统一查询逻辑索引加快查询速度函数封装可复用的计算逻辑存储过程封装复杂业务、批量操作一SQL局部变量变量1.是什么…...

ElevenLabs广西话输出突然失真?一文定位3类隐藏错误:声母浊化丢失、入声韵尾截断、连读变调失效

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs广西话语音输出失真现象概览 ElevenLabs 作为当前主流的AI语音合成平台,其多语言支持能力广受开发者青睐。然而,在针对广西话(粤语勾漏片与邕浔片混合变体…...

H3CSE 高性能园区网:生成树保护机制

H3CSE 高性能园区网:生成树保护机制一、生成树保护机制1. BPDU保护1.1 边缘端口特点及问题端口基础特性存在的安全隐患1.2 BPDU保护机制核心防护逻辑机制运行优势1.3 BPDU保护配置配置使用规范H3C设备配置命令2. 根桥保护2.1 根桥保护机制2.2 根桥保护配置要求2.3 根…...

在内容生成流水线中集成多模型 API 以提升创作多样性

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在内容生成流水线中集成多模型 API 以提升创作多样性 对于新媒体运营、营销或内容创作团队而言,保持内容的新鲜感与多样…...

opencode使用安装

确保已经安装好node npm安装opencode C:\WINDOWS\system32>npm install -g opencode-aiadded 3 packages in 2mC:\WINDOWS\system32>npm安装mcp-chrome C:\WINDOWS\system32>npm...

网络设备a

顺序1.聚合 2.vlan 3.MSTP 4.VRRP 5.路由先配置聚合lsw2 lsw1内同配置vlan 10 20,配置好后对所有接口放通vlan放通的其一进行MSTP配置lsw1作为instance 1的根桥 instance 2的备份根桥lsw2作为instance 2的根桥 instance 1的备份根桥再配置VRRP之后进行osp…...

本地部署 Open Claw 保姆教程,同事还在手动整理文件,我已经让 AI 全搞定了

前言 2026 年开源圈热门的「数字员工」OpenClaw(昵称小龙虾),GitHub 星标超 28 万,凭「本地运行 零代码操作 自动干活」的优势圈粉无数!很多人误以为它是普通聊天 AI,实则是能真正操控电脑的自动化神器 …...

CANN-Ascend-C存储体系-昇腾NPU的四级缓存怎么用才算对

写 Ascend C 算子,最常犯的错误不是计算写错,是数据搬运写错。昇腾NPU有四级存储,每一级的容量、带宽、延迟都不同。数据该放在哪一级、什么时候搬、搬多少,直接决定算子性能。 四级存储级别名称容量带宽延迟用途L0HBM&#xff08…...

Day03 Web应用OSS存储负载均衡CDN加速反向代理WAF防护部署影响

我的博客园笔记 一、WebWAF WAF(Web应用防火墙):是一种专门设计用于保护 Web 应用程序免受恶意攻击的安全设备,它能够实时监控、过滤和拦截可能对网站造成危害的网络流量,从而避免网站服务器被恶意入侵,导…...

Python之anonymate包语法、参数和实际应用案例

一、AnonyMate 包概述 AnonyMate是 Python 第三方数据匿名化工具包,版本 0.1.5,专注结构化/非结构化数据脱敏、假名化、加密与合成数据生成,适配医疗、金融、电商等敏感数据场景,助力合规(GDPR、等保2.0)。…...

开发靠 AI 提效,测试成最大瓶颈,现状过于真实

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中…...

深入了解指针(3)

文章目录数组名的理解对arr[i]的理解一维数组传参的本质二级指针指针数组指针数组的用处总结这里是think的博客 希望可以一起交流知识&#xff0c;一起think 今天我们来学习指针(3)吧 一起来think吧 数组名的理解 //测试环境:X86 #include <stdio.h> int main() { int a…...

论文修改踩坑无数?paperxie 帮你一站式搞定查重与 AIGC 降重难题

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 作为一名被论文查重和 AIGC 检测反复折磨过的过来人&#xff0c;我深知毕业季里&#xff0c;对着飘红的查重报告和居高…...

什么是占位符

占位符就是字符串里预留空位&#xff0c;后面填上真实数据&#xff0c;PyCharm里直接写代码就能运行调试1.%格式化占位符&#xff08;旧式格式化&#xff09;语法格式&#xff1a;"模板字符串"%(数据1&#xff0c;数据2...)基础类型占位符1.%s &#xff1a;适配字符串…...

什么是运算符

等一下...

【Lovable前端开发实战指南】:20年专家亲授5个让团队抢着用的可维护性设计模式

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Lovable前端开发的核心理念与可维护性本质 Lovable前端开发并非追求炫酷动效或技术堆砌&#xff0c;而是以人本设计为原点&#xff0c;将开发者体验&#xff08;DX&#xff09;与用户界面体验&#xff08;UX&a…...

深度解析:基于RAG与任务执行的AI Agent全能力矩阵在话务系统的工程实践

在企业通讯架构演进中&#xff0c;话务系统正经历从流程驱动向智能驱动的范式转移。传统话务台高度依赖预设的IVR流程与人工查询&#xff0c;不仅交互生硬&#xff0c;且存在严重的数据孤岛问题。本文将聚焦AI Agent的全能力矩阵&#xff0c;从技术架构与业务逻辑层面&#xff…...

2026 年 5 月 AI 热点:大模型、硬件、人形机器人全面升级

一、大模型技术突破 | LLM Technology Breakthroughs 1.1 OpenAI GPT‑5.5 正式成为ChatGPT默认模型 | GPT‑5.5 Becomes ChatGPT Default Model 英文内容 | English On May 5, 2026, OpenAI officially rolled out GPT‑5.5 Instant as the new default model for ChatGPT, …...

[特殊字符]通用漏洞挖掘(黑盒篇)| 从一个登录框SQL注入,到拿下CNVD证书

&#x1f3af; 0x00 这篇文章能给你什么&#xff1f; 黑盒测试中 如何发现 SQL 注入&#xff08;手工 思路&#xff09; 万能密码 ≠ 全部&#xff0c;但有了它一定有问题 如何从“事件型漏洞”升级为“通用型漏洞” 利用 JS 指纹 在 FOFA 上批量找同款系统 CNVD 证书 的获…...

编译和链接(以Windows,VS环境下C语言为例)

编译和链接(以Windows,VS环境下C语言为例&#xff09;一.什么是翻译环境和运行环境&#xff1f;二.翻译环境2.1预处理(预编译)2.2编译2.2.1词法分析2.2.2语法分析2.2.3语义分析2.3汇编2.4链接三.运行环境提前说明一下&#xff0c;虽然说我们是以Windows操作系统为例&#xff0c…...

用 shell 命令做 AI Agent 的插件系统:为什么 Hook 不是函数调用

用 shell 命令做 AI Agent 的插件系统&#xff1a;为什么 Hook 不是函数调用 这是 《写完一个 AI 编程助手之后&#xff0c;我才确定 prompt 工程不是重点》 系列的第七篇&#xff08;最后一篇&#xff09;。前六篇讲了进程模型、权限、并发调度、上下文压缩、记忆系统。这一篇…...

Gemini3.1Pro和GPT5.5写代码到底谁更强五类任务实测数据说

做多模型编码能力横向对比测试时用了AI模型聚合平台&#xff0c;一站接入两个模型方便跑同一套编码任务。Gemini 3.1 Pro在SWE-Bench Verified拿到80.6%。GPT-5.5在Terminal-Bench拿到82.7%。分数接近但写代码的实际体验和分数不是一回事。这次用五类真实开发任务做了一轮系统对…...

诚邀您参加 2026 Google Cloud Startup Day

以下文章来源于谷歌云服务&#xff0c;作者 Google Cloud...

不是碳基,也不是硅基!你好,我是金蝶灵基,企业AI原生操作系统!

AI是危还是机&#xff1f;自年初小龙虾“爆炸”以来&#xff0c;很多企业服务巨头都或主动或被动地陷入了深深地思考&#xff1a;连一直仰望并追捧的偶像——Salesforce都开始快速变革&#xff0c;我们能无动于衷吗&#xff1f;这半年以来&#xff0c;中国软件网注意到&#xf…...

谷歌“反重力”工具更新强行替换软件,用户恢复工作困难重重!

谷歌“反重力”工具更新强行替换软件&#xff0c;用户恢复工作困难重重&#xff01;2026年5月21日&#xff0c;原本打算用“反重力”工具工作的用户&#xff0c;遭遇了谷歌的意外安排。前一天&#xff0c;谷歌在2026年I/O开发者大会上推出“反重力”工具新版本&#xff0c;将其…...

BBEdit 16 正式发布!新增百多项功能,部分用户可免费升级

产品 产品 BBEdit Yojimbo iPad 版 Yojimbo TextWrangler 支持 支持 BBEdit Yojimbo iPad 版 Yojimbo TextWrangler 产品下载 找回序列号 SDK 与开发者信息 公司书架 商店 商店 购物车 许可协议 Mac App Store 常见问题 销售政策 查找经销商 多用户许可证 联系我们 联系我们 找…...

uv虽快但包管理体验差:命令笨拙、更新不安全,改进之路在何方?

【uv项目承接与特点】自2023年以来&#xff0c;作者首次有空承接新的项目。Astral的uv在Python世界掀起热潮&#xff0c;它速度极快&#xff0c;能轻松处理Python版本&#xff0c;还能用一个二进制文件替代半打工具&#xff0c;作者之前也写过多篇关于它的文章。【uv使用体验问…...

毫米波混合波束成形技术在VR中的应用与优化

1. 毫米波VR中的混合波束成形技术解析在无线VR应用中&#xff0c;用户对低延迟和高带宽的需求日益增长。传统Wi-Fi标准在密集环境下难以满足这些QoS要求&#xff0c;而毫米波技术凭借其高传输速率和低延迟特性成为理想选择。本文将深入探讨毫米波频段下混合波束成形技术的实现原…...

8051项目代码流程图工具选择与应用指南

1. 流程图工具概述接手一个大型8051项目时&#xff0c;快速理解代码结构是每个嵌入式工程师都会面临的挑战。我在处理遗留代码时&#xff0c;第一件事就是寻找合适的流程图工具来可视化程序逻辑。市面上确实存在多种能够解析C51代码并生成流程图的软件&#xff0c;但选择时需要…...

量子机器学习噪声挑战与HPQS混合框架解析

1. 量子机器学习中的噪声挑战与HPQS解决方案量子机器学习(QML)作为量子计算与经典机器学习的交叉领域&#xff0c;正在重新定义我们处理复杂模式识别问题的方式。与传统机器学习不同&#xff0c;QML利用量子态的叠加和纠缠特性&#xff0c;理论上可以在某些特定任务上实现指数级…...