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

TypBeschreibung
CHAR(n)Text mit fester Länge n
VARCHAR(n)Text mit variabler Länge bis maximal n Zeichen `
TEXTLanger Text ohne feste Begrenzung
DECIMAL(p, s)Feste Kommazahl (p Dezimalstellen insgesamt, s Dezimalstellen hinter dem Komma)
INTEGERGanzzahl
DOUBLEGleitkommazahl
DATEDatum (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;

Bedingungen (WHERE)

SELECT * FROM kunden WHERE name = 'Tom';

Gruppierung (GROUP BY) mit Bedingungen (HAVING)

SELECT stadt_id, COUNT(*) AS anzahl
FROM kunden
GROUP BY stadt_id
HAVING COUNT(*) > 5;

Unterabfragen (EXISTS, NOT EXISTS)

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
);

Sortierung (ORDER BY)

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-TypBeschreibung
INNER JOINNur passende Zeilen in beiden Tabellen
LEFT JOINAlle Zeilen aus linker Tabelle, auch ohne passenden Partner
RIGHT JOINAlle Zeilen aus rechter Tabelle, auch ohne passenden Partner
FULL OUTER JOINAlle Zeilen aus beiden Tabellen, auch ohne Übereinstimmung

Funktionen

FunktionBeschreibungBeispiel
COUNT()Zählt alle ZeilenSELECT COUNT(*) FROM kunden;
AVG()DurchschnittSELECT AVG(betrag) FROM bestellungen;
SUM()SummeSELECT SUM(betrag) FROM bestellungen;
MIN() / MAX()Kleinster / größter WertSELECT MIN(datum) ...

Datumsfunktionen und -teile

FunktionBeschreibungBeispiel
YEAR(datum)Jahr extrahierenSELECT YEAR(bestellt_am);
MONTH(datum)Monat extrahierenSELECT MONTH(bestellt_am);
DAY(datum)Tag extrahierenSELECT DAY(bestellt_am);
WEEK(datum)KalenderwocheSELECT WEEK(bestellt_am);
DATE('now')Aktuelles Datum (SQLite)SELECT DATE('now');

Operatoren

OperatorBedeutungBeispiel
= / <> / < / > / <= / >=VergleichsoperatorenWHERE preis >= 100
AND, OR, NOTLogische VerknüpfungWHERE preis > 50 AND bestand > 0
IS NULL, IS NOT NULLPrüfung auf NULL-WerteWHERE email IS NOT NULL
LIKE, NOT LIKEMustervergleich mit % und _WHERE name LIKE 'A%';
IN (...)Prüfung auf enthaltene WerteWHERE stadt_id IN (1, 2, 3)
BETWEEN x AND yBereichsprüfungWHERE 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;