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

【小技巧】mysql 判断表字段是否存在 删除字段 sql脚本

MySQL 判断表字段是否存在 删除字段 sql脚本

下面是一个包含插入和更新操作的流程:

-- 先尝试插入数据
INSERT IGNORE INTO user_info (last_name, first_name)
VALUES ('x', 'y');-- 如果插入成功,ROW_COUNT() 返回 1,否则返回 0
IF ROW_COUNT() = 0 THEN-- 数据已存在,执行更新操作UPDATE user_info SET last_name = 'new_last_name', first_name = 'new_first_name'WHERE last_name = 'x' AND first_name = 'y';
END IF;

ROW_COUNT使用

ROW_COUNT() 是 MySQL 中的一个函数,它返回上一个 SQL 语句所影响的行数。它是根据执行的操作类型返回相应的行数。具体情况如下:

  • 对于 INSERTUPDATEDELETE 操作,ROW_COUNT() 返回受影响的行数。
  • 对于 SELECT 语句,它返回结果集中的行数(不过在某些情况下可能不适用,因为 ROW_COUNT() 更常用于数据更改语句)。
  • 如果上一个语句没有影响任何行(如 INSERT IGNORE 遇到重复数据没有插入),ROW_COUNT() 返回 0。

常见返回值

  1. INSERT 操作

    • 如果成功插入数据,ROW_COUNT() 返回插入的行数。
    • 如果使用 INSERT IGNORE,当遇到唯一约束冲突而没有插入数据时,ROW_COUNT() 返回 0。
  2. UPDATE 操作

    • 如果成功更新数据,ROW_COUNT() 返回更新的行数。
    • 如果没有匹配的行或者更新后的数据和原来相同,ROW_COUNT() 返回 0。
  3. DELETE 操作

    • 如果成功删除数据,ROW_COUNT() 返回删除的行数。
    • 如果没有找到需要删除的行,ROW_COUNT() 返回 0。

举例说明

1. INSERT IGNORE 示例
INSERT IGNORE INTO user_info (last_name, first_name) VALUES ('x', 'y');-- 假设 ('x', 'y') 已经存在,此时不会插入数据,ROW_COUNT() 返回 0
SELECT ROW_COUNT();  -- 返回 0
2. UPDATE 示例
UPDATE user_info SET last_name = 'z' WHERE last_name = 'x';-- 假设匹配到了 2 条记录并进行了更新,ROW_COUNT() 返回 2
SELECT ROW_COUNT();  -- 返回 2
3. DELETE 示例
DELETE FROM user_info WHERE last_name = 'nonexistent';-- 假设没有找到匹配的记录,ROW_COUNT() 返回 0
SELECT ROW_COUNT();  -- 返回 0

总结来说,ROW_COUNT() 用于检查前一个数据操作(INSERT、UPDATE、DELETE)是否实际影响了数据库中的行,返回值为受影响的行数。

http://www.lryc.cn/news/453714.html

相关文章:

  • 低代码革命:重塑工业互联网的未来版图
  • KNN算法
  • TS 中类型的继承
  • 在VS code 中部署C#和avalonia开发环境
  • Windows删除service服务
  • 【数据结构】---图
  • 《 C++ 修炼全景指南:十四 》大数据杀手锏:揭秘 C++ 中 BitSet 与 BloomFilter 的神奇性能!
  • 相机基础概念
  • 【python】追加写入excel
  • 继承实现单例模式的探索(二)
  • 设计模式-访问者模式
  • 国创——基于Unity3D和MediaPipe构建虚拟人物驱动系统
  • 环境可靠性
  • Chromium 设置页面打开系统代理源码分析c++
  • 信号检测理论(Signal Detection Theory, SDT)
  • Flink源码剖析
  • [Python学习日记-39] 闭包是个什么东西?
  • XSLT 实例:掌握 XML 转换的艺术
  • 【C++】第一节:C++入门
  • CSP-S 2021 T1廊桥分配
  • 项目配置说明
  • linux网络编程实战
  • 网络基础 【HTTP】
  • [Linux#61][UDP] port | netstat | udp缓冲区 | stm32
  • 定义类方法的错误总结
  • Redis --- 第三讲 --- 通用命令
  • 【Linux】进程间关系与守护进程
  • 【可视化大屏】将柱状图引入到html页面中
  • gm/ID设计方法学习笔记(一)
  • 高度细化的SAGA模式实现:基于Spring Boot与RabbitMQ的跨服务事务