0

0

单行注释和多行注释有什么区别_mysql注释规则

P粉602998670

P粉602998670

发布时间:2026-01-04 11:03:08

|

987人浏览过

|

来源于php中文网

原创

MySQL单行注释#无需空格,--必须后跟空格;跨库兼容优先用--(带空格);多行注释/.../可插语句中间但不可嵌套;客户端、ORM或代理可能剥离注释导致“失效”。

单行注释和多行注释有什么区别_mysql注释规则

单行注释用 # 还是 --?关键看空格和兼容性

MySQL 支持两种单行注释语法,但行为细节有差异:# 是 MySQL 特有,-- 是 SQL 标准(但 MySQL 要求其后必须跟一个空格,否则会被忽略)。

  • # 后面直接写注释,无需空格:例如 #查询商品ID和采购价
  • -- 后**必须加空格**,否则整条语句可能报错或被截断:正确写法是 -- 查询商品ID和采购价;错误写法如 --查询商品ID和采购价 在某些客户端(如老版本 mysql CLI 或部分 ORM)会触发语法错误
  • 如果要写跨数据库兼容的 SQL(比如将来迁移到 PostgreSQL 或 SQL Server),优先用 -- (带空格),避免用 #

多行注释 /* ... */ 可以嵌套在语句中间,但不能嵌套自身

/* */ 注释最实用的地方是「插在语句中间」,比如临时屏蔽某字段、加说明,或者调试时注释掉条件片段。

  • 支持跨行,换行符不影响解析:
    SELECT product_id,
           /* purchase_price, -- 暂不查采购价 */
           sale_price
    FROM Product;
  • 不能嵌套:写 /* 外层 /* 内层 */ 外层 */ 会导致语法错误——MySQL 只认第一个 */ 就结束注释,后面内容变成裸 SQL,大概率报错
  • 可在任意位置插入,包括字段名后、逗号后、WHERE 子句中:WHERE status = 'active' /* and deleted = 0 */

注释能放哪儿?哪些地方容易“静默失效”

理论上注释可出现在 SQL 任意位置,但实际执行中几个常见“失效点”值得警惕:

灵办AI
灵办AI

免费一键快速抠图,支持下载高清图片

下载
  • DELIMITER 改变后、存储过程体内部,某些客户端(如 phpMyAdmin)对 # 注释解析不稳定,建议统一用 -- /* */
  • 在命令行工具mysql -e "...")中传入含换行的 /* */ 注释,需确保 shell 正确转义,否则换行被截断导致注释不闭合
  • ORM(如 SQLAlchemy、MyBatis)可能预处理 SQL,自动剥离注释——这时你写的 --/* */ 在真正发给 MySQL 前就被删了,调试时别只信日志里看到的语句
  • 注释里的特殊字符(如 */ 出现在字符串值中)不会被识别为注释结束,安全;但若动态拼接 SQL,得防注入伪造 */ 提前闭合注释

为什么注释有时“看不见效果”?其实是客户端或协议层拦截了

不是所有环境都原样把注释发给 MySQL 服务端。比如:

  • MySQL 8.0+ 的 performance_schema.events_statements_history 默认不记录注释,查慢日志或审计日志时会发现注释“消失”了
  • 某些连接池(如 HikariCP)或代理(如 ProxySQL)会做 SQL 归一化(normalization),把注释全去掉再路由,方便缓存匹配
  • 如果你在 Navicat / DBeaver 中写了注释却没生效,先试试切换到原生 mysql CLI 执行——排除 GUI 工具的预处理干扰

注释看着简单,但混在复杂查询、自动化流程或多人协作脚本里时,-- 少打的那个空格、/ 忘写的那个 /、或者 ORM 里以为留着的调试注释,都可能变成半夜排查的起点。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

676

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

346

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1090

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

356

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

674

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

570

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

410

2024.04.29

从零到实战:Python 编程系统入门专题
从零到实战:Python 编程系统入门专题

本专题面向零编程基础及初学者,系统讲解 Python 编程语言的核心知识与实战技巧。内容涵盖 Python 基础语法、数据结构、函数与模块、常用标准库、简单算法思维,以及真实应用场景下的小项目实战。通过循序渐进的学习路径,帮助读者快速建立编程思维,掌握 Python 在数据处理、自动化脚本及日常开发中的实际应用能力,为后续深入学习 Web 开发、数据分析或人工智能打下坚实基础。

2

2026.01.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.6万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 779人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号