MySQL 条件注释语法

基础格式

sql 复制代码
/*! SQL语句 */
  • 开头:/*!(斜杠 + 星号 + 感叹号)
  • 结尾:*/(星号 + 斜杠)

区别普通注释 /* 内容 */,感叹号是关键

✅ 规则:

  • MySQL:会执行 /*! 和 */ 里面的SQL
  • PostgreSQL / Oracle / SQL Server:当作普通多行注释,直接忽略不执行

带版本号(最常用)

sql 复制代码
/*!版本号 SQL语句 */

版本号规则:主版本 * 10000 + 次版本 * 100 + 修订号

只有当前MySQL版本 >= 指定版本号,内部SQL才执行

示例:

sql 复制代码
/*!40101 SET NAMES utf8mb4 */;

40101 → MySQL 4.1.01,版本≥4.1.01才执行。

常用版本对照:

  • 5.7.34 → 50734
  • 8.0.30 → 80030

拓展:/*!Mysql 关键字(较少见)

sql 复制代码
/*!Mysql SQL语句 */

效果等同于 /*! SQL */,只是显式标注是MySQL专属语法,mysqldump很少用。

⚠️ 还有一种:! 反向注释(*/!)

sql 复制代码
/*! SQL语句 */

含义:非MySQL数据库才执行,MySQL忽略,日常几乎不用。

快速对比

写法 MySQL行为 其他数据库
/* 内容 */ 注释,不执行 注释,不执行
/*! 内容 */ 执行内部SQL 注释,不执行
/*!80000 内容 */ 版本≥8.0.00才执行 注释,不执行
/*! 内容 */ 注释,不执行 执行内部SQL

示例

sql 复制代码
-- 基础条件注释
/*! CREATE TABLE IF NOT EXISTS t1(id INT) */;

-- 版本控制:MySQL8.0及以上才执行
/*!80000 ALTER TABLE t1 ADD COLUMN name VARCHAR(32) */;

注意点

  1. 版本号不能加小数点,必须是连续数字;
  2. 内部SQL语法错误,满足版本条件时MySQL照样报语法错误;
  3. 结束标记一定是 */,不要漏写。
相关推荐
吴名氏.34 分钟前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
爱码少年1 小时前
Springboot下如何将CSV文件数据导入H2、Mysql数据库表
数据库·mysql·csv
2603_969694852 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea2 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
阿义有问题3 小时前
MySQL 迁移达梦全流程实战:DTS 七步图解 + 对象名全大写适配(附踩坑清单)
数据库
猫猫不是喵喵.6 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
lsc_blog7 小时前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
墨痕诉清风7 小时前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库
Ashe81310 小时前
MySQL 慢日志先别急着加索引:三个指标能拦掉大半误判
数据库
ClouGence10 小时前
最基础的异构数据库 DDL 同步,我们踩过哪些坑?
数据库·mysql·postgresql