Zurück zur Artikelliste Artikel
7 Leseminuten

Was ist die UPDATE-Anweisung in SQL?

Die SQL UPDATE-Anweisung wird verwendet, um bestehende Daten in Ihrer Datenbank zu aktualisieren. Dieser Artikel erklärt die Syntax und zeigt Ihnen anschauliche Beispiele für die UPDATE-Anweisung in der Praxis.

Die effektive Aktualisierung vorhandener Daten in einer Datenbank ist für jeden, der SQL verwendet, unerlässlich; Daten sind nur dann nützlich, wenn sie aktuell und relevant sind.

In diesem Artikel werden wir die Syntax der Anweisung UPDATE im Detail untersuchen. Anschließend werden wir anhand von detaillierten Schritt-für-Schritt-Beispielen die Regeln, Verwendungsmöglichkeiten und Einschränkungen der SQL-Anweisung UPDATE erläutern.

Was ist die UPDATE-Anweisung?

In SQL wird die Anweisung UPDATE verwendet, um bestehende Datensätze in einer Tabelle zu ändern oder zu aktualisieren. Sie können damit alle Datensätze auf einmal aktualisieren oder mit der WHERE -Klausel eine Teilmenge der zu ändernden Datensätze angeben.

Die Anweisung UPDATE gilt als SQL-Befehl zur Datenmanipulation. Die anderen Befehle sind INSERT und DELETE, die Sie in dem Kurs How to INSERT, UPDATE, or DELETE Data in SQL von LearnSQL.de kennenlernen können.

Werfen wir einen Blick auf die Syntax von SQL UPDATE.

SQL UPDATE-Syntax

Die Syntax der UPDATE-Anweisung lautet wie folgt:

UPDATE <table>
SET <column1> = <value1>,
        <column2> = <value2>,
        …
[WHERE <conditions>]

Schauen wir uns diese Syntax an.

Der Tabellenname folgt direkt nach der UPDATE Anweisung selbst: UPDATE <Tabelle>.

Sie können die Spalten, die Sie aktualisieren möchten, mit dem Schlüsselwort SET angeben. Beachten Sie, dass Sie beim Festlegen der Werte Ihrer Spalten den richtigen Datentyp verwenden müssen. Schauen wir uns eine Beispiel-SQL-Abfrage an, die dies verdeutlicht.

UPDATE employee
SET 	id = 1,
   	first_name = 'John'

Wenn Sie den Wert der Spalte id setzen, sind keine Anführungszeichen erforderlich. Wenn Sie jedoch die Spalte first_name setzen, müssen Sie einen String-Wert übergeben, d. h. den Text in einfache Anführungszeichen einschließen.

Der letzte Teil der Syntax ist die optionale Einbeziehung der WHERE Klausel. Obwohl sie optional ist, schließe ich normalerweise immer WHERE in meine UPDATE -Anweisungen ein. Wenn Sie keine WHERE Klausel einfügen, um den genauen zu ändernden Datensatz anzugeben, werden Sie jeden einzelnen Wert in dieser Spalte aktualisieren.

Schauen wir uns ein Beispiel an, das dies verdeutlicht. Wir haben zwei Abfragen, die fast identisch sind; der Unterschied besteht darin, dass die eine WHERE verwendet und die andere nicht:

Query 1 - Without WHEREQuery 2 - With WHERE
UPDATE employee
	SET first_name = 'John'
UPDATE employee
	SET first_name = 'John'
	WHERE id = 1

Abfrage 1 aktualisiert den Vornamen jedes Mitarbeiters auf John - das wollen Sie wahrscheinlich nicht!

Abfrage 2 aktualisiert den Namen eines Mitarbeiters auf John: denjenigen, dessen id gleich 1 ist. Das ist wahrscheinlich das, was Sie erreichen wollen.

Es ist eine gute Praxis, SELECT zu verwenden, um die Datensätze anzuzeigen, bevor Sie sie aktualisieren. Sie könnten zum Beispiel diese Abfrage schreiben:

SELECT *
FROM employee
WHERE id = 1

