SQL条件分支中的大讲究
在SQL中,条件分支用于根据不同的条件执行不同的操作,适用于数据查询、数据更新以及存储过程等场景。合理使用SQL条件分支,可以优化数据操作流程,提高代码的可读性和可维护性。
目录
1. 逻辑判断的基本概念
2. CASE 语句:多条件判断的利器
2.1 CASE 语句的基本语法
2.2 CASE 在 SELECT 语句中的应用
2.3 CASE 在 UPDATE 语句中的应用
3. IF 语句:适用于存储过程
3.1 IF 语句的基本语法
3.2 在存储过程中的应用
4. IF() 函数:简洁的二元条件判断
4.1 IF() 的基本语法
4.2 在 SELECT 语句中的应用
5. CASE vs IF 的区别
6. 总结
1. 逻辑判断的基本概念
在SQL中,逻辑判断是条件分支的基础,它允许我们根据特定条件筛选数据或执行不同的操作。常见的逻辑运算符有 AND、OR 和 NOT,这些运算符用于组合多个条件,实现复杂的判断逻辑。
| 运算符 | 说明 |
|---|---|
AND | 逻辑与,所有条件必须为 TRUE |
OR | 逻辑或,任意一个条件为 TRUE |
NOT | 逻辑非,取反 |
示例:查询 employees 表中薪资 salary 在 5000 到 10000 之间的员工:
SELECT * FROM employees WHERE salary >= 5000 AND salary <= 10000;
2. CASE 语句:多条件判断的利器
CASE 语句是SQL中最常用的条件分支结构,类似于编程语言中的 switch-case 语句。它能够根据不同的条件返回不同的值,适用于 SELECT、UPDATE 和 INSERT 语句。
2.1 CASE 语句的基本语法
CASE 语句的基本语法包括多个 WHEN ... THEN 结构,最终可以使用 ELSE 设定默认返回值。
CASE WHEN 条件1 THEN 结果1WHEN 条件2 THEN 结果2ELSE 默认结果
END
2.2 CASE 在 SELECT 语句中的应用
CASE 语句通常用于查询语句中,根据不同的条件返回不同的结果。例如,我们可以根据 employees 表的 salary 字段对员工进行分类。
SELECT employee_id, name, salary,CASE WHEN salary > 10000 THEN '高级'WHEN salary BETWEEN 5000 AND 10000 THEN '中级'ELSE '初级'END AS level
FROM employees;
2.3 CASE 在 UPDATE 语句中的应用
我们还可以在 UPDATE 语句中使用 CASE 语句来批量更新数据,例如根据员工工资调整奖金。
UPDATE employees
SET bonus = CASE WHEN salary > 10000 THEN 2000WHEN salary BETWEEN 5000 AND 10000 THEN 1000ELSE 500END;
3. IF 语句:适用于存储过程
在 MySQL 的存储过程中,我们可以使用 IF 语句进行条件分支,它类似于其他编程语言中的 if-else 语句,适用于执行复杂的业务逻辑。
3.1 IF 语句的基本语法
IF 语句允许在存储过程中执行条件判断,并根据不同的条件执行不同的 SQL 语句。
IF 条件1 THEN语句1;
ELSEIF 条件2 THEN语句2;
ELSE语句3;
END IF;
3.2 在存储过程中的应用
例如,我们可以创建一个存储过程来根据传入的 emp_salary 值返回员工级别。
DELIMITER //
CREATE PROCEDURE check_salary(IN emp_salary INT)
BEGINIF emp_salary > 10000 THENSELECT '高级员工';ELSEIF emp_salary BETWEEN 5000 AND 10000 THENSELECT '中级员工';ELSESELECT '初级员工';END IF;
END //
DELIMITER ;
调用存储过程:
CALL check_salary(7000);
4. IF() 函数:简洁的二元条件判断
IF() 函数是 MySQL 提供的一个内置函数,它用于简单的二元条件判断,类似于编程语言中的三元运算符。适用于 SELECT 语句中的简单条件判断。
4.1 IF() 的基本语法
IF() 函数的基本语法如下,其中 条件 为 TRUE 时返回 值1,否则返回 值2。
IF(条件, 值1, 值2)
4.2 在 SELECT 语句中的应用
例如,我们可以使用 IF() 来判断员工薪资是否高于 5000,并返回相应的级别。
SELECT name, salary, IF(salary > 5000, '高薪', '低薪') AS salary_level FROM employees;
5. CASE vs IF 的区别
不同的SQL条件分支适用于不同的场景,以下是它们之间的主要区别。
| 特性 | CASE 语句 | IF 语句 | IF() 函数 |
| 适用范围 | SELECT、UPDATE、INSERT | 仅限存储过程 | SELECT 语句 |
| 支持多条件 | ✅ | ✅ | ❌(仅二元条件) |
| 跨数据库支持 | ✅(适用于所有数据库) | ❌(仅MySQL、PL/SQL) | ❌(仅MySQL) |
6. 总结
在SQL中,不同的条件分支适用于不同的业务需求:
-
CASE语句:适用于SELECT、UPDATE、INSERT,支持多个条件,适用于所有数据库。 -
IF语句:仅用于存储过程和函数,适用于 MySQL 和 PL/SQL。 -
IF()函数:MySQL 专用,适用于简单的二元条件判断。
合理选择 SQL 条件分支结构可以优化查询逻辑,提高代码的可读性和执行效率。
相关文章:
SQL条件分支中的大讲究
在SQL中,条件分支用于根据不同的条件执行不同的操作,适用于数据查询、数据更新以及存储过程等场景。合理使用SQL条件分支,可以优化数据操作流程,提高代码的可读性和可维护性。 目录 1. 逻辑判断的基本概念 2. CASE 语句…...
Cherry Studio:一站式多模型AI交互平台深度解析 可配合大模型搭建私有知识库问答系统
Cherry Studio:一站式多模型AI交互平台深度解析 可配合大模型搭建私有知识库问答系统 大模型本地化部署流程可查看文章 3分钟教你搭建属于自己的本地大模型 DeepSeek Cherry Studio地址:https://cherry-ai.com/download Cherry Studio 简介 Cherry S…...
工业相机,镜头的选型及实战
工业相机和镜头的选型是机器视觉系统中的关键步骤,选型不当可能导致成像质量差或系统性能不达标。(用于个人的学习和记录) 一、工业相机选型方法 确定分辨率 分辨率需求:根据被测物体的尺寸和检测精度要求计算所需分辨率。 公式…...
C++模板学习从专家到入门:关键字typename与class
文章目录 共同点typename特性class特性 共同点 在定义类模板或者函数模板时,typename 和 class 关键字都可以用于指定模板参数中的类型。 template <class T> template <typename T>typename特性 C 允许在类内定义类型别名,且其使用方法与…...
BFS算法篇——FloodFill问题的高效解决之道(下)
文章目录 前言一. 图像渲染1.1 题目链接:https://leetcode.cn/problems/flood-fill/description/1.2 题目分析:1.3 思路讲解:1.4 代码实现: 二. 岛屿数量2.1 题目链接:https://leetcode.cn/problems/number-of-islands…...
Android性能优化
Android性能优化 如何优化一个包含大量图片加载的Android应用,以提高性能和用户体验? 优化一个包含大量图片加载的Android应用,可以从以下几个方面入手,以提高性能和用户体验: 选择合适的图片加载库 使用成熟的图片…...
1、http介绍
一、HTTP 和 HTTPS 简介 HTTP(HyperText Transfer Protocol) 用途:用于网页数据传输(不加密)。协议特性:以明文形式传输数据,默认端口 80,无身份验证和完整性保护。典型场景…...
2.6 寒假训练营补题
C Tokitsukaze and Balance String (hard) 题目描述 本题为《Tokitsukaze and Balance String (easy)》的困难版本,两题的唯一区别在于 n n n 的范围。 一个字符串是平衡的,当且仅当字符串中 "01" 连续子串的个数与 "10" 连续子…...
kafka生产者之发送模式与ACK
文章目录 Kafka的发送模式Kafka的ack机制发送模式与ack的关联重试次数总结 在Kafka中,发送模式与ack机制紧密相关,它们共同影响着消息发送的可靠性和性能。 Kafka的发送模式 发后即忘(Fire and Forget):生产者发送消息…...
笔记:蓝桥杯python搜索(3-2)——DFS剪支和记忆化搜索
目录 一、DFS剪支 二、例题 P2942 数字王国之军训军队 P3075 特殊的多边形 三、记忆化搜索 四、例题 例题 P3820 混境之地 P216 地宫取宝 一、DFS剪支 在搜索过程中,如果需要完全遍历所有情况可能需要很多时间在搜索到某种状态时,根据当前状态判断…...
ChatBox+硅基流动Deepseek_R1开源API 满血(671B)部署教程,全程干货无废话
DeepSeek开源深度推理模型火爆发布,网络流量过大经常导致服务器崩溃,所以一般有两种方法解决这个问题 如果你的硬件支持,或者保密文档,保密单位,那么可以部署在本地端。但是再好的电脑也不能让DS满血复活,…...
35~37.ppt
目录 35.张秘书-《会计行业中长期人才发展规划》 题目 解析 36.颐和园公园(25张PPT) 题目 解析 37.颐和园公园(22张PPT) 题目 解析 35.张秘书-《会计行业中长期人才发展规划》 题目 解析 插入自定义的幻灯片:新建幻灯片→重用…...
畅快使用DeepSeek-R1的方法
腾讯云API接入Cherry Studio简明指南-畅快使用DeepSeek-R1 注意:腾讯云API针对deepseek限时免费(后续即使收费也较为便宜,可以作为长期使用的方法),并且比华为的API要快不少。 一、获取腾讯云API密钥 登录并进入腾讯…...
【人工智能】Python中的序列到序列(Seq2Seq)模型:实现机器翻译
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 序列到序列(Seq2Seq)模型是自然语言处理(NLP)中一项核心技术,广泛应用于机器翻译、语音识别、文本摘要等任务。本文深入探讨Seq2Seq模…...
【算法】动态规划专题⑥ —— 完全背包问题 python
目录 前置知识进入正题模板 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 完全背包问题是动态规划中的一种经典问题,它与0-1背包问题相似,但有一个关键的区别:在完全背包问题中,每种物品都有无限的数量可用。…...
记一次基于manifest v3开发谷歌插件
背景 头疼在国际化功能普遍的前端项目中,如果你在处理或者在某一块功能上新增一些需求的时候,在没有国际化功能的页面中,我们随便复制一些文本,然后在vs code中全局搜索,很快就可以找到所要更改的代码文件在哪里&…...
C# OpenCvSharp 部署MOWA:多合一图像扭曲模型
目录 说明 效果 项目 代码 下载 参考 C# OpenCvSharp 部署MOWA:多合一图像扭曲模型 说明 算法模型的paper名称是《MOWA: Multiple-in-One Image Warping Model》 ariv链接 https://arxiv.org/pdf/2404.10716 效果 Stitched Image 翻译成中文意思是&…...
本地部署DeepSeek-R1模型(新手保姆教程)
背景 最近deepseek太火了,无数的媒体都在报道,很多人争相着想本地部署试验一下。本文就简单教学一下,怎么本地部署。 首先大家要知道,使用deepseek有三种方式: 1.网页端或者是手机app直接使用 2.使用代码调用API …...
神经网络常见激活函数 5-PReLU函数
文章目录 PReLU函数导函数函数和导函数图像优缺点pytorch中的PReLU函数tensorflow 中的PReLU函数 PReLU 参数化修正线性单元:Parametric ReLU 函数导函数 PReLU函数 P R e L U { x x > 0 α x x < 0 ( α 是可训练参数 ) \rm PReLU \left\{ \begin{array}{} x \qua…...
2025我的第二次社招,写在春招之季
先说一个好消息,C那些事 4w star了! 前面断更了一个月,本篇文章就可以看到原因,哈哈。 大家好,我叫光城,腾讯实习转正做后端开发,后去小公司做数据库内核,经过这几年的成长与积累&am…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
