SQL DML

Die Data Manipulation Language (DML) umfasst alle Befehle in SQL, die zum Einfügen und Bearbeiten von Datensätzen in der Datenbank genutzt werden.


Erklärung

Mit SQL DDL hast du Tabellen in deiner Datenbank erstellt. Nun kannst du mit SQL DML Datensätze (auch Tupel genannt) in diese Tabellen einfügen ("INSERT"), bearbeiten ("UPDATE") und löschen ("DELETE").

Zunächst musst du aber eine Tabelle erstellen, damit Daten überhaupt in die Tabelle eingefügt werden können. Die folgende SQL Anweisung erstellt dir die Tabelle Personen:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

Diese Tabelle sieht nun so aus:

\underline{\text{PersonenID}}PersonenID\underline{\text{PersonenID}}
\text{Vorname}Vorname\text{Vorname}
\text{Nachname}Nachname\text{Nachname}
\text{Alter}Alter\text{Alter}

Wie du siehst, ist die Tabelle noch leer. Mit dem Befehl CREATE TABLE hast du nur die Struktur der Tabelle angelegt. Nun musst du noch die Datensätze einfügen.

Insert

Es soll zunächst Leon Maier, Alter 18 Jahre, eingefügt werden. Dafür verwendest du den INSERT INTO SQL-Befehl:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

Du musst hierbei die PersonenID nicht miteinfügen! Wir haben diese als Surrogatschlüssel definiert, was bedeutet, dass SQL automatisch die nächste fortlaufende ID nehmen wird! Der Rest des Datensatzes wird in derselben Reihenfolge eingefügt, in der du die Attribute definiert hast. Die Reihenfolge der Attribute (Spalten) ist (Vorname, Nachname, Alter), also muss das Tupel auch (Leon, Maier, 18) sein. So landet der Vorname in der Spalte für Vornamen, der Nachname in der Spalte für Nachnamen, und das Alter in der Spalte für Alter.

Wichtig ist, dass du Zeichenketten in einfache Anführungszeichen setzt. So erkennt SQL, wo eine Zeichenkette beginnt und endet!

Die Tabelle sieht nun so aus:

\underline{\text{PersonenID}}PersonenID\underline{\text{PersonenID}}
\text{Vorname}Vorname\text{Vorname}
\text{Nachname}Nachname\text{Nachname}
\text{Alter}Alter\text{Alter}
\text{1}1\text{1}
\text{Leon}Leon\text{Leon}
\text{Maier}Maier\text{Maier}
\text{18}18\text{18}

Als nächstes sollst du Emma Maier einfügen. Emma teilt uns aber ihr Alter nicht mit, was sie auch nicht muss. Deine Tabelle ist so definiert, dass der Attributwert "Alter" leer bleiben kann. Um ein unvollständiges Tupel einzufügen, musst du aber den Befehl etwas abändern:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

Durch den Befehl "INSERT INTO Personen (Vorname, Nachname) werden die Spalten (und die Reihenfolge der Spalten definiert!), in die das Tupel einfügt wird. Der erste Wert des Tupels, also Emma, wird in "Vorname" eingetragen. Der zweite Wert in "Nachname". Da keine weiteren Werte erwartet werden und die Tabellendefinition erlaubt, dass "Alter" leer bleibt, kannst du so einen unvollständigen Datensatz einfügen.

Die Tabelle sieht jetzt so aus:

\underline{\text{PersonenID}}PersonenID\underline{\text{PersonenID}}
\text{Vorname}Vorname\text{Vorname}
\text{Nachname}Nachname\text{Nachname}
\text{Alter}Alter\text{Alter}
\text{1}1\text{1}
\text{Leon}Leon\text{Leon}
\text{Maier}Maier\text{Maier}
\text{18}18\text{18}
\text{2}2\text{2}
\text{Emma}Emma\text{Emma}
\text{Maier}Maier\text{Maier}
\text{null}null\text{null}

Wie du siehst, ist Emma jetzt auch in deiner Tabelle eingetragen. Der Wert des Alters von Emma ist "null". "null" bedeutet in diesem Fall aber nicht "0"! "null" steht hier als Platzhalter für "kein Attributwert vorhanden".

