DatenbankLab

Datenbanken & SQL · Staatliche Berufsschule 1 Kempten
← Übersicht

Datenbanken & SQL

SQL sieht nach Programmieren aus, ist aber näher an einem gut formulierten Satz: Du sagst der Datenbank, was du wissen willst – nicht, wie sie es holen soll. Fünf Wörter reichen für den Anfang.

🚀 Noch nie SQL gemacht? Dann hier entlang.

Du brauchst kein Vorwissen und musst am Anfang nichts tippen. Zwei Wege führen rein – nimm den, der dir mehr liegt:

Schritt für Schritt zur eigenen Abfrage
🧱
Schritt 1
SQL-Baukasten

Abfragen aus fertigen Bausteinen zusammentippen – ohne eine Zeile zu schreiben. Drei Stufen, ab Stufe 2 mit Ablenkern.

Ohne Tippen · 3 Stufen
✏️
Schritt 2
Lückentext

Die Abfrage steht fast fertig da – du ergänzt die fehlenden Schlüsselwörter und siehst sofort das Ergebnis.

Auswählen · 3 Stufen
🔮
Schritt 3
Was kommt raus?

Abfrage lesen, Ergebnis vorhersagen. Die falschen Antworten sind echte Ergebnisse ähnlicher Abfragen – da fallen Denkfehler auf.

Lesen üben · 3 Stufen
🧮
Schritt 4
Abfragen-Trainer

Jetzt selbst schreiben. Drei Stufen, gestufte Tipps und Aufgaben aus echten Übungsblättern und Prüfungen.

Selbst schreiben · mit Tipps
💻
Freies Üben
SQL-Konsole

Drei Beispieldatenbanken, keine Aufgaben, keine Bewertung – einfach ausprobieren, was passiert. Kaputtgehen kann nichts.

Spielwiese
Geschichte und Spiele
🏭
Abenteuer
Erste Woche in der Druckerei

Zehn Kapitel, zehn Kollegen mit echten Fragen. Jede gelöste Abfrage bringt die Woche voran – vom ersten SELECT bis zum JOIN.

Story · 10 Kapitel
🃏
Spiel
Begriffe-Memory

Fachbegriff und Definition paaren – von Primärschlüssel bis Normalisierung.

3 Stufen
Spiel
Befehls-Blitz

Aufgabe lesen, passenden SQL-Befehl tippen – gegen die Uhr, mit Serienbonus.

60 Sekunden
🗂️
Spiel
Wahr oder Falsch

Aussagen zu Schlüsseln, Beziehungen und Normalformen einordnen – direkt aus alten Prüfungen.

Quiz
Verstehen und nachschlagen
🗄️
Theorie
Grundlagen

DB, DBMS und DBS, Aufbau einer Relation, Primär- und Fremdschlüssel, Datenkonsistenz und Redundanzfreiheit.

Prüfungsstoff
🔗
Theorie
ER-Modell

Entitätstyp, Attribut und Beziehung im Chen-Modell, dazu 1:1-, 1:n- und m:n-Beziehungen erkennen.

mit Beziehungs-Detektiv
🧩
Theorie
Normalisierungs-Werkstatt

Eine unnormalisierte Auftragstabelle Schritt für Schritt in die 1., 2. und 3. Normalform bringen – danach selbst diagnostizieren.

mit Diagnose-Quiz
📜
Referenz
SQL-Grundlagen

Alle Befehle, Klauseln, Operatoren und Datentypen zum Nachschlagen – wenn du bei einer Übung nicht weiterkommst.

Nachschlagewerk
🗄️ Grundlagen

Datenbank, DBMS, DBS

Datenbank (DB) – die Menge der zu verwaltenden Daten.
Datenbankmanagementsystem (DBMS) – die Software, mit der die Inhalte einer DB verwaltet werden (z. B. MySQL).
Datenbanksystem (DBS) – das Softwaresystem aus DB und DBMS zusammen.

Drei Arten von Datenbanken

Nicht jede Datenbank speichert ihre Daten gleich:

Typ
Merkmal
Relational
Setzt sich aus einer oder mehreren Tabellen (Relationen) zusammen.
Hierarchisch
Die Daten sind in einer Baumstruktur miteinander verbunden, z. B. bei XML.
Objektorientiert
Daten werden mit ihrer Funktion als Objekt gespeichert – wie in objektorientierten Programmiersprachen.

Aufbau einer Relation (Tabelle)

Jede Tabelle – auch Relation genannt – hat einen festen Aufbau. Am Beispiel einer Klassenliste:

Fachbegriff
Bedeutung
Tabelle / Relation
der ganze Datenbestand, z. B. „Klassenliste"
Attribut (Spalte)
gleichartige Datenfelder, z. B. „Ort"
Datenfeld (Zelle)
ein einzelner Wert, z. B. „Kempten"
Datensatz / Tupel (Zeile)
alle Werte einer Person/eines Objekts zusammen

Primärschlüssel

„Ein Attribut, das einen Datensatz eindeutig kennzeichnet.” Primärschlüssel werden meist durch Unterstreichung gekennzeichnet, z. B. Lehrer_ID. Reicht kein einzelnes Attribut aus, bildet man einen zusammengesetzten Primärschlüssel aus mehreren Attributen (z. B. Name + Vorname).

Fremdschlüssel

In verknüpften Tabellen hat jede Tabelle ihren eigenen Primärschlüssel. Taucht der Primärschlüssel einer Tabelle in einer anderen Tabelle wieder auf, heißt er dort Fremdschlüssel – über ihn wird die Beziehung zwischen den Tabellen hergestellt.

Die zwei Hauptanforderungen

Datenkonsistenz – jeder Datensatz muss eindeutig identifizierbar sein. Das gelingt, indem der Primärschlüssel nur einmal vergeben und auch nach dem Löschen eines Datensatzes nicht neu vergeben wird.

Redundanzfreiheit – eine Datenbank, in der alle Daten nur ein einziges Mal erfasst und gespeichert werden, ist redundanzfrei.

Um beides zu erreichen, verteilt man die Datensätze auf mehrere Tabellen. Diesen Vorgang nennt man Normalisierung – dazu gibt es ein eigenes Modul.

Wo dir das im Berufsalltag begegnet

Kunden- und Auftragsdaten einer Druckerei, Web-to-Print-Bestellsysteme oder ein Preflight-Protokoll – überall stecken relationale Datenbanken dahinter. Bei einer dynamischen Webseite läuft es so: Der Webbrowser schickt eine Anfrage an den Webserver, der ein Programm (z. B. in PHP) ausführt. Dieses stellt per SQL-Abfrage Daten aus der Datenbank zusammen und baut daraus die HTML-Seite, die an den Browser zurückgeschickt wird. Genau diese Abfragesprache SQL lernst du in den nächsten Modulen.

🔗 ER-Modell

Wozu ein Entity-Relationship-Modell?

Bevor eine Datenbank gebaut wird, hält man die Situation in einem ER-Modell fest. Drei Formen genügen: das Rechteck steht für einen Entitätstyp – ein Objekt, dem Informationen zugeordnet werden können, z. B. Produkte, Kunden oder Aufträge. Die Ellipse steht für ein Attribut (eine Eigenschaft des Entitätstyps). Die Raute steht für eine Beziehung zwischen zwei Entitätstypen, z. B. „Kunde erteilt Auftrag”.

Die drei Beziehungsarten

1:1-Beziehung – wenn zwischen zwei Entitätstypen ein eindeutiger Zusammenhang besteht (Schulleiter – leitet – Schule).

1:n-Beziehung – liegt vor, wenn einer der Entitätstypen mit mehreren Entitäten des zweiten Typs verbunden sein kann (Klasse – hat – Schüler).

m:n-Beziehung – wenn es mehrere Verbindungen in beide Richtungen gibt (Lehrer – unterrichtet – Schüler: ein Lehrer unterrichtet mehrere Schüler, ein Schüler wird von mehreren Lehrern unterrichtet).

Wichtige Regel

m:n-Beziehungen sind in relationalen Datenbanken unzulässig und müssen durch eine zusätzliche Verknüpfungstabelle aufgelöst werden.

Beispiel: „Ein Kunde kann mehrere Artikel bestellen, und ein Artikel kann von mehreren Kunden bestellt werden.” Mit einer Verknüpfungstabelle (z. B. „Bestellposition”) lassen sich daraus zwei 1:n-Beziehungen machen.
🕵️ Beziehungs-Detektiv

Welche Beziehung ist das?

Zehn Situationen aus Prüfungen und Übungen – ordne jeweils 1:1, 1:n oder m:n zu.

🧩 Normalisierungs-Werkstatt

Das Beispiel: eine Auftragstabelle

Eine kleine Werbeagentur trägt jeden Auftrag in eine einzige Tabelle ein. Klingt einfach – bringt aber genau die Probleme mit sich, die die Normalisierung lösen soll. Klicke dich Schritt für Schritt durch 1., 2. und 3. Normalform.

Selbst diagnostizieren

🔎 Normalform-Diagnose

In der Prüfung musst du nicht nur erklären, sondern entscheiden: Du bekommst eine Tabelle und sollst sagen, welche Normalform verletzt ist – oder ob schon alles in Ordnung ist. Zehn Tabellen aus Übungen und Prüfungen.

📜 SQL-Grundlagen

Struktur der Datenbank verändern

Diese Befehle legen Datenbanken, Tabellen und Spalten an oder ändern sie.

Befehl
Beispiel
CREATE DATABASE
CREATE DATABASE bibliothek;
USE
USE bibliothek;
DROP DATABASE
DROP DATABASE bibliothek;
CREATE TABLE
CREATE TABLE Mitarbeiter (id INT NOT NULL, vorname VARCHAR(100));
PRIMARY KEY
ALTER TABLE konten ADD PRIMARY KEY (nummer);
FOREIGN KEY
ALTER TABLE konten ADD FOREIGN KEY (bnr) REFERENCES banken(bnr);
ALTER TABLE … ADD
ALTER TABLE buecher ADD seitenanzahl INT;
ALTER TABLE … DROP COLUMN
ALTER TABLE buecher DROP COLUMN ort;
ALTER TABLE … MODIFY
ALTER TABLE buecher MODIFY ort CHAR(50);
DROP TABLE
DROP TABLE buecher;
DESCRIBE
DESCRIBE buecher;

Daten verändern

Befehl
Beispiel
INSERT INTO
mit Spaltenliste
INSERT INTO Schueler (SNr, Nachname, Vorname)
VALUES (1024,'Müller','Heinz');
INSERT INTO
ohne Spaltenliste
INSERT INTO Schueler
VALUES (1024,'Müller','Heinz','1988-08-14',
'Hüttenweg 6','64536','Oberdorf');
UPDATE … SET
UPDATE Schueler SET Nachname='Müller' WHERE SNr=1024;
DELETE FROM
DELETE FROM Schueler WHERE SNr=1024;

Vorsicht: DELETE FROM ohne WHERE löscht alle Zeilen der Tabelle – nicht nur eine!

Daten abfragen: SELECT

Der Grundbaustein für alles, was du in der SQL-Konsole ausprobierst:

SELECT Spalten  FROM Tabelle  WHERE Bedingung  ORDER BY Spalte

SELECT * FROM Leihräder;
SELECT Name, RahmenNr FROM Leihräder WHERE Tagesmietpreis = 19.60;

Häufiger Fehler: In SQL ist das Dezimaltrennzeichen immer der Punkt, nie das Komma. = 19.60 ist richtig, = 19,60 führt zu einem Fehler – das Komma trennt in SQL nur Spalten und Werte voneinander. Texte stehen außerdem immer in einfachen Anführungszeichen: WHERE Ort = 'Kempten'.

Baustein
Bedeutung
WHERE
Ergebniszeilen nach einer Bedingung einschränken
AND / OR / NOT
Bedingungen verknüpfen (AND bindet stärker als OR)
BETWEEN … AND
Wert liegt in einem Bereich, z. B. BETWEEN 2199 AND 2499
LIKE
Textmuster: % = beliebige Zeichenfolge, _ = ein Zeichen
IN (…)
Wert kommt in einer Liste vor, z. B. IN ('Frankreich','Polen')
IS NULL
Feld hat keinen Wert (unbekannt/nicht erfasst)
ORDER BY … ASC/DESC
Ergebnis auf-/absteigend sortieren
DISTINCT
doppelte Werte aus dem Ergebnis entfernen
JOIN … ON
zwei Tabellen über eine gemeinsame Spalte verknüpfen
GROUP BY / HAVING
Zeilen zu Gruppen zusammenfassen, z. B. für Summen je Gruppe

Vergleichsoperatoren: = gleich · <> oder != ungleich · > größer · < kleiner · >= größer gleich · <= kleiner gleich. Große Zahlen dürfen in wissenschaftlicher Schreibweise stehen, z. B. 1E08 für 100 Millionen.

Nützliche Funktionen: AVG(), COUNT(), MAX(), MIN(), SUM() fassen mehrere Zeilen zu einem Wert zusammen; DATE(), NOW(), YEAR(), DATEDIFF() rechnen mit Datumswerten.

Wichtige Datentypen

Datentyp
Bedeutung
INT / INTEGER
ganze Zahl (−2147483648 … 2147483647); Standardtyp für Schlüssel und Zähler
DECIMAL(M,D)
exakte Dezimalzahl für Preise: M = Gesamtzahl der Ziffern, D = davon Nachkommastellen. DECIMAL(6,2) speichert bis 9999,99
CHAR(M)
Text mit fester Länge M (wird aufgefüllt)
VARCHAR(M)
Text mit variabler Länge bis maximal M
DATE / DATETIME
Datum ('JJJJ-MM-TT') bzw. Datum+Uhrzeit
TINYINT
sehr kleine ganze Zahl (−128 … 127); als Wahrheitswert genutzt: 0 = falsch, jeder Wert ungleich 0 = wahr. BOOL und BOOLEAN sind nur andere Namen für TINYINT(1)

