SQL Server 註釋語法簡單但易混淆。本文系統整理單行註釋 (--) 與多行註釋 (/* ... */) 的用法差異、巢狀限制與實戰範例,並附上管理工具輸出效果圖說明。
| 類型 | 語法 | 範圍 | 巢狀支援 |
|---|---|---|---|
| 單行註釋 | -- 註釋內容 | 從 -- 至行尾 | 不適用 |
| 多行註釋 | /* 註釋內容 */ | 跨多行 | 不支援巢狀 (內層 */ 會提前結束) |
-- 選擇列表中的列 'Student.sname' 無效,因為該列沒有包含在聚合函數或 GROUP BY 子句中。
SELECT Student.sno, sname, AVG(grade) AS avg_g
FROM Student, SC
WHERE Student.sno = SC.sno AND cno <> '008'
GROUP BY Student.sno -- 沒加 Student. 列名 'sno' 不明確。
HAVING MIN(grade) >= 60
ORDER BY avg_g DESC;
注意:-- 後必須跟隨空格或換行,否則部分版本可能不識別。
/*
把對 Student 表和 Course 表的全部權限授予用戶 U2 和 U3
GRANT ALL PRIVILEGES ON TABLE Student, Course TO U2, U3;
把對表 SC 的查詢權限授予所有用戶
GRANT SELECT ON TABLE SC TO PUBLIC;
把查詢 Student 表和修改學生學號的權限授給用戶 U4
GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
把用戶 U4 修改學生學號的權限收回
REVOKE UPDATE(Sno) ON TABLE Student FROM U4;
*/
/* outer /* inner */ outer */ → 遇到第一個 */ 即結束,外層剩餘部分變為有效 SQL 導致語法錯誤。SELECT '-- not a comment'; 不會被視為註釋。GO,每個批次獨立解析。SSMS (SQL Server Management Studio) 中註釋以綠色斜體顯示,便於區分。執行帶註釋的腳本時,訊息頁籤不顯示註釋內容。
--,區塊說明、暫時停用代碼用 /* */。