Mehrere Zeilen hinzufügen
Ein INSERT kann mehrere Zeilen auf einmal hinzufügen. Schreibe nach VALUES für jede Zeile ein Paar Klammern und trenne sie mit Kommas. Das sind drei neue Bewertungen von Kunden, die die Spiele gekauft haben:
INSERT INTO bewertungen (spiel_id, kunde_id, sterne, kommentar)
VALUES
(4, 4, 5, 'Stundenlanger Spaß.'),
(14, 2, 4, NULL),
(17, 1, 4, 'Schnell und fair.');Das Ergebnis zeigt dann Geänderte Zeilen: 3. Alle Zeilen teilen sich eine Liste von Spalten, also braucht jede von ihnen einen Wert für jede Spalte: Die zweite Bewertung hat keinen Kommentar, also bekommt sie NULL. Zwischen den Zeilen steht ein Komma und nach der letzten ein Semikolon. Mehrere Zeilen in einer Anweisung sind schneller geschrieben als ein INSERT für jede einzelne, und auch die Datenbank fügt sie schneller hinzu.
Du musst nicht jede Spalte füllen. Eine Spalte, die du in der Liste weglässt, bekommt NULL. Hier hat die Bewertung keinen Kommentar:
INSERT INTO bewertungen (spiel_id, kunde_id, sterne)
VALUES (20, 2, 5);
SELECT *
FROM bewertungen
WHERE spiel_id = 20;| spiel_id | kunde_id | sterne | kommentar |
|---|---|---|---|
| 20 | 2 | 5 | NULL |
| 20 | 4 | 4 | NULL |
Das funktioniert nur bei Spalten, die leer sein dürfen. Die meisten Spalten der Tabellen des Shops brauchen einen Wert, und wenn du eine von ihnen weglässt, zum Beispiel sterne, lehnt die Datenbank die Zeile ab: NOT NULL constraint failed: bewertungen.sterne. Mehr über solche Regeln lernst du bald.
Die ID ist ein Sonderfall. Eine Spalte id, die die Tabelle als INTEGER PRIMARY KEY definiert (alle id-Spalten von Pixel Shop sind so), füllt sich selbst: Lass sie weg, und SQLite gibt der neuen Zeile die nächste Nummer, die höchste ID in der Tabelle plus eins. Die Bestellungen gehen bis 30, also bekommt eine neue Bestellung die 31:
INSERT INTO bestellungen (kunde_id, bestellt_am, status)
VALUES (14, '2026-01-08', 'bezahlt');
SELECT *
FROM bestellungen
WHERE id > 28;| id | kunde_id | bestellt_am | status |
|---|---|---|---|
| 29 | 3 | 2025-12-12 | bezahlt |
| 30 | 4 | 2025-12-22 | bezahlt |
| 31 | 14 | 2026-01-08 | bezahlt |
So fügen echte Apps Zeilen hinzu: Sie lassen die Datenbank die ID wählen. Wenn du sie selbst wählst, kann sie schon vergeben sein, und die Datenbank lehnt die Zeile ab (UNIQUE constraint failed: bestellungen.id). In der vorigen Übung hast du die IDs nur gewählt, damit du wusstest, welche Zeilen du suchen musst.
Typischer Fehler: ein Komma nach der letzten Zeile. VALUES (4, 4, 5), (14, 2, 4),; endet mit dem Fehler near ";": syntax error. Zwischen den Zeilen steht ein Komma, nach der letzten nur das Semikolon.
So schreibst du es:
Anweisungen
- 1
Der Shop hat drei neue Spiele angekündigt, die noch nicht erschienen sind: Frost Giants (RPG, 55 €, ab 16 Jahren), Pet Hotel (Simulation, 20 €, ab 3 Jahren) und Sky Racers (Rennspiel, 35 €, ab 7 Jahren). Füge sie mit einem
INSERThinzu. Lass die Spalteid, die sich selbst füllt, und die Spalteerschienenweg, da die Erscheinungsdaten noch nicht bekannt sind. - 2
Zeige darunter die ID, den Titel, den Preis und das Erscheinungsdatum aller Spiele, die noch nicht erschienen sind, sortiert nach der ID. Die neuen haben die IDs 21 bis 23 und kein Erscheinungsdatum:
id titel preis erschienen 18 Robot Rebellion 40 NULL 19 Mystery Manor 25 NULL 21 Frost Giants 55 NULL 22 Pet Hotel 20 NULL 23 Sky Racers 35 NULL