Structured Query Language (SQL)

Sie sind hier: StartseiteStructured Query LanguageOperatoren

CM, 01.09.2001

Operatoren: Operatoren (allgemein) (Arithmetische Operatoren, Vergleichsoperatoren, Zeichenoperatoren, Logische Operatoren, Mengenoperatoren, Verschiedene Operatoren).

Operatoren (allgemein)

In SQL unterscheidet man in arithmetische (+, -, /, *, %), Vergleichs-, Zeichen-, logische, Mengen- und verschiedene Operatoren. Wenn mehrere Operatoren ohne Klammern in einem Ausdruck vorkommen, findet die Auswertung wie folgt statt:

  1. Multiplikation
  2. Division
  3. Modulo (Ermittlung eines Restwertes bei ganzzahliger Division)
  4. Addition
  5. Subtraktion

Arithmetische Operatoren

Addition (+):

Nehmen wir als Beispiel eine Tabelle namens Preise mit Artikel, Einkaufspreis und weiteren Spalten. Zu diesem Einkaufspreis wollen wir nun 50 Cent addieren und als Ergebnis in einer neuen Spalte anzeigen lassen.

SELECT Artikel, Einkaufspreis, (Einkaufspreis + 0.50) Ergebnis
FROM Preise;

Im Endeffekt werden dann drei Spalten ausgegeben. Die erste und zweite sind die Ursprungsspalten Artikel und Einkaufspreis, die dritte trägt die Überschrift Ergebnis und enthält den Betrag aus Addition des Einkaufspreises und 50 Cent.

Das Komma muss im Quelltext als Punkt notiert werden.

Subtraktion (-):

Mithilfe des Minuszeichens kann man sowohl das Vorzeichen einer Zahl ändern als auch zwei Spalten voneinander subtrahieren. Ist natürlich nicht auf Zeichenfelder anwendbar.

Multiplikation (*) und Division (/):

Altbekannte Wirkungsweise. Einzig zu beachten: Kommazahlen mit Punkt statt Komma notieren!

Modulo (%):

Ermittlung einer ganzzahligen Restzahl bei Division. Nehmen wir als Beispiel eine Tabelle namens Modulo mit den Spalten Zaehler und Nenner. Zaehler soll durch Nenner dividiert und der Restwert in einer imaginären Spalte Rest ausgegeben werden.

SELECT Zaehler, Nenner, (Zaehler % Nenner) Rest
FROM Modulo;

Vergleichsoperatoren

SELECT * FROM Preise
WHERE Einkauspreis IS NULL;

Auf diese Weise erhalten wir alle Zeilen der Tabelle Preise, bei denen in Spalte Einkaufspreise nichts angegeben ist (weder eine Null noch ein Leerzeichen).

Nach dem gleichen Prinzip und ähnlicher Notation lassen sich die Operatoren gleich (=), kleiner als (<), kleiner als oder gleich (<=) , größer als (>), größer als oder gleich (>=) und ungleich (<> oder !=) einsetzen.

Beispiel:
SELECT * FROM Preise
WHERE Einkauspreis = '5.50';

Man erhält hier die Ausgabe aller Zeilen, in den der Einkaufspreis 5,50 beträgt. Diese Operatoren lassen sich auch auf Zeichenfelder anwenden.

Zeichenoperatoren

Abrufen von Daten, die einem bestimmten Muster folgen.

SELECT * FROM Preise
WHERE Artikel LIKE '%PC%';

Die Ausgabe würde alle Zeilen beinhalten, in denen in der Spalte Artikel PC erwähnt ist. Das Zeichen % dient dabei als Platzhalter. In o.g. Beispiel werden alle Zeilen ausgewählt, in denen Artikel auf irgendeine Weise die Buchstaben PC beinhalten. Bitte die Groß-/Kleinschreibung des zu suchenden Wortes beachten!

Ein zweite Variante ist mit dem Unterstrich (_) gegeben. Dieser dient als Platzhalter für genau ein Zeichen. In einer Tabelle mit Telefonnummern unterschiedlicher Vorwahlbezirke würde die folgende Angabe eine Ausgabe aller Telefonnummer ergeben, deren Vorwahl mit Null beginnt, dann eine Zahl von 0 bis 9 enthält und als dritte Zahl erneut die Null aufweist:

SELECT * FROM Telefon
WHERE Vorwahl LIKE '0_0';

Beide Platzhalter sind auch kombinierbar.

Eine dritte und letzte Möglichkeit der Zeichoperatoren bietet die Zeichenverkettung (||). So ist beispielsweise die Verkettung von Vor- und Nachnamen mit Ausgabe in einer neuen Spalte Gesamtname möglich.

SELECT Vorname || Nachname Gesamtname
FROM Adressen;

Logische Operatoren

Zur Kombination mehrerer Bedingungen in einer WHERE-Klausel.

Mengenoperatoren

Erste Möglichkeit: UNION / UNION ALL - Ausgabe abzüglich aller doppelt vorkommender Werte.

SELECT Name
FROM Tabelle1
UNION SELECT Name
FROM Tabelle2;

Liefert als Ergebnis alle Namen der beiden Tabellen 1 und 2 ohne Namen doppelt aufzuzählen. UNION ALL würde auch doppelte Namen auflisten.

Als zweites gibt es den Operator INTERSECT. Dieser bildet die Schnittmenge, gibt also nur die doppelt vorkommenden Namen zurück.

Der Operator MINUS liefert alle Namen, die in erstgenannnter, nicht aber in zweitgenannter Tabelle vorkommen.

Verschiedene Operatoren

IN und BETWEEN als Kurzversionen. Mit dem Operator IN können Gleichheiten aufgezählt werden.

Beispiel Telefonnummern:
SELECT * FROM Telefon
WHERE Vorwahl IN ('030', '03342', '040');

Die zweite Kurzversion gilt für einen bestimmten Datenbereich. Eine Preis-Tabelle als Beispielgrundlage:

SELECT * FROM Preise
WHERE Einkaufspreis BETWEEN 100.00 AND 200.00;