Wenn der zurückgegebene Datensatz tatsächlich der Datensatz ist, den Sie ändern möchten, können Sie dieselbe WHERE -Klausel für Ihre UPDATE -Anweisung verwenden. So stellen Sie sicher, dass Sie nicht versehentlich andere Datensätze ändern.

Damit ist unser Blick auf die SQL-Syntax UPDATE beendet. Nun ist es an der Zeit, sich einige praktische Beispiele anzusehen, die verschiedene Verwendungen der UPDATE-Anweisung demonstrieren. Wir gehen auch auf einige Probleme mit den Berechtigungen ein, mit denen Sie konfrontiert werden könnten.

SQL UPDATE-Berechtigungen

Vor unserem nächsten Beispiel sollten wir über Berechtigungen sprechen. Je nachdem, welchen SQL-Dialekt Sie verwenden, müssen Sie möglicherweise die Berechtigungen ändern, damit Sie Datensätze direkt mit der Anweisung UPDATE ändern können.

In MySQL erhalten Sie beispielsweise die Meldung: "Sie verwenden den sicheren Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet. Um den sicheren Modus zu deaktivieren, schalten Sie die Option in den Einstellungen -> SQL-Editor um und stellen Sie die Verbindung erneut her".

Um dieses Problem zu lösen, haben Sie zwei Möglichkeiten.

  1. Ändern Sie Ihre Einstellungen:
    1. Gehen Sie zu Bearbeiten →
    2. Klicken Sie auf die Registerkarte SQL Editor und deaktivieren Sie das Kontrollkästchen Sichere Updates
    3. Klicken Sie auf Query → Reconnect to Server.
    4. Führen Sie Ihre SQL-Abfrage aus.
  2. Führen Sie die folgende Abfrage aus:
    SET SQL_SAFE_UPDATES = 0;

Nachdem Sie eine dieser Optionen ausgeführt haben, sollten Sie in der Lage sein, UPDATE zu verwenden, um Tabellendaten zu ändern.

Verwendung von UPDATE für Spalten

Stellen Sie sich vor, Sie haben eine Tabelle mit den Namen und dem Alter der Mitarbeiter eines Unternehmens. Die Datenbanktabelle soll automatisch durch das angeschlossene HR-System aktualisiert werden - bei der Überprüfung der Tabelle stellen Sie jedoch fest, dass einige der Altersangaben nicht mehr aktuell sind. Sie beschließen, dass es am besten ist, die SQL-Anweisung UPDATE zu verwenden, um die Altersangaben der betroffenen Mitarbeiter manuell zu aktualisieren.

Schauen wir uns zunächst einmal die employees Tabelle:

employee_idfirst_namelast_nameage
1JohnSmith23
2MaryConway54
3PaulJohnson33
4SandraCruz28
5JacobWard40
6StaceyTuite65
7ThomasRice43

Wie Sie sehen, enthält jede Zeile einen eindeutigen Bezeichner für den Mitarbeiter sowie dessen first_name, last_name, und age.

Die Mitarbeiter, die wir aktualisieren müssen, sind Paul Johnson und Jacob Ward.

Lassen Sie uns mit der Aktualisierung des Alters dieser Mitarbeiter beginnen:

UPDATE employees
SET age = 34
WHERE employee_id = 3;

Ok, diese Abfrage sollte genügen. Der Wert employee_id von 3 entspricht Paul Johnson. Es gibt nur ein Vorkommen von 3 in der Spalte employee_id, daher wird diese Abfrage keine anderen Datensätze aktualisieren. Führen Sie die Abfrage aus und verwenden Sie die folgende SELECT Abfrage, um die Ergebnisse anzuzeigen:

SELECT employee_id, first_name, last_name, age
FROM employees
WHERE employee_id = 3;
employee_idfirst_namelast_nameage
3PaulJohnson34

Das Alter wurde erfolgreich aktualisiert!

Für unseren nächsten Mitarbeiter aktualisieren wir sein Alter, indem wir seine first_name und last_name in der WHERE Klausel verwenden. Solange es keine zwei Angestellten mit demselben Vor- und Nachnamen gibt, wird dies wie gewünscht funktionieren:

