Kommentare in SQL
Vorbereitung
Zum Nachvollziehen der folgenden Beispiele kann das folgende Skript in einen MySQL-Klienten kopiert werden. Der Inhalt dieses Skripts kann aber ansonsten ignoriert werden. Bei Kopieren ist darauf zu achten, nur genau den Text von »DROP« bis zum letzten »;« zu kopieren und dann die Eingabetaste zu drücken.
- Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE T ( I VARCHAR ( 255 ), DE VARCHAR ( 255 ), EN VARCHAR ( 255 ) );
INSERT INTO T ( I, DE, EN ) VALUES ( '0', 'NULL', 'ZERO' );
INSERT INTO T ( I, DE, EN ) VALUES ( '1', 'EINS', 'ONE' );
INSERT INTO T ( I, DE, EN ) VALUES ( '2', 'ZWEI', 'TWO' );
SELECT * FROM T;- Aussprachehinweis
- zero ˈzɪroʊ
Einfache Kommentare
Alles, was auf einer Zeile »-- « (Minus, Minus, Leerzeichen) folgt, gilt als Kommentar und wird ignoriert. Im folgenden Beispiel wird der Rest der ersten Zeile ignoriert.
- Konsole (MySQL, E92, E99, C03)
SELECT -- Alpha Beta Gamma
* FROM T;+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 1 | EINS | ONE |
| 2 | ZWEI | TWO |
+------+------+------+
3 rows in set
Das Nummernzeichen
Auch das Nummernzeichen »#« kann im MySQL als Kommentareinleiter genutzt werden. Danach gilt alles bis zum Ende der Zeile als Kommentar. Dies ist aber kein Standard-SQL.
Geklammerte Kommentare *
Geklammerte Kommentare werden mit »/*« eingeleitet und mit »*/« beendet. Sie müssen nicht bis zum Ende einer Zeile reichen, sondern können auch vorher enden. Sie können auch mehrere Zeilen umfassen.
Sie gehören nicht zu Core SQL-2003 und Core SQL-99), sondern sind die Option T351 in diesen beiden Standards. Im Standard von 1992 kommen sie überhaupt nicht vor. In Standard-SQL können auch mehrere solcher Kommentare ineinander verschachtelt werden. in MySQL ist dies hingegen nicht gestattet.
- Konsole (MySQL, S99-T351, C03-T351)
SELECT /* abc */ * FROM T;
+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 1 | EINS | ONE |
| 2 | ZWEI | TWO |
+------+------+------+
3 rows in set- Konsole (MySQL, S99-T351, C03-T351)
SELECT /* abc
def */ * FROM T;+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 1 | EINS | ONE |
| 2 | ZWEI | TWO |
+------+------+------+
3 rows in set- Abfrage (S99-T351, C03-T351)
SELECT /* abc /* def */ ghi */ * FROM T;
Zitat *
- 9075-2 7.12 (Entwurf 2010, vereinfacht)
- <separator> ::= { <comment> | <white space> }...
- <comment> ::= <simple comment> | <bracketed comment>
- <simple comment> ::= <simple comment introducer> [ <comment character>... ] <newline>
- <simple comment introducer> ::= <minus sign> <minus sign>
- <bracketed comment> ::= <bracketed comment introducer> <bracketed comment contents> <bracketed comment terminator>
- <bracketed comment introducer> ::= /*
- <bracketed comment terminator> ::= */