Die Ausdruckklammern in SQL
Vorbereitung
Zum Nachvollziehen der folgenden Beispiele kann das folgende Skript in einen MySQL-Klienten kopiert werden. Bei Kopieren ist darauf zu achten nur genau den Text von »SET« bis zum letzten »;« zu kopieren und dann die Eingabetaste zu drücken.
- Skript (MySQL )
WARNINGS; SET sql_mode = 'ANSI,TRADITIONAL';
DROP SCHEMA IF EXISTS S; CREATE SCHEMA S; USE S;CREATE TABLE ONE ( COL INTEGER );
INSERT INTO ONE ( COL ) VALUES ( 1 );SELECT * FROM ONE;
Ein Ausdruck kann in runde Klammern eingeschlossen werden, ohne daß dies seinen Typ oder Wert ändert.
- Konsole
SELECT ( 65 );
+----+
| 65 |
+----+
| 65 |
+----+- Konsole
SELECT COL;
+------+
| COL |
+------+
| 1 |
+------+- Konsole
SELECT ( COL );
+------+
| COL |
+------+
| 1 |
+------+
(Hier werden die Klammern nicht im Spaltentitel gezeigt.)
- Ausdruck (Syntaxdiagramm)
Primaerausdruck
.-------------.
---.------------>| Spaltenname |-------->.--->
| '-------------' ^
| .-------------. |
'------------>| Literal |---------'
| '-------------' |
| .-. .----------. .-. |
'--->( ( )--->| Ausdruck |--->( ) )---'
'-' '----------' '-'
Ausdruck
.-. .-----------------.
---.--->( - )--->| Primaerausdruck |-----.--->
| '-' '-----------------' |
| .-. .-----------------. |
'--->( + )--->| Primaerausdruck |-----'
| '-' '-----------------' |
| .----------. |
'------------>| Ausdruck |------------'
'----------'
Es ist auch möglich, mehrere Operatoren zu kombinieren. Beispielsweise erst den Klammeroperator und dann den Minusoperator anzuwenden oder umgekehrt.
- Konsole
SELECT -( 65 );
+---------+
| -( 65 ) |
+---------+
| -65 |
+---------+- Konsole
SELECT ( -65 );
+---------+
| ( -65 ) |
+---------+
| -65 |
+---------+
(Hier werden die Klammern nun im Spaltentitel gezeigt.)
Auch Texte können eingeklammert werden.
- Konsole
SELECT ( 'xyz' );
+-----+
| xyz |
+-----+
| xyz |
+-----+
Typregeln
Der Typ eines Klammerausdrucks ist der Typ des eingeklammerten Ausdrucks (des Operanden). Das Einklammern ändert den Typ also nicht.
Übungsfragen
/ Ausgabe vorhersagen
Welcher Wert erscheint an der Stelle des Fragezeichens in der Ausgabe der Tabelle »ANTON«?
- Konsole
DROP SCHEMA IF EXISTS S; CREATE SCHEMA S; USE S;
CREATE TABLE ANTON ( BERTA INTEGER );
INSERT INTO ANTON ( BERTA ) VALUES ( 4 );
SELECT ( BERTA ) FROM ANTON;+-------+
| BERTA |
+-------+
| ? |
+-------+
/ Ausgabe vorhersagen (1)
Der Tabellenspeicher »ANTON« soll hier denselben Inhalt haben, wie in der vorherigen Übungsfrage.
Welcher Wert erscheint an der Stelle des Fragezeichens in der Ausgabe der Tabelle »ANTON«?
- Konsole
SELECT -( BERTA ) FROM ANTON;
+-------+
| BERTA |
+-------+
| ? |
+-------+
/ Ausgabe vorhersagen (2)
Der Tabellenspeicher »ANTON« soll hier denselben Inhalt haben, wie in der vorherigen Übungsfrage.
Welcher Wert erscheint an der Stelle des Fragezeichens in der Ausgabe der Tabelle »ANTON«?
- Konsole
SELECT (-( BERTA )) FROM ANTON;
+-------+
| BERTA |
+-------+
| ? |
+-------+
/ Ausgabe vorhersagen (3)
Der Tabellenspeicher »ANTON« soll hier denselben Inhalt haben, wie in der vorherigen Übungsfrage.
Welcher Wert erscheint an der Stelle des Fragezeichens in der Ausgabe der Tabelle »ANTON«?
- Konsole
SELECT -(-( BERTA )) FROM ANTON;
+-------+
| BERTA |
+-------+
| ? |
+-------+