首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 註釋語法詳解:--、#、/* */ 的區別與安全陷阱

     編輯:MySQL 資料庫相關知識

三種註釋風格

-- 註釋內容# 註釋內容/* 註釋內容 */
風格語法說明
SQL 標準MySQL 3.23.3+ 支援,**要求雙減號後緊跟一個空格或控制字元(換行)**。
MySQL 原生行尾註釋,無特殊要求。
C 風格多行註釋,可嵌套在 SQL 語句中間。

為何 `--` 強制要求後跟空格?

防止自動生成 SQL 時出現語義變更。例:

UPDATE account SET credit = credit - !payment!;
-- 若 payment = -1,自動替換後變為:
UPDATE account SET credit = credit --1;

若 `--1` 被視為註釋開始,語句變為 UPDATE account SET credit = credit,**不再扣款**,造成嚴重邏輯錯誤。強制空格使 `--1` 仍被視為減法運算,保證語義安全。

mysql 命令列客戶端特殊行為

  • 交互模式下,**以 `--` 開頭的整行會被客戶端直接丟棄**,不發送給伺服器。
  • 腳本檔案中使用 `--` 註釋時,建議用 replace 工具轉為 `#` 後再餵給 mysql:
    replace " --" " #" < script.sql | mysql db_name

最佳實踐建議

  1. 腳本檔案統一用 `#` 或 `/* */`: 避免 `--` 空格要求導致的跨版本兼容問題。
  2. 交互式操作用 `#`: 簡短、無歧義。
  3. 多行說明用 `/* */`: 可置於語句中間,如 SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t;(優化器提示)。
  4. 遷移他庫腳本時: 批次替換 `--` 為 `#`,再人工檢查是否有誤傷(如減法運算 `--`)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved