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

MySQL註釋語法全解析:--、#與/* */的差異與安全機制

     編輯:MySQL 資料庫相關知識

MySQL支援的三種註釋風格

  • # 註釋:MySQL原生風格,從#到行尾
  • /* */ 註釋:C語言風格,多行區塊註釋
  • -- 註釋:ANSI SQL標準風格,要求雙連字號後必須跟一個空白字元(空格、換行、Tab等)

為什麼--註釋強制要求空白字元?

防止自動產生SQL時的語義歧義。經典案例:

UPDATE account SET credit = credit - !payment!

若payment值為-1,自動產生的SQL變為:

UPDATE account SET credit = credit -- 1

若-- 1被解析為註釋,語句實際變為UPDATE account SET credit = credit,完全改變原意!MySQL 3.23.3+強制--後需有空白,使credit -- 1安全解析為credit - 1。

實務操作建議

命令列客戶端自動過濾

mysql命令列工具會自動刪除以--開頭的整行,避免腳本執行異常。

舊腳本轉換技巧

使用replace工具將--註釋轉為#:

# 轉換並管線執行
shell> replace " --" " #" < text-file-with-comments.sql | mysql db_name

# 直接修改檔案
shell> replace " --" " #" -- text-file-with-comments.sql

# 還原
shell> replace " #" " --" -- text-file-with-comments.sql

版本相容性提醒

  • MySQL 3.23.3以前版本不支援--註釋
  • 遷移舊系統時,建議統一轉為#或/* */風格
  • 儲存程序、觸發器、視圖定義中推薦使用/* */多行註釋,維護性最佳
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved