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
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Tabelle | Zeilen und Spalten für eine Art von Dingen | |
| Datentyp | die Art von Wert, die eine Spalte aufnimmt | INT |
| Primärschlüssel | die Spalte, die jede Zeile eindeutig identifiziert | id |
| Fremdschlüssel | eine Spalte, die auf eine Zeile einer anderen Tabelle zeigt | tour_id |
| Einschränkung | eine Regel, die die Datenbank bei jeder Änderung prüft | NOT NULL |
| NULL | die 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
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfHier 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
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
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 wird | Typ | Warum |
|---|---|---|
| Eine Stückzahl | INT | Nur ganze Zahlen |
| Ein Preis in Euro | DECIMAL(8,2) | Cent genau, kein Rundungsfehler |
| Ein Ortsname | VARCHAR(40) | Text bis 40 Zeichen |
| Ein Versandtag | DATE | Die Datenbank kann Tage zählen |
| Ist der Artikel ausgelaufen | BOOLEAN | Nur 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
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
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
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
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
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
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
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
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
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
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.