Dies ist eine alte Version des Dokuments!


LU06b - SQL-DML: Daten einfügen (INSERT)

  • Ich kann mit INSERT einen einzelnen Datensatz einfügen.
  • Ich kann mit INSERT mehrere Datensätze in einem Statement einfügen.
  • Ich kann mit INSERT … SELECT Daten aus einer anderen Tabelle übernehmen.
  • Ich weiss, wie ich einen Apostroph in einem Textwert korrekt schreibe.

In LU05 haben wir die DDL (Data Definition Language) kennengelernt, mit der Tabellen angelegt werden. Jetzt geht es an die DML (Data Manipulation Language): Wir füllen eine Tabelle mit Daten.

Dafür bauen wir uns eine eigene Tabelle:

CREATE TABLE favourite_film (
  film_id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(100),
  director VARCHAR(50),
  released_year YEAR,
  star1 VARCHAR(50)
);
Spalte Bedeutung
film_id Automatisch hochzählende ID, eindeutiger Primärschlüssel
title Filmtitel
director Regisseur:in
released_year Veröffentlichungsjahr
star1 Hauptdarsteller:in

Bisher haben wir neue Datensätze über die WebStorm-Oberfläche eingefügt:

Datensatz über die WebStorm-Oberfläche einfügen

Das funktioniert, ist aber mühsam und fehleranfällig, wenn viele Daten eingetragen oder geändert werden müssen. Darum arbeiten wir ab jetzt programmatisch mit SQL – über die DML-Befehle INSERT, UPDATE und DELETE.

Der Befehl INSERT fügt neue Datensätze in eine Tabelle ein. Dabei muss angegeben werden, in welche Spalten die Werte eingefügt werden.

INSERT INTO tabellenname (spalte1, spalte2, spalte3)
VALUES (wert1, wert2, wert3);

Konkret:

INSERT INTO favourite_film (title, director, released_year, star1)
VALUES ('Lost in Translation', 'Sofia Coppola', 2003, 'Scarlett Johansson');

Resultat:

film_id title director released_year star1
1 Lost in Translation Sofia Coppola 2003 Scarlett Johansson

Platzhalter für Ihr Screencast-Video: INSERT mit einer einzelnen Zeile.

INSERT INTO tabellenname (spalte1, spalte2, spalte3)
VALUES (wert1a, wert2a, wert3a),
       (wert1b, wert2b, wert3b);

Konkret:

INSERT INTO favourite_film (title, director, released_year, star1)
VALUES
  ('Inception', 'Christopher Nolan', 2010, 'Leonardo DiCaprio'),
  ('Arrival', 'Denis Villeneuve', 2016, 'Amy Adams');
film_id title director released_year star1
1 Lost in Translation Sofia Coppola 2003 Scarlett Johansson
2 Inception Christopher Nolan 2010 Leonardo DiCaprio
3 Arrival Denis Villeneuve 2016 Amy Adams

Platzhalter für Ihr Screencast-Video: mehrere Zeilen in einem Statement.

Vorsicht bei Apostrophen im Text. Mancher Filmtitel enthält ein Hochkomma, z.B. Five Nights at Freddy's. Da SQL einfache Anführungszeichen zur Begrenzung von Textwerten nutzt, muss das Hochkomma im Titel verdoppelt werden:

'Five Nights at Freddy''s'

Sonst bricht SQL den Textwert an der falschen Stelle ab.

Mit INSERT … SELECT können Datensätze direkt aus einer anderen Tabelle kopiert werden – praktisch, um Daten aus imdb_top_1000 zu übernehmen.

INSERT INTO zieltabelle (spalte1, spalte2, spalte3)
SELECT quelle_spalte1, quelle_spalte2, quelle_spalte3
FROM quelle
WHERE bedingung;

Konkret:

INSERT INTO favourite_film (title, director, released_year, star1)
SELECT Series_Title, Director, Released_Year, Star1
FROM imdb_top_1000
WHERE Released_Year >= 2000;

Mit WHERE können Sie gezielt nur bestimmte Datensätze übernehmen (hier: ab Jahr 2000). Ohne WHERE würden alle Zeilen von imdb_top_1000 übernommen.

Platzhalter für Ihr Screencast-Video: Daten aus imdb_top_1000 übernehmen.


Guido Koch

  • de/modul/m290_guko/learningunits/lu06/theorie/b_insert.1789938759.txt.gz
  • Zuletzt geändert: 2026/09/20 23:12
  • von gkoch