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

Tabelle und Primärschlüssel entwerfen

Nach dieser Lektion: Ich kann eine Tabelle mit einem Primärschlüssel entwerfen.

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

Zwei Kinokarten für denselben Platz

Ein kleines Kino verwaltet seine Filme in einer Tabellenkalkulation. Jemand tippt den Film „Sturmflut“ zweimal ein, einmal mit 112 und einmal mit 120 Minuten.

Welche Zeile stimmt? Niemand weiß es. Eine Datenbank verhindert so etwas, wenn die Tabelle gut entworfen ist.

Am Ende dieser Lektion

Notiz

Ich kann eine Tabelle mit einem Primärschlüssel entwerfen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
TabelleZeilen und Spalten für eine Art von Dingen
Datensatzeine Zeile, also alles über ein einzelnes Ding
Datentypdie Art von Wert, die eine Spalte aufnimmtINT
Primärschlüsseldie Spalte, die jede Zeile eindeutig machtid
Einschränkungeine Regel, die die Datenbank bei jeder Änderung prüftNOT NULL

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

Eine Tabelle hält eine Art von Dingen

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

Jede Spalte ist eine Eigenschaft, etwa der Titel. Jede Zeile ist ein Datensatz. Für jede Spalte legst du einen Datentyp fest. In eine Zahlenspalte nimmt die Datenbank keinen Text auf.

Beispiel: den Typ für jede Spalte wählen

Was gespeichert wirdTypWarum
Länge eines Films in MinutenINTNur ganze Zahlen
Preis einer Karte in EuroDECIMAL(5,2)Cent genau, kein Rundungsfehler
Titel eines FilmsVARCHAR(60)Text bis 60 Zeichen
Datum der PremiereDATEDie Datenbank kann Tage zählen
Läuft der Film nochBOOLEANNur ja oder nein

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

Bevor du anfängst

Notiz

Drück oben in der Leiste auf Lab starten. Warte, bis beide Dienste laufen, und öffne das Terminal. Die zwei ersten Runs richten die Anmeldung ein und 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 die Datenbank 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.

Alle Tabellen der Datenbank zeigen

Befehl
sql "SHOW TABLES"

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 Primärschlüssel macht jede Zeile eindeutig

Ein Primärschlüssel ist eine Spalte, deren Wert in jeder Zeile anders ist. Er ist nie leer. Mit ihm findest du genau einen Datensatz wieder.

Meist ist er eine Nummer, die die Datenbank selbst weiterzählt. Versuchst du, einen Wert zweimal einzutragen, lehnt die Datenbank die zweite Zeile ab.

Probier es: eine doppelte Nummer

Code: sql
-- Der Schlüssel id ist in jeder Zeile anders. Ein zweites Sturmflut mit id 1 wird abgelehnt.
INSERT INTO filme VALUES (1, 'Sturmflut 2', 'Drama', 120, 12);
-- Ändere die 1 in eine 5 und starte noch einmal. Danach nimmt die Tabelle die Zeile an.

Ein häufiger Fehler

Warnung

Viele glauben, der Titel oder der Name sei ein guter Primärschlüssel. Titel wiederholen sich, und Namen ändern sich. Nimm eine eigene Nummer, die sich nie ändert. Der Titel bleibt als normale Spalte daneben.

Kunden zählen und ihre Nachnamen

Befehl
sql "SELECT COUNT(*) AS kunden, COUNT(DISTINCT last_name) AS nachnamen, COUNT(DISTINCT email) AS adressen FROM customers"

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

Einschränkungen schützen die Daten

Eine Einschränkung ist eine Regel, die die Datenbank bei jeder Änderung prüft. NOT NULL verbietet einen leeren Wert. UNIQUE verbietet zwei gleiche Werte.

Ein Primärschlüssel ist beides zugleich. AUTO_INCREMENT lässt die Datenbank die nächste Nummer selbst vergeben.

Baue deine erste eigene Tabelle

In diesem Lab darfst du jede Datenbank anlegen, deren Name mit student_ beginnt. Du legst student_kino an. Die Datenbank shop bleibt, wie sie ist.

Starte die Runs der Reihe nach. Der Run, der mit einem Fehler endet, gehört zur Lektion.

Eine eigene Datenbank anlegen

Befehl
sql "CREATE DATABASE IF NOT EXISTS student_kino"

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 kino='mariadb -h db -u student -pstudent student_kino -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: die Tabelle löschen

Befehl
kino "DROP TABLE IF EXISTS filme"

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 Filme anlegen

Befehl
kino "CREATE TABLE filme (id INT AUTO_INCREMENT PRIMARY KEY, titel VARCHAR(60) NOT NULL, minuten INT NOT NULL, ab_alter INT NOT NULL)"

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 Filme eintragen

Befehl
kino "INSERT INTO filme (titel, minuten, ab_alter) VALUES ('Sturmflut', 112, 12), ('Hinterhof', 95, 6)"

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 lesen

Befehl
kino "SELECT * FROM filme"

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

Noch einmal die Nummer 1 eintragen

Befehl
kino "INSERT INTO filme (id, titel, minuten, ab_alter) VALUES (1, 'Nachtzug', 112, 12)"

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

Ü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.