Auf dieser Seite wird erläutert, wie Sie vorhandene Daten in einer MySQL-Datenbank aktualisieren.
Wir haben also bereits Daten zu unserer Datenbank hinzugefügt. Aber jetzt stellen wir fest, dass unsere Daten einen Fehler enthalten. Äpfeln wurde eine
UnitId
zugewiesen von 1
– aber das sollte 2
sein .
Sie können dies hier sehen:
Kein Problem. Wir werden diesen Datensatz einfach aktualisieren.
Das UPDATE
Erklärung
Das SQL UPDATE
-Anweisung ermöglicht es uns, die Daten in unserer Datenbank zu aktualisieren. Wir können diese Anweisung verwenden, um die Unit-ID von 1
zu ändern zu 2
. Dazu verwenden wir das WHERE
-Klausel, um den genauen Datensatz anzugeben, den wir aktualisieren müssen. So:
UPDATE Fruit SET UnitId = 2 WHERE FruitId = 1;
Im Allgemeinen ist es ratsam, ein UPDATE
durchzuführen -Operation, um das ID-Feld des Datensatzes anzugeben, den Sie aktualisieren möchten (oder was auch immer sein Primärschlüssel ist). Dadurch wird verhindert, dass versehentlich die falschen Datensätze aktualisiert werden. In diesem Beispiel wussten wir, dass Äpfel eine FruitId
haben von 1
. Möglicherweise kennen Sie jedoch nicht immer die ID des Datensatzes, den Sie aktualisieren möchten. In diesem Fall könnten Sie etwa so vorgehen:
UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple' AND UnitId = 1;
Wir können beide mit einem SELECT
verfolgen Anweisung und hier ist das Ergebnis:
Beachten Sie, dass DateUpdated -Spalte wurde ebenfalls aktualisiert, obwohl wir für diese Spalte keine Aktualisierung angegeben haben. Dies liegt daran, dass wir beim Erstellen der Tabelle diese Spalte so eingestellt haben, dass sie bei jeder Aktualisierung des Datensatzes mit dem aktuellen Datum/der aktuellen Uhrzeit aktualisiert wird.
Hier ist der Code, den wir beim Erstellen dieser Spalte verwendet haben:
DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Genauer gesagt ist es der ON UPDATE CURRENT_TIMESTAMP
das führte dazu, dass die Spalte gerade jetzt aktualisiert wurde, als wir UPDATE
ausgeführt haben Aussage.
Sichere Updates
Wir hätten genauso gut unser UPDATE
konstruieren können Befehl wie folgt (ohne AND UnitId = 1
):
UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple';
Wenn Sie dies versuchen, wird jedoch möglicherweise der folgende Fehler angezeigt:
Modus für sichere Updates
Wenn der obige Fehler auftritt, liegt das daran, dass Ihre MySQL-Verbindung im Modus „Sichere Updates“ ausgeführt wird. Dadurch wird verhindert, dass wir versehentlich große Datenmengen überschreiben. In der Tat, wenn wir vergessen hätten, das WHERE
einzufügen -Klausel hätten wir jeden einzelnen Datensatz in der Tabelle aktualisiert!
Ja, das Ausführen des folgenden Codes führt dazu, dass jeder Datensatz in unserer Tabelle auf Banana aktualisiert wird :
UPDATE Fruit SET FruitName = 'Banana'
Die Ausführung im Modus „Sichere Updates“ bietet also einen echten Vorteil.
Wenn Sie diese Abfrage jedoch wirklich ausführen müssen (oder wenn sich all Ihre Früchte wirklich in Bananen verwandelt haben), können Sie einen der folgenden Schritte ausführen:
- Ändern Sie Ihre Abfrage so, dass sie einen
KEY
enthält Säule. Wir haben dies in den Beispielen oben auf dieser Seite getan. - Modus für sichere Updates deaktivieren.
Modus für sichere Updates deaktivieren
Wenn Sie feststellen, dass Sie ein UPDATE
durchführen müssen Bedienung ohne Verwendung eines KEY
können Sie den Modus für sichere Updates jederzeit deaktivieren.
Um den Modus für sichere Updates zu deaktivieren, führen Sie den folgenden Befehl aus, bevor Sie Ihr UPDATE
ausführen Aussage:
set sql_safe_updates = 0;
Es ist immer eine gute Idee, die Einstellung auf ihren vorherigen Zustand zurückzusetzen, wenn Sie fertig sind – insbesondere bei Einstellungen, die weitreichende Auswirkungen wie diese haben könnten.
Führen Sie Folgendes aus, um den Modus für sichere Updates zu aktivieren:
set sql_safe_updates = 1;
Tatsächlich könnten Sie alles gleichzeitig ausführen, etwa so:
set sql_safe_updates = 0; UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple'; select * from Fruit; set sql_safe_updates = 1;
Mehrere Felder aktualisieren
Sie können mehrere Felder aktualisieren, indem Sie die einzelnen Feldzuweisungen durch ein Komma trennen. So:
UPDATE Fruit SET FruitName = 'Red Grapes', Inventory = '11' WHERE FruitId = 5;
Ergebnis: