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. 结束标记一定是 */,不要漏写。
相关推荐
小小龙学IT1 小时前
Go 语言 database/sql 标准库深度解析:从连接池到驱动抽象
数据库·sql·golang
Seraphina361 小时前
SQL注入(一)
数据库·经验分享·笔记·sql·网络安全
anew___1 小时前
《从零手写操作系统 (19):Ext2文件系统实战——从内存到磁盘的跨越》
java·服务器·前端·数据库·算法
Arcai10241 小时前
SQL Server 备份和恢复完全指南:从入门到精通
数据库·sqlserver·数据恢复·数据备份·备份一体机·杭州智备
XS0301061 小时前
Redis 学习指南
数据库·redis·缓存
FPGA小徐1 小时前
Qt 5.9 实战:实现一个自动图片轮播器
数据库
FYKJ_20102 小时前
SSM校园互助与闲置交易平台62145-计算机课程设计、毕业设计
java·spring boot·python·mysql·架构·spark·课程设计
l1t2 小时前
DeepSeek总结的pg_clickhouse 与 chdb 更新:编码、嵌套与类型
数据库·clickhouse·postgresql
傲世仙尊2 小时前
从HTTPS到MySQL-会话保持的攻防与数据库的真面目
数据库·mysql·https