Jede einzelne SQL-Anweisungen muss mit einem Semikolon (;) geschlossen werden.
SELECT
SELECT - FROM
Mit der Anweisung SELECT (spalten,)
legt man fest, welche Daten einer Tabelle ausgewählt werden sollen.
SELECT *
wählt dabei alle Spalten / Kategorien aus. Möchte man die Auswahl auf einzelne Spalten beschränken, dann kann anstatt des Sternchens eine mit Kommata getrennte Liste genutzt werden: SELECT spalte1, spalte2
Mit der FROM
-Anweisung legt man fest aus welcher Tabelle Daten bezogen werden sollen.
Die Minimalanweisung für eine SELECT-Abfrage ist: SELECT * FROM tabellenname;
Weitere Anweisungen für spezifischere Anfragen findet ihr unten:
ORDER BY
Mit der Anweisung ORDER BY (spalten ASC|DESC,)
lassen sich die Suchergebnisse den Spalten entsprechend sortieren.
ORDER BY meinespalte
sortiert das Ergebnis der Abfrage nach meinespalte. Mit ASC
(ascending) und DESC
(descending) lassen sich die Ergebnisse entweder auf- oder absteigend sortieren.
Soll nach mehreren Spalten sortiert werden, dann sind diese kommasepariert anzugeben. Dabei werden die Ergebnisse zuerst nach der ersten angegeben Spalte, dann nach der zweiten, usw. sortiert.
Folgendes Beispiel soll aus der Tabelle meinspiel alle Daten angeben, die zuerst aufsteigend nach level und danach absteigend nach punkte sortiert werden sollen.
SELECT * FROM mein_spiel ORDER BY level ASC, punkte DESC;
Beispielausgabe:
username | level | punkte |
---|---|---|
Elli | 1 | 5200 |
Tommy | 1 | 3422 |
Mimmy | 1 | 1563 |
Mimmy | 2 | 645 |
Mimmy | 3 | 4242 |
LIMIT
Mit der Anweisung LIMIT (maximale_ergebnisse)
wird die Anzahl der Ergebnisse beschränkt. Sollen beim obigen Beispiel nur die ersten zwei Ergebnisse angezeigt werden, so würde die Abfrage wie folgt lauten:
SELECT * FROM mein_spiel ORDER BY level ASC, punkte DESC LIMIT 2;
DISTINCT
Mit DISTINCT
können mehrfache Einträge vermieden werden. Soll aus obigen Beispiel eine Namensliste ausgegeben werden, dann wären doppelte Werte eher nicht erwünscht, die entsprechende Abfrage wäre:
SELECT DISTINCT username FROM mein_spiel
WHERE - IS / LIKE
Mit WHERE (bedingungen,)
können bestimmte Bedingungen an die Ergebnisse gestellt werden.
Es sollen nur Datensätze mit Punktzahlen größer als 3000 ausgegeben werden:
SELECT * FROM mein_spiel WHERE punkte > 3000;
Es sollen nur Datensätze von Michi mit Punktzahlen größer als 3000 ausgegeben werden:
SELECT * FROM mein_spiel WHERE (punkte > 3000 AND username='Michi';)
Anstatt harter Vergleichsoperationen gibt es für Vergleiche auch den Operator LIKE (pattern)
. Sollen jetzt alle Nutzernamen ausgegeben werden, die die Buchstabenkombination mmy im Namen besitzen, nutzen wir das Suchmuster "%mmy%". Die Prozentzeichen stehen dabei für Platzhalter für beliebige andere Buchstaben. Im Beispiel bräuchten wir das letzte Prozentzeichen nicht, da beide Namen auf mmy enden.
SELECT DISTINCT username FROM mein_spiel WHERE username LIKE "%mmy%";
Lesbarkeitskriterien
Zur besseren Lesbarkeit der Anfragen ist es zu raten, dass Schlüsselworte komplett in Großbuchstaben geschrieben werden. Ferner ist es in der Regel nützlich, dass bei längeren Anfragen jede Sinneinheit in eine Zeile geschrieben wird:
1
2
3
SELECT DISTINCT username
FROM mein_spiel
WHERE username LIKE "%mmy%";