Update

Manchmal müssen Attributwerte von Tupeln in der Tabelle aktualisiert werden. Dies kannst du mit dem "UPDATE"-Befehl machen.

Nimm doch kurz an, dass beim letzten Einfügen in die Tabelle aus Versehen "Meier" statt "Maier" geschrieben wurde. Jetzt musst du den Datensatz updaten. Dir ist bekannt, dass die "PersonenID" von Emma Maier "2" ist. Der Update-Befehl sieht dann so aus:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

Der Befehl besteht aus drei Teilen:

  • UPDATE Personen Die Tabelle Personen soll upgedatet werden ...
  • SET Nachname = 'Maier' ... indem der Nachname Attributwert der Tupel auf 'Maier' gesetzt wird, ...
  • WHERE PersonenID = 2 ... wo die PersonenID "2" ist.

Dies ist deine erste bedingte Anweisung in SQL. SQL geht jede Zeile der Tabelle durch und überprüft, ob die Bedingung nach "WHERE" wahr ist. Ist dies der Fall, so wird die "SET" Anweisung für diese Zeile ausgeführt.

ACHTUNG! Du musst darauf achten, welche Bedingung du wählst. Ist die Bedingung nicht eindeutig, so werden mehrere Tupel aktualisiert. Als Beispiel möchtest du Leons Alter auf 19 setzten. Allerdings würde die Anweisung ...

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

... sowohl Leon als auch Emma gleichzeitig 19 Jahre alt machen, da die Bedingung Nachname = 'Maier' auf beide Tupel zutrifft.

Zuletzt kannst du noch Tupel aus der Tabelle wieder löschen. Das ist nützlich, wenn z.B. Mitglieder eines Sportvereins diesen verlassen. Dies kannst du mit dem "DELETE"-Befehl machen.

Delete

Wenn du zum Beispiel Leon aus der Tabelle entfernen möchtest, sieht die SQL-Anweisung so aus:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

Deine Tabelle sieht nun so aus:

\underline{\text{PersonenID}}PersonenID\underline{\text{PersonenID}}
\text{Vorname}Vorname\text{Vorname}
\text{Nachname}Nachname\text{Nachname}
\text{Alter}Alter\text{Alter}
\text{2}2\text{2}
\text{Emma}Emma\text{Emma}
\text{Maier}Maier\text{Maier}
\text{null}null\text{null}

ACHTUNG! Du musst vorsichtig sein, dass immer eine Bedingung definiert ist! Die Anweisung ...

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

... löscht ALLE Tupel aus der Tabelle Personen! Die Tabelle Personen bleibt, im Gegensatz zu "DROP TABLE", aber erhalten. Sie ist jedoch im Anschluss vollkommen leer.


Beispiel

Zum Abschluss von SQL DML nochmal ein kleines Beispiel. Zunächst wird die Tabelle Staedte definiert, damit es überhaupt eine Tabelle gibt, in die Datensätze einzufügt werden können:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!
\underline{\text{StadtID}}StadtID\underline{\text{StadtID}}
\text{Name}Name\text{Name}
\text{Einwohnerzahl}Einwohnerzahl\text{Einwohnerzahl}
\text{Land}Land\text{Land}

Sehr gut, damit ist die Tabelle erstellt. Jetzt werden ein paar Tupel in die Tabelle eingefügt:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

Mit dieser Anweisung hast du drei Tupel gleichzeitig eingefügt. Du kannst auch jedes Tupel einzeln einfügen, aber so sparst du Zeit.

\underline{\text{StadtID}}StadtID\underline{\text{StadtID}}
\text{Name}Name\text{Name}
\text{Einwohnerzahl}Einwohnerzahl\text{Einwohnerzahl}
\text{Land}Land\text{Land}
\text{1}1\text{1}
\text{Berlin}Berlin\text{Berlin}
\text{3.600.000}3.600.000\text{3.600.000}
\text{Deutschland}Deutschland\text{Deutschland}
\text{2}2\text{2}
\text{Paris}Paris\text{Paris}
\text{2.100.000}2.100.000\text{2.100.000}
\text{Frankreich}Frankreich\text{Frankreich}
\text{3}3\text{3}
\text{London}London\text{London}
\text{8.900.000}8.900.000\text{8.900.000}
\text{England}England\text{England}

