Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Tabellen und Schlüssel anlegen

Nach dieser Lektion: Ich kann Tabellen mit Schlüsseln in einer relationalen Datenbank anlegen.

Lektion, 55 Min.13 BefehleMySQL-und-phpMyAdmin-Lab mit Beispieldatenbank eines Shops zum Üben von SQL

Zwei Aufträge, eine Kundennummer

Eine Reparaturwerkstatt führt ihre Aufträge in einer Tabellenkalkulation. Zwei verschiedene Kunden haben die Nummer 31 bekommen.

Jetzt zeigt der Beleg für den einen Kunden die Telefonnummer des anderen.

Eine Datenbank verhindert so einen Fehler. Sie lehnt die zweite Nummer 31 ab, bevor der Schaden entsteht.

Am Ende dieser Lektion

Notiz

Ich kann Tabellen mit Schlüsseln in einer relationalen Datenbank anlegen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
TabelleZeilen und Spalten für eine Art von Dingen
Datentypdie Art von Wert, die eine Spalte aufnimmtINT
Primärschlüsseldie Spalte, die jede Zeile eindeutig identifiziertid
Fremdschlüsseleine Spalte, die auf eine Zeile einer anderen Tabelle zeigttour_id
Einschränkungeine Regel, die die Datenbank bei jeder Änderung prüftNOT NULL
NULLdie Markierung für einen fehlenden Wert

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Tabelle hält eine Art von Dingen

Eine relationale Datenbank speichert ihre Daten in Tabellen. Eine Tabelle hält eine Art von Dingen: Kunden, Artikel oder Bestellungen.

Jede Spalte hat einen Datentyp. In eine Zahlenspalte nimmt die Datenbank keinen Text auf.

Sagen Sie dem Terminal zuerst, wie es sich anmeldet. Diese zwei Runs gelten für die ganze Lektion. Die Meldungen des Servers sind englisch.

Das Zertifikat des Servers annehmen

Befehl
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Abkürzung für den Shop

Befehl
alias sql='mariadb -h db -u student -pstudent shop -t -e'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Spalten einer Tabelle ansehen

Befehl
sql "DESCRIBE reviews"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Beispiel: den Typ wählen

Was gespeichert wirdTypWarum
Eine StückzahlINTNur ganze Zahlen
Ein Preis in EuroDECIMAL(8,2)Cent genau, kein Rundungsfehler
Ein OrtsnameVARCHAR(40)Text bis 40 Zeichen
Ein VersandtagDATEDie Datenbank kann Tage zählen
Ist der Artikel ausgelaufenBOOLEANNur ja oder nein

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Primärschlüssel identifiziert jede Zeile

Ein Primärschlüssel ist eine Spalte, deren Wert in jeder Zeile anders ist. Er darf nie NULL sein.

Meist ist er eine Zahl, die die Datenbank selbst zählt: AUTO_INCREMENT. Eine zweite Zeile mit demselben Schlüssel lehnt sie ab.

Ein Schlüssel darf aus zwei Spalten bestehen. Dann muss das Paar verschieden sein.

Ein Schlüssel aus zwei Spalten

Befehl
sql "DESCRIBE order_items"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele glauben, ein Name oder eine E-Mail-Adresse sei ein guter Primärschlüssel. Namen wiederholen sich, und Adressen ändern sich. Nehmen Sie eine Zahl, die die Datenbank zählt. Die E-Mail-Adresse bleibt als UNIQUE-Spalte daneben.

Ein Fremdschlüssel zeigt auf eine andere Tabelle

Ein Paket fährt auf einer Tour. Die Tabelle der Pakete kopiert die Angaben der Tour nicht. Sie hält nur die Nummer der Tour.

Diese Spalte ist ein Fremdschlüssel. Die Datenbank prüft, ob die Nummer in der Tabelle der Touren vorkommt.

So kann kein Paket auf einer Tour fahren, die es nicht gibt.

Bauen Sie jetzt zwei eigene Tabellen

In diesem Lab dürfen Sie jede Datenbank anlegen, deren Name mit student_ beginnt. Sie legen student_depot für einen kleinen Paketdienst an.

Die Shop-Datenbank bleibt, wie sie ist. Starten Sie die Runs der Reihe nach. Ein Run, der mit einem Fehler endet, gehört zur Lektion.

Eine eigene Datenbank anlegen

Befehl
sql "CREATE DATABASE IF NOT EXISTS student_depot"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Abkürzung dafür

Befehl
alias depot='mariadb -h db -u student -pstudent student_depot -t -e'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Von vorn beginnen: beide Tabellen löschen

Befehl
depot "DROP TABLE IF EXISTS pakete, touren"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Tabelle der Touren anlegen

Befehl
depot "CREATE TABLE touren (id INT AUTO_INCREMENT PRIMARY KEY, ort VARCHAR(40) NOT NULL UNIQUE, tage INT NOT NULL DEFAULT 1)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Tabelle der Pakete anlegen

Befehl
depot "CREATE TABLE pakete (id INT AUTO_INCREMENT PRIMARY KEY, tour_id INT NOT NULL, gewicht_kg DECIMAL(5,2) NOT NULL, versendet_am DATE NOT NULL, FOREIGN KEY (tour_id) REFERENCES touren(id))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Zwei Touren eintragen

Befehl
depot "INSERT INTO touren (ort, tage) VALUES ('Hamburg', 1), ('Dresden', 2)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Paket auf Tour 9 schicken

Befehl
depot "INSERT INTO pakete (tour_id, gewicht_kg, versendet_am) VALUES (9, 2.5, '2026-03-02')"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Hamburg ein zweites Mal eintragen

Befehl
depot "INSERT INTO touren (ort) VALUES ('Hamburg')"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Versuchen, die Touren zu löschen

Befehl
depot "DROP TABLE touren"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Weiterführend: eine Tabelle für Fahrer

Für alle, die früher fertig sind: Legen Sie eine Tabelle fahrer an. Sie hat eine id, einen Namen und eine Führerscheinnummer fuehrerschein_nr, die UNIQUE ist.

Geben Sie pakete mit ALTER TABLE eine Spalte fahrer_id und einen Fremdschlüssel auf fahrer.

Sagen Sie vorher, welche Fehler eine doppelte Führerscheinnummer und ein unbekannter Fahrer auslösen. Prüfen Sie es dann.

Über dieses Lab und seinen Quellcode: MySQL-und-phpMyAdmin-Lab mit Beispieldatenbank eines Shops zum Üben von SQL

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.