Dies ist eine alte Version des Dokuments!


LU07b – SQL-DML: Einführung & Daten einfügen

  • Ich kann Daten einfügen (INSERT).
  • Ich erkenne typische Fehlerquellen (falsche Datentypen, Schlüsselverletzungen).

In LU05 haben wir die DDL (Data Definition Language) kennengelernt, mit der Tabellen angelegt werden.

Folgender SQL-Code erzeugt eine leere Tabelle favourite_film mit den Spalten film_id1), title2), director3), released_year4), star15):

CREATE TABLE favourite_film
(
  film_id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(100),
  director VARCHAR(50),
  released_year YEAR,
  star1 VARCHAR(50)
);
Wichtig: film_id ist der Primärschlüssel → jeder Datensatz erhält automatisch eine eindeutige ID.
DML = Data Manipulation Language: INSERT, UPDATE, DELETE. (Read erfolgt mit SELECT und gehört streng genommen zur DQL, wird im Alltag bei CRUD aber mitgemeint.)

Bisher haben wir neue Datensätze über die Webstorm-Oberfläche eingefügt (Edit Data > „+“):

Das funktioniert, ist aber mühsam und fehleranfällig, wenn viele Daten eingetragen oder geändert werden müssen. Darum machen wir das ab jetzt programmatisch mit SQL.

Die CRUD-Operationen aus der vorherigen Lektion setzen wir dabei direkt mit den Befehlen der DML (Data Manipulation Language) um: INSERT entspricht Create, SELECT entspricht Read, UPDATE entspricht Update und DELETE entspricht Delete.

Syntax (allgemein: Einzelzeile)

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

Variante A: Spalten explizit angeben

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

Variante B: Mehrere Zeilen auf einmal

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

Variante C: INSERT … SELECT (Daten aus einer anderen Tabelle übernehmen)

INSERT INTO favourite_film (title, director, released_year, star1)
SELECT Series_Title, Director, Released_Year, Star1
FROM imdb_top_1000
WHERE Released_Year >= 2000;
Hinweis: Mit der WHERE-Bedingung können gezielt nur bestimmte Datensätze übernommen werden.

1)
Automatisch hochzählende ID, eindeutiger Primärschlüssel
2)
Filmtitel
3)
Regisseur:in
4)
Veröffentlichungsjahr, vierstellig
5)
Hauptdarsteller:in
  • modul/m290_guko/learningunits/lu07/theorie/b_sql_dml.1759082181.txt.gz
  • Zuletzt geändert: 2025/09/28 19:56
  • von gkoch