SELECT – Daten abfragen Operatoren
SELECT * FROM t; alle Zeilen + Spalten = gleich
SELECT sp1, sp2 FROM t; bestimmte Spalten <> ungleich
... WHERE sp = 'wert'; genau gleich > / < grösser / kleiner
... WHERE sp LIKE "%x enthält x >= / <= grösser-gleich / kleiner-gleich
%"; LIKE "%x%" enthält x
... WHERE sp LIKE "S%"; beginnt mit S LIKE "x%" beginnt mit x
... WHERE sp LIKE "%x"; endet mit x LIKE "%x" endet mit x
... WHERE z BETWEEN 10 zwischen 10 und 20 BETWEEN a AND b zwischen a und b
AND 20;
AND beide müssen stimmen
... WHERE a='x' AND beide Bedingungen
b>5; OR mindestens eine stimmt
... WHERE a='x' OR mindestens eine NOT LIKE entspricht nicht
b='y';
... WHERE sp NOT LIKE enthält kein K
"%K%";
JOIN – Tabellen verknüpfen GROUP BY & INSERT
Grundform: SELECT [Link], [Link] FROM t1 GROUP BY: nach Spalte gruppieren
JOIN t2 ON [Link] = [Link].; Bsp: SELECT city, COUNT(city)
Bsp 1: SELECT [Link], [Link] FROM users GROUP BY city;
FROM users Bsp: SELECT gender, COUNT(*)
JOIN photos ON photos.user_id = [Link] FROM users GROUP BY gender;
WHERE [Link] = "female"; INSERT: Datensatz einfügen
Bsp 2: FROM users Bsp: INSERT INTO users (id, username, email, gender)
JOIN likes ON [Link] = likes.user_id VALUES ("300","anna","a@[Link]","female");
JOIN tags ON tags.photo_id = likes.photo_id
Reihenfolge einer SQL-Abfrage
1. SELECT Welche Spalten anzeigen? (* = alle, oder: name, email, ...)
2. FROM Aus welcher Tabelle? (users / photos / comments / likes / ...)
3. JOIN ... ON Mit welcher anderen Tabelle verknüpfen? → gemeinsamer Schlüssel (z.B. photos.user_id = [Link])
4. WHERE Welche Bedingung / Filter? (=, LIKE, BETWEEN, AND, OR, NOT LIKE, ...)
5. GROUP BY Nach welcher Spalte gruppieren? (z.B. city, gender)
Instahub – häufige Abfragen
Name + Email SELECT name, email FROM users;
Nur weiblich WHERE gender = "female"
'Johan' in Username WHERE username LIKE "%Johan%"
Unter 18 J. WHERE birthday > "2007-05-16"
17–22 Jahre WHERE birthday BETWEEN "2003-05-16" AND
"2008-05-16"
< 1.65m WHERE centimeters < 165
Beginnt mit S WHERE username LIKE "S%"
Fotos kommentiert COUNT(DISTINCT photo_id) FROM comments
Aggregat-Funktionen
COUNT(spalte) Anzahl Zeilen zählen
COUNT(DISTINCT sp) nur eindeutige Werte
MIN(spalte) kleinsten Wert
MAX(spalte) grössten Wert
AVG(spalte) Durchschnitt
SUM(spalte) Summe
Bsp: SELECT COUNT(id) FROM users;
Bsp: SELECT AVG(centimeters) FROM users;
Bsp: SELECT COUNT(DISTINCT photo_id) FROM
comments;