UPDATE employees
SET age = 41
WHERE first_name = 'Jacob' AND last_name = 'Ward'

Das sollte genügen! Führen Sie die Abfrage aus und verwenden Sie diese SELECT Anweisung, um das Ergebnis zu sehen:

SELECT employee_id, first_name, last_name, age
FROM employees
WHERE first_name = 'Jacob' AND last_name = 'Ward'
employee_idfirst_namelast_nameage
5JacobWard41

Das ist genau das, was wir wollten! Weitere Beispiele wie dieses finden Sie in diesem Artikel über die Verwendung von Unterabfragen mit INSERT, UPDATE und DELETE.

Als Nächstes sehen wir uns ein fortgeschritteneres Beispiel an; wir werden eine Tabelle mit Daten aus einer anderen Tabelle aktualisieren.

Aktualisieren einer Tabelle mit Daten aus einer anderen Tabelle

Stellen Sie sich ein Szenario vor, in dem jemand die Datensätze in der employees Tabelle aktualisiert und dabei einen Fehler gemacht hat! Er hat versehentlich in den ersten 5 Zeilen den Vornamen "John" eingegeben. Die Tabelle employees Tabelle sieht jetzt so aus:

employee_idfirst_namelast_nameage
1JohnSmith23
2JohnConway54
3JohnJohnson33
4JohnCruz28
5JohnWard40
6StaceyTuite65
7ThomasRice43

Wie können wir das beheben? Glücklicherweise haben wir eine Sicherungstabelle, die von dem Fehler des Entwicklers nicht betroffen war. Diese Tabelle heißt employees_backup und sieht wie folgt aus:

employee_idfirst_namelast_nameage
1JohnSmith23
2MaryConway54
3PaulJohnson34
4SandraCruz28
5JacobWard41
6StaceyTuite65
7ThomasRice43

Schreiben wir eine Abfrage, die die falschen Werte in der Tabelle Mitarbeiter mit den richtigen Werten aus der Sicherungstabelle aktualisiert. Wenn Sie mehrere Zeilen aktualisieren, ist dies normalerweise mit viel manueller Arbeit verbunden. Diese Abfrage wurde entwickelt, um diese sich wiederholende Arbeit zu reduzieren:

SET first_name = (SELECT first_name
                  FROM employees_backup
                  WHERE employees_backup.last_name = employees.last_name)
WHERE employee_id < 6;

Schauen wir uns das mal an. Sie sehen, dass die einzige Spalte, die wir ändern wollen, first_name ist, aber nur, wenn die employee_id dieses Datensatzes kleiner als 6 ist. Das liegt daran, dass der Fehler des Entwicklers nur die ersten 5 Datensätze der Tabelle betraf.

Wir wählen dann die Werte aus der Spalte first_name der Tabelle employees_backup und gleichen die Mitarbeiter anhand ihres Nachnamens ab. Auf diese Weise stellen wir sicher, dass jeder Mitarbeiter den richtigen Vornamen erhält.

Dies ist ein nützliches Szenario, das man im Hinterkopf behalten sollte; etwas Ähnliches kann bei der Arbeit mit Datenbanken vorkommen. Wenn Sie die SQL-Anweisung UPDATE gut beherrschen, können Sie Fehler problemlos korrigieren.

Vollständige Kontrolle über Ihre Daten mit SQL UPDATE

Damit ist unser Artikel über SQL UPDATE abgeschlossen. Wir haben uns mit der Syntax und den für die Verwendung der UPDATE-Anweisung erforderlichen Berechtigungen befasst. Wir haben uns einige praktische Beispiele angesehen - sowohl einfache Fälle als auch fortgeschrittenere Szenarien wie die Verwendung von Daten aus einer anderen Tabelle.

Wir haben auch erwähnt, dass INSERT eine der Möglichkeiten ist, die Daten in Ihren Tabellen zu ändern. Die anderen Befehle zum Ändern von Daten sind INSERT und DELETE. Erfahren Sie mehr über diese Befehle in diesem Blogbeitrag über INSERT, UPDATE und DELETE.