Menu
Coddy logo textTech

SQL Spickzettel

Zuletzt aktualisiert

Daten abfragen (SELECT)

Der Kern von SQL: Zeilen aus einer oder mehreren Tabellen lesen.

OperationSyntax
Alle Spalten auswählenSELECT * FROM users;
Bestimmte Spalten auswählenSELECT id, name FROM users;
Eine Spalte umbenennen (Alias)SELECT name AS full_name FROM users;
Eindeutige WerteSELECT DISTINCT country FROM users;
Zeilen begrenzenSELECT * FROM users LIMIT 10;
Überspringen, dann begrenzen (Paginierung)SELECT * FROM users LIMIT 10 OFFSET 20;
Zeilen zählenSELECT COUNT(*) FROM users;

Zeilen filtern (WHERE)

Eingrenzen, welche Zeilen eine Abfrage zurückgibt.

OperationSyntax
Gleichheit / VergleichWHERE age >= 18
Mehrere BedingungenWHERE age >= 18 AND country = 'US'
Eine der BedingungenWHERE role = 'admin' OR role = 'owner'
In einer MengeWHERE country IN ('US', 'CA', 'MX')
Zwischen einem BereichWHERE price BETWEEN 10 AND 50
MustervergleichWHERE email LIKE '%@gmail.com'
Ist / ist nicht nullWHERE deleted_at IS NULL
NegierenWHERE status NOT IN ('archived')

Sortieren & Gruppieren

OperationSyntax
Aufsteigend sortieren (Standard)ORDER BY created_at
Absteigend sortierenORDER BY created_at DESC
Nach mehreren Spalten sortierenORDER BY country, name DESC
Zeilen gruppierenSELECT country, COUNT(*) FROM users GROUP BY country;
Gruppen filternGROUP BY country HAVING COUNT(*) > 100

Joins

Zeilen aus zwei Tabellen anhand einer übereinstimmenden Spalte kombinieren.

Join-TypGibt zurückSyntax
INNER JOINNur Zeilen, die in beiden Tabellen übereinstimmenFROM orders o INNER JOIN users u ON o.user_id = u.id
LEFT JOINAlle linken Zeilen + Übereinstimmungen (sonst NULLs)FROM users u LEFT JOIN orders o ON o.user_id = u.id
RIGHT JOINAlle rechten Zeilen + ÜbereinstimmungenFROM orders o RIGHT JOIN users u ON o.user_id = u.id
FULL OUTER JOINAlle Zeilen von beiden SeitenFROM a FULL OUTER JOIN b ON a.id = b.a_id
CROSS JOINJede Kombination (kartesisch)FROM sizes CROSS JOIN colors
Self JoinEine Tabelle, die mit sich selbst verknüpft wirdFROM employees e JOIN employees m ON e.manager_id = m.id

Aggregatfunktionen

Einen einzelnen Wert über eine Gruppe von Zeilen berechnen.

FunktionWas sie tut
COUNT(*)Anzahl der Zeilen
COUNT(col)Anzahl der Nicht-Null-Werte
SUM(col)Summe einer numerischen Spalte
AVG(col)Durchschnittswert
MIN(col) / MAX(col)Kleinster / größter Wert
STRING_AGG(col, ',')Werte verketten (Postgres; GROUP_CONCAT in MySQL)

Window-Funktionen

Über eine Menge von Zeilen berechnen, ohne sie zu einer einzigen zusammenzufassen.

FunktionSyntax
ZeilennummerROW_NUMBER() OVER (ORDER BY score DESC)
Rang (mit Lücken)RANK() OVER (PARTITION BY country ORDER BY score DESC)
Dichter RangDENSE_RANK() OVER (ORDER BY score DESC)
Laufende SummeSUM(amount) OVER (ORDER BY created_at)
Vorherige / nächste ZeileLAG(score) OVER (ORDER BY date), LEAD(score) OVER (...)

Daten ändern (INSERT, UPDATE, DELETE)

OperationSyntax
Eine Zeile einfügenINSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com');
Mehrere Zeilen einfügenINSERT INTO users (name) VALUES ('Ada'), ('Alan');
Zeilen aktualisierenUPDATE users SET active = true WHERE id = 1;
Zeilen löschenDELETE FROM users WHERE active = false;
Upsert (Postgres/SQLite)INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;

Tabellen definieren (DDL)

OperationSyntax
Eine Tabelle erstellenCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
Eine Spalte hinzufügenALTER TABLE users ADD COLUMN age INTEGER;
Eine Spalte entfernenALTER TABLE users DROP COLUMN age;
Eine Tabelle löschenDROP TABLE users;
Einen Index erstellenCREATE INDEX idx_users_email ON users (email);
FremdschlüsselFOREIGN KEY (user_id) REFERENCES users (id)

Jede SQL-Anweisung, Klausel und jeder Join, den du brauchst, auf einer Seite. Dieser SQL-Spickzettel ist eine Schnellreferenz zum Abfragen und Ändern relationaler Daten - die SELECT-Klauseln, die vier JOIN-Typen, Aggregation sowie das DDL und DML, mit dem du Tabellen erstellst und aktualisierst.

Die hier gezeigte Syntax ist Standard-ANSI-SQL und funktioniert in PostgreSQL, MySQL, SQLite und SQL Server, sofern nicht anders angegeben. Kopiere, was du brauchst, oder probiere jede Abfrage live im SQL-Playground aus - keine Datenbank zu installieren.

SQL-Spickzettel-FAQ

Ist dieser SQL-Spickzettel kostenlos?
Ja. Dieser SQL-Spickzettel ist komplett kostenlos, ohne Anmeldung. Setze ein Lesezeichen und komm wieder, wann immer du eine Klausel, einen Join oder eine Funktion nachschlagen musst.
Funktioniert das für MySQL, PostgreSQL und SQLite?
Größtenteils ja. Die hier gezeigte SELECT-, WHERE-, JOIN-, GROUP BY- und DDL-Syntax ist Standard-ANSI-SQL und läuft in MySQL, PostgreSQL, SQLite und SQL Server gleich. Einige fortgeschrittene Features unterscheiden sich je nach Dialekt - Upserts und String-Aggregation sind die häufigsten - und diese Zeilen weisen auf den Unterschied hin.
Was ist der Unterschied zwischen INNER JOIN und LEFT JOIN?
Ein INNER JOIN gibt nur die Zeilen zurück, die eine Übereinstimmung in beiden Tabellen haben. Ein LEFT JOIN gibt jede Zeile aus der linken (ersten) Tabelle zurück und füllt NULL für Spalten aus der rechten Tabelle ein, wenn es keine Übereinstimmung gibt - nützlich, wenn du alle Nutzer haben möchtest, auch wenn einige keine Bestellungen haben.
Kann ich diese SQL-Befehle online üben?
Ja. Öffne den SQL-Playground, um jede Abfrage aus diesem Spickzettel gegen eine echte Datenbank in deinem Browser auszuführen - keine Installation nötig. Wenn du Struktur möchtest, führt dich Coddys kostenloser interaktiver SQL-Kurs Schritt für Schritt von SELECT über Joins bis zu Window-Funktionen.
Ist dieser Spickzettel gut für Anfänger?
Ja. Er ist von den häufigsten Operationen (Abfragen und Filtern) hin zu den fortgeschrittenen (Window-Funktionen) gegliedert, sodass du die oberen Abschnitte ab dem ersten Tag nutzen und in den Rest hineinwachsen kannst.
Coddy programming languages illustration

Lerne SQL mit Coddy

LOS GEHT'S