Grundaufbau
SELECT <fields>
FROM <table name>
WHERE <condition>;
Dabei ist <fields>
eine kommagetrennte Liste von Attributen, z.B. id, username, email
. Alternativ kann man auch *
für alle Attribute einsetzen:
SELECT id, username FROM users;
SELECT * FROM users;
<table name>
ist der bzw. die Name(n) der abzufragenden Tabellen, z.B. users
oder kommagetrennte Namen z.B. users, likes
für Abfragen über mehrere Tabellen.
SELECT * FROM users, likes;
Wichtig dabei ist das Konzept der Resultattabelle, also bekommt man immer eine neue Tabelle von seiner Query. Diese kann man mit WHERE
filtern:
SELECT * FROM users
WHERE <condition>;
In dem Fall werden nur alle Nutzer zurückgegeben, wo <condition>
erfüllt ist. Dazu später mehr.
Man kann übrigens auch die Resultattabelle direkt modifizieren. Also kann man z.B. Felder der Resultattabelle mit AS
umbenennen:
SELECT name AS full_name
FROM users;
Die Resultattabelle hätte dann ein Attribut, nämlich full_name
.
Konditionen
Vergleiche
=
Gleichheit -column = value
!=
bzw.<>
Ungleichheit -column != value
>
Größer als - `column > value<
Kleiner als - `column < value>=
Größer oder gleich - `column >= value<=
Kleiner oder gleich - `column ⇐ valueBETWEEN
Gleichheit - `column BETWEEN value1 AND value2LIKE
Vergleich von Text- Spalte enthält Wert:
column LIKE '%value%'
- Spalte beginnt mit Wert:
column LIKE 'value%'
- Spalte endet mit Wert:
column LIKE '%value'
- Wert ist gleich (wie
=
):column LIKE 'value'
(aber hierbei kann man nicht nach einem Prozentzeichen überprüfen, da dies eine Wildcard repräsentiert)
- Spalte enthält Wert:
Logikoperatoren
AND
- TRUE, falls beide booleschen Ausdrücke TRUE ergeben.
SELECT *
FROM users
WHERE username = "Bea" AND id = 3;
OR
- TRUE, falls mindestens einer der beiden booleschen Ausdrücke TRUE ergibt.
SELECT *
FROM users
WHERE username = "Bea" OR username = "Naomi";