Tipp für die Praxis: Vermeide in Tabellen- und Spaltennamen Umlaute, Leerzeichen und Sonderzeichen – schreibe also Schueler statt Schüler. Erlaubt wäre beides, aber beim Austausch zwischen Systemen führen Umlaute regelmäßig zu Problemen.

Attribute: AUTO_INCREMENT (zählt bei jedem neuen Datensatz automatisch hoch – nur bei Ganzzahl-Datentypen, also TINYINT bis BIGINT, in der Praxis fast immer INT) · NOT NULL (Feld muss gefüllt sein) · DEFAULT(Wert) (Vorgabewert).

Merke: Ein einmal vergebener AUTO_INCREMENT-Wert wird auch nach dem Löschen des Datensatzes nicht neu vergeben – genau das sichert die Datenkonsistenz.

Im nächsten Modul, der SQL-Konsole, kannst du SELECT-Abfragen wirklich ausführen und das Ergebnis live sehen. INSERT, UPDATE, DELETE, CREATE und ALTER gehören zur Prüfungssyntax und stehen hier als Referenz – ausführen lassen sie sich in dieser Konsole nicht.

💻 SQL-Konsole

Live-Abfragen auf zwei Beispieldatenbanken

Wähle unten eine Datenbank, schreib eine SELECT-Abfrage und tippe auf „Ausführen”. Die Chips fügen Bausteine ein, wenn Tippen auf dem Handy nervt.

Die Tabelle cia enthält echte Zahlen: Einwohner und BIP nach Weltbank-Daten für 2024, Flächen nach CIA World Factbook. Für Nordkorea veröffentlicht die Weltbank kein BIP – deshalb steht dort NULL.

🃏 Begriffe-Memory

Fachbegriff und Definition paaren

Decke zwei Karten auf. Passen Begriff und Definition zusammen, bleiben sie offen.

⚡ Befehls-Blitz

60 Sekunden, so viele wie möglich

Es erscheint eine kurze Aufgabenbeschreibung – tippe den passenden SQL-Befehl. Serien bringen mehr Punkte, ein Fehler setzt die Serie auf null.

🗂️ Wahr oder Falsch

Aussagen zu Schlüsseln, Beziehungen und Normalformen

Zehn Aussagen aus echten Prüfungsaufgaben und der Theorie – stimmt das, oder stimmt es nicht?

🧮 Abfragen-Trainer

Jetzt schreibst du selbst

22 Aufgaben zu drei Datenbanken – Druckerei, Weltatlas und Buchshop. Geprüft wird das Ergebnis, nicht der Wortlaut: Es gibt oft mehrere richtige Wege, und jeder davon zählt.

Wenn du hängst, drück auf Tipp. Der erste Tipp gibt die Richtung, der zweite wird konkret, danach kannst du dir die Lösung zeigen lassen. Das ist kein Schummeln – abschreiben und verstehen ist auch Lernen.

🧱 SQL-Baukasten

Bauen statt tippen

Hier musst du nichts schreiben. Du bekommst eine Aufgabe und die passenden Bausteine – du tippst sie nur in die richtige Reihenfolge. Ein falsch gesetzter Baustein kostet nichts: antippen und er ist wieder weg.

Wenn du bei SQL bisher ein mulmiges Gefühl hattest: fang hier an. Nach zehn Minuten hast du deine erste eigene Datenbankabfrage gebaut.

✏️ Lückentext

Ein Wort fehlt

Die Abfrage steht fast fertig da – nur an ein bis zwei Stellen klafft eine Lücke. Du wählst aus, was dort hingehört. Das ist der Zwischenschritt zwischen „verstehen“ und „selbst schreiben“.

🔮 Was kommt raus?

Andersherum gedacht

Diesmal steht die Abfrage schon da – du sagst voraus, was sie liefert. Lesen können kommt vor Schreiben, und du merkst schnell, wie viel du schon verstehst.

🏭 Erste Woche in der Druckerei

Dein erster Arbeitstag

Du fängst als Azubi in einer Druckerei an. Alles läuft über die Datenbank: Kunden, Aufträge, Papier, Maschinen. In zehn Kapiteln kommen Kolleginnen und Kollegen mit echten Fragen zu dir – und jede beantwortest du mit einer SQL-Abfrage.

Die Befehle werden dir genau dann erklärt, wenn du sie brauchst. Du musst vorher nichts können. Wenn du hängst, gibt es gestufte Tipps – der letzte verrät die Lösung. Falsch machen kannst du nichts.