Datenbanken & SQL
SQL Syntax
Kompakte Übersicht über SQL-Befehle, Datentypen, Funktionen und Operatoren für die Abschlussprüfung.
Zur Prüfung bekommst du ein offizielles Beiblatt mit SQL-Syntax.
Es ist aber sehr sinnvoll, die wichtigsten Befehle auswendig zu können, um in der Prüfung Zeit zu sparen und dich voll auf die Aufgaben zu konzentrieren. Außerdem musst du wissen, wie man die Syntax korrekt anwendet.
Tabellenbefehle (DDL – Data Definition Language)
CREATE TABLE
Erzeugt eine neue Tabelle mit Spalten, Datentypen und Schlüsseln.
CREATE TABLE kunden (
id INTEGER PRIMARY KEY,
name VARCHAR(50),
email TEXT
);
ALTER TABLE
Ändert bestehende Tabellenstruktur.
ALTER TABLE kunden ADD COLUMN telefon TEXT;
ALTER TABLE kunden DROP COLUMN telefon;
ALTER TABLE kunden MODIFY COLUMN name VARCHAR(100);
ALTER TABLE kunden ADD FOREIGN KEY (stadt_id) REFERENCES stadt(id);
DROP TABLE
Löscht eine Tabelle dauerhaft.
DROP TABLE kunden;
Schlüssel
PRIMARY KEY
Definiert eine oder mehrere Spalten als eindeutige Identifikation eines Datensatzes.
PRIMARY KEY (id)
FOREIGN KEY
Verknüpft eine Spalte mit einer anderen Tabelle (Referenz).
FOREIGN KEY (stadt_id) REFERENCES stadt(id)
Datentypen
Typ | Beschreibung |
---|---|
CHAR(n) | Text mit fester Länge n |
VARCHAR(n) | Text mit variabler Länge bis maximal n Zeichen ` |
TEXT | Langer Text ohne feste Begrenzung |
DECIMAL(p, s) | Feste Kommazahl (p Dezimalstellen insgesamt, s Dezimalstellen hinter dem Komma) |
INTEGER | Ganzzahl |
DOUBLE | Gleitkommazahl |
DATE | Datum (Format: DD.MM.YYYY ) |
Datenmanipulation (DML – Data Manipulation Language)
INSERT INTO
Fügt neue Datensätze ein.
INSERT INTO kunden (name, email)
VALUES ('Anna', '[email protected]');
SELECT
Liest Daten aus einer Tabelle.
SELECT name FROM kunden;
SELECT * FROM kunden WHERE email IS NOT NULL;
UPDATE
Ändert bestehende Daten.
UPDATE kunden
SET email = '[email protected]'
WHERE id = 1;
DELETE
Löscht bestimmte Datensätze.
DELETE FROM kunden WHERE id = 1;
SELECT – Abfragen
Spaltenauswahl
SELECT name, email FROM kunden;
SELECT * FROM kunden;
Duplikate entfernen
SELECT DISTINCT stadt FROM kunden;
WHERE
) Bedingungen (
SELECT * FROM kunden WHERE name = 'Tom';
GROUP BY
) mit Bedingungen (HAVING
) Gruppierung (
SELECT stadt_id, COUNT(*) AS anzahl
FROM kunden
GROUP BY stadt_id
HAVING COUNT(*) > 5;
EXISTS
, NOT EXISTS
) Unterabfragen (
SELECT name FROM kunden
WHERE EXISTS (
SELECT * FROM bestellungen
WHERE kunden.id = bestellungen.kunden_id
);
SELECT name FROM kunden
WHERE NOT EXISTS (
SELECT * FROM bestellungen
WHERE kunden.id = bestellungen.kunden_id
);
ORDER BY
) Sortierung (
SELECT name FROM kunden
ORDER BY name ASC; -- aufsteigend (Standard)
SELECT name FROM kunden
ORDER BY name DESC; -- absteigend
JOINs – Tabellen verknüpfen
SELECT k.name, b.produkt
FROM kunden k
JOIN bestellungen b ON k.id = b.kunden_id;
JOIN-Typ | Beschreibung |
---|---|
INNER JOIN | Nur passende Zeilen in beiden Tabellen |
LEFT JOIN | Alle Zeilen aus linker Tabelle, auch ohne passenden Partner |
RIGHT JOIN | Alle Zeilen aus rechter Tabelle, auch ohne passenden Partner |
FULL OUTER JOIN | Alle Zeilen aus beiden Tabellen, auch ohne Übereinstimmung |
Funktionen
Funktion | Beschreibung | Beispiel |
---|---|---|
COUNT() | Zählt alle Zeilen | SELECT COUNT(*) FROM kunden; |
AVG() | Durchschnitt | SELECT AVG(betrag) FROM bestellungen; |
SUM() | Summe | SELECT SUM(betrag) FROM bestellungen; |
MIN() / MAX() | Kleinster / größter Wert | SELECT MIN(datum) ... |
Datumsfunktionen und -teile
Funktion | Beschreibung | Beispiel |
---|---|---|
YEAR(datum) | Jahr extrahieren | SELECT YEAR(bestellt_am); |
MONTH(datum) | Monat extrahieren | SELECT MONTH(bestellt_am); |
DAY(datum) | Tag extrahieren | SELECT DAY(bestellt_am); |
WEEK(datum) | Kalenderwoche | SELECT WEEK(bestellt_am); |
DATE('now') | Aktuelles Datum (SQLite) | SELECT DATE('now'); |
Operatoren
Operator | Bedeutung | Beispiel |
---|---|---|
= / <> / < / > / <= / >= | Vergleichsoperatoren | WHERE preis >= 100 |
AND , OR , NOT | Logische Verknüpfung | WHERE preis > 50 AND bestand > 0 |
IS NULL , IS NOT NULL | Prüfung auf NULL-Werte | WHERE email IS NOT NULL |
LIKE , NOT LIKE | Mustervergleich mit % und _ | WHERE name LIKE 'A%'; |
IN (...) | Prüfung auf enthaltene Werte | WHERE stadt_id IN (1, 2, 3) |
BETWEEN x AND y | Bereichsprüfung | WHERE preis BETWEEN 100 AND 200 |
CASE-Ausdruck
Der CASE-Ausdruck ermöglicht es, bedingte Logik direkt in SELECT-Abfragen einzubauen.
SELECT name,
CASE
WHEN punkte >= 50 THEN 'bestanden'
ELSE 'nicht bestanden'
END AS status
FROM pruefungen;