Als Nächstes soll "Entenhausen" in die Tabelle eingefügt werden. Leider ist nicht bekannt, wie viele Einwohner dort leben, aber immerhin, dass Entenhausen in den U.S.A. liegt:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!
\underline{\text{StadtID}}StadtID\underline{\text{StadtID}}
\text{Name}Name\text{Name}
\text{Einwohnerzahl}Einwohnerzahl\text{Einwohnerzahl}
\text{Land}Land\text{Land}
\text{1}1\text{1}
\text{Berlin}Berlin\text{Berlin}
\text{3.600.000}3.600.000\text{3.600.000}
\text{Deutschland}Deutschland\text{Deutschland}
\text{2}2\text{2}
\text{Paris}Paris\text{Paris}
\text{2.100.000}2.100.000\text{2.100.000}
\text{Frankreich}Frankreich\text{Frankreich}
\text{3}3\text{3}
\text{London}London\text{London}
\text{8.900.000}8.900.000\text{8.900.000}
\text{England}England\text{England}
\text{4}4\text{4}
\text{Entenhausen}Entenhausen\text{Entenhausen}
\text{null}null\text{null}
\text{U.S.A.}U.S.A.\text{U.S.A.}

Entenhausen ist leider eine fiktive Stadt, weshalb das Tupel wieder aus der Tabelle gelöscht werden soll. Dies geschieht mit der "DELETE"-Anweisung:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!
\underline{\text{StadtID}}StadtID\underline{\text{StadtID}}
\text{Name}Name\text{Name}
\text{Einwohnerzahl}Einwohnerzahl\text{Einwohnerzahl}
\text{Land}Land\text{Land}
\text{1}1\text{1}
\text{Berlin}Berlin\text{Berlin}
\text{3.600.000}3.600.000\text{3.600.000}
\text{Deutschland}Deutschland\text{Deutschland}
\text{2}2\text{2}
\text{Paris}Paris\text{Paris}
\text{2.100.000}2.100.000\text{2.100.000}
\text{Frankreich}Frankreich\text{Frankreich}
\text{3}3\text{3}
\text{London}London\text{London}
\text{8.900.000}8.900.000\text{8.900.000}
\text{England}England\text{England}

Leider stimmt die Einwohnerzahl von Paris nicht so ganz. Statt 2.100.000 müssten dort 12.500.000 stehen, wenn das gesamte Einzugsgebiet betrachtet wird. Mit dem Update Befehl kannst du die Zahl aktualisieren:

Hier versteckt sich noch mehr!
Besuche die App um alle Inhalte zu sehen!

Damit ist die Tabelle fertig:

\underline{\text{StadtID}}StadtID\underline{\text{StadtID}}
\text{Name}Name\text{Name}
\text{Einwohnerzahl}Einwohnerzahl\text{Einwohnerzahl}
\text{Land}Land\text{Land}
\text{1}1\text{1}
\text{Berlin}Berlin\text{Berlin}
\text{3.600.000}3.600.000\text{3.600.000}
\text{Deutschland}Deutschland\text{Deutschland}
\text{2}2\text{2}
\text{Paris}Paris\text{Paris}
\text{12.500.000}12.500.000\text{12.500.000}
\text{Frankreich}Frankreich\text{Frankreich}
\text{3}3\text{3}
\text{London}London\text{London}
\text{8.900.000}8.900.000\text{8.900.000}
\text{England}England\text{England}
Next topic:
SQL DQL

Continue
SQL DQL

Jetzt unlimited holen!

Mit simpleclub unlimited bekommst du Vollzugang zur App: Du boostest deine Noten, hast mehr Freizeit und gehst sicher in jede Klausur!

Jetzt unlimited holen

Jetzt simpleclub Azubi holen!

Mit simpleclub Azubi bekommst du Vollzugang zur App: Wir bereiten dich in deiner Ausbildung optimal auf deine Prüfungen in der Berufsschule vor. Von Ausbilder*innen empfohlen.

Jetzt simpleclub Azubi holen