Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Daten in einer MySQL-Datenbank aktualisieren

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: