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. 结束标记一定是 */,不要漏写。
相关推荐
姚远Oracle ACE1 分钟前
为什么无法连接到 PostgreSQL?
数据库·postgresql
ss2733 分钟前
AI时代首先数据库-PostgreSQL实战笔记 | 22 PostgreSQL实例与集群
数据库·笔记·postgresql
ss2733 分钟前
AI时代首先数据库-PostgreSQL实战笔记 | 21 PostgreSQL进程与内存架构介绍
数据库·笔记·postgresql
Henry-SAP1 小时前
SAP PP模块全景概览
数据库
喜欢吃豆2 小时前
Better Auth 深度解析:从用户认证到企业级身份基础设施
数据库·架构·权限·多租户
其实防守也摸鱼2 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
吹什么轩3 小时前
MySQL:数据库基础
数据库·mysql
内存漫游3 小时前
Undo、Redo 与事务回滚
数据库
FluxDB3 小时前
用 Rust + GPUI 重做数据库客户端
数据库·mysql
烬羽3 小时前
PostgreSQL:AI 时代原生的"隐型"向量数据库 — 用 pgvector 给消息表加上长期记忆
数据库·人工智能·程序员