Seitenleiste

Community

SQL

Grundlagen

Datenbanksysteme

Client/Server

Eingebettet

Datensätze ändern

Um Datensätze zu verändern, müssen wir sie bisher löschen und neu anlegen. Das ist allerdings viel zu viel Aufwand, wir können den vorhandenen Datensatz auch überarbeiten. Dies geschieht mit dem Befehl UPDATE.

Eine Spalte ändern

Update folgt der Name der Tabelle und mit SET die Anweisung, welche Spalten nun welchen Wert zugewiesen bekommen sollen. Grundsätzlich sucht man sich mit WHERE den Datensatz heraus, den man ändern möchte, die SET Anweisung gilt immer für alle gefundenen Datensätze, lässt man die WHERE-Klausel weg, gilt 'SET'' für alle Zeilen!

Nachdem wir die Datenbank mit unserem CreateStaff.sql-Skript zurückgesetzt haben, ist die Belegschaft wieder vollständig und auch Arne ist wieder da. Ihm wollen wir nun ein regelmäßiges Gehalt zukommen lassen. Er wird 400 Euro-Jobber, verdient also 4800 Euro im Jahr:

mysql> UPDATE Staff SET Salary=4800 WHERE GivenName = "Arne";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * FROM Staff;
+------------+----------+---------------+-----------+------+---------------+
| Department | Salary   | FamilyName    | GivenName | Sex  | DateOfJoining |
+------------+----------+---------------+-----------+------+---------------+
|          1 | 50000.00 | Boss          | Bert      | m    | 2010-01-01    |
|          2 | 30000.00 | Handel        | Holger    | m    | 2010-06-01    |
|          3 | 28000.00 | Helfer        | Herbert   | m    | 2010-08-01    |
|          4 | 25000.00 | Redseelig     | Renate    | f    | 2011-01-01    |
|          2 | 20000.00 | Ramsch        | Rainer    | m    | 2012-04-01    |
|       NULL |  4800.00 | Aushilfskraft | Arne      | m    | 2013-02-01    |
+------------+----------+---------------+-----------+------+---------------+
6 rows in set (0.00 sec)

Mehrere Spalten ändern

Grundsätzlich können auch beliebig viele Spalten mit einem Update-Befehl geändert werden, dafür werden die Spalten samt neuen Werten einfach per Komma getrennt. Nehmen wir an, durch einen Fehler wurde die Chefin Berta Boss versehentlich als männlicher Bert Boss eingetragen. Dieses Fauxpas können wir mit einer einzigen Anweisung korrigieren:

mysql> UPDATE staff SET GivenName = "Berta", Sex="f" WHERE FamilyName = "Boss";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from staff where FamilyName = "Boss";
+------------+----------+------------+-----------+------+---------------+
| Department | Salary   | FamilyName | GivenName | Sex  | DateOfJoining |
+------------+----------+------------+-----------+------+---------------+
|          1 | 50000.00 | Boss       | Berta     | f    | 2010-01-01    |
+------------+----------+------------+-----------+------+---------------+
1 row in set (0.00 sec)

Übungen

  • Renate Redseelig heiratet Rainer Ramsch: Ändere ihren Nachnamen auf 'Ramsch'
  • Berta Boss nimmt eine Gehaltsanpassung vor und zahlt sich ab sofort 60000 Euro im Jahr aus.
  • Für die Männer gilt ab sofort ein Einheitsgehalt: Jeder Mann erhält ein Gehalt von 26000. Löse das in einem Befehl!

Ziel dieser Lektion

Obwohl wir nun Daten in Tabellen anlegen, ändern und löschen und nach einfachen Kriterien filtern können, stehen wir erst am Anfang. Diese erste Einführung sollte Dir ein Bild vermitteln, wie eine Datenbank funktioniert und wie man einem SQL-Datenbank-Service in SQL Befehle erteilt. Im kommenden Kapitel werden wir uns mit dem Aufbau von Datenbanken beschäftigen und uns daher etwas Theorie ansehen. In der nächsten Lektion werden wir uns Gedanken machen, wie man Daten analysiert und strukturiert.