程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 解析;怎樣使用 “--”作為注釋起始標記

解析;怎樣使用 “--”作為注釋起始標記

編輯:關於MYSQL數據庫

一些其他SQL數據庫采用“--”作為注釋開始標志。MySQL服務器采用“#”作為注釋起始字符。對於MySQL服務器,也能使用C風格的注釋:/*該處為注釋*/。

MySQL服務器3.23.3和更高版本支持“--”注釋風格,但要求注釋後面跟1空格(或控制字符,如新行)。之所以要求使用空格,是為了防止與自動生成SQL查詢有關的問題,它采用了類似下面的代碼,其中,自動為“!payment!”插入“payment”的值:

 

UPDATE account SET credit=credit-!payment!

考慮一下,如果“payment”的值為負數如“-1”時會出現什麼情況:

 

UPDATE account SET credit=credit--1

在SQL中“credit--1”是合法的表達式,但是,如果“--1”被解釋為注釋開始,部分表達式將被捨棄。其結果是,表達式的意義與預期的意義完全不同。

 

UPDATE account SET credit=credit該語句不會對值作任何更改!這表明,允許注釋以“--”開始會產生嚴重後果。

 

采用MySQL服務器3.23.3和更高版本中的這類注釋方法,“credit--1”實際上很安全。

 

另一個安全特性是,MySQL命令行客戶端將刪除所有以“--”開頭的行。

 

僅當使用高於3.23.3的MySQL時,下述信息才有意義:

 

如果有1個文本文件形式的SQL程序,該文件包含“--”注釋,應按下述方式使用replace實用工具,將其轉換為使用“#”字符的注釋:

 

shell> replace " --" " #" < text-file-with-funny-comments.sql \         
| MySQL db_name

 

而不是通常的:

 

shell> MySQL db_name < text-file-with-funny-comments.sql

你也可以編輯注釋文件,將“--”注釋更改為“#”注釋:

 

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

使用下述命令將其改回去:

 

shell> replace " #" " --" -- text-file-with-funny-comments.sql
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved