sql >> Database >  >> RDS >> Mysql

Gegevens bijwerken in een MySQL-database

Op deze pagina wordt uitgelegd hoe u bestaande gegevens in een MySQL-database kunt bijwerken.

We hebben dus al gegevens aan onze database toegevoegd. Maar nu realiseren we ons dat onze gegevens een fout bevatten. Appels hebben een UnitId . gekregen van 1 — maar dit moet 2 zijn .

Je kunt dit hier zien:

Geen probleem. We werken dat record gewoon bij.

De UPDATE Verklaring

De SQL UPDATE verklaring stelt ons in staat om de gegevens in onze database bij te werken. We kunnen deze verklaring gebruiken om de unit-ID te wijzigen van 1 tot 2 . Om dit te doen, gebruiken we de WHERE om het exacte record te specificeren dat we moeten bijwerken. Zoals dit:

UPDATE Fruit
SET UnitId = 2
WHERE FruitId = 1;

Over het algemeen is het raadzaam bij het uitvoeren van een UPDATE bewerking, om het ID-veld op te geven van de record die u probeert bij te werken (of wat de primaire sleutel ook is). Dit helpt beschermen tegen het per ongeluk bijwerken van de verkeerde record(s). In dit voorbeeld wisten we dat appels een FruitId . hadden van 1 . Maar u weet misschien niet altijd de ID van de record die u probeert bij te werken. In dat geval zou je zoiets als dit kunnen doen:

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple' AND UnitId = 1;

We kunnen beide volgen met een SELECT verklaring en hier is het resultaat:

Merk op dat de DateUpdated kolom is ook bijgewerkt, hoewel we geen update voor die kolom hebben opgegeven. Dit komt omdat, toen we de tabel maakten, we die kolom zo hadden ingesteld dat deze werd bijgewerkt met de huidige datum/tijd telkens als er een update van de record was.

Dit is de code die we gebruikten toen we die kolom maakten:

DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Meer specifiek is het de ON UPDATE CURRENT_TIMESTAMP dat heeft ertoe geleid dat de kolom zojuist is bijgewerkt toen we de UPDATE . uitvoerden verklaring.

Veilige updates

We hadden net zo goed onze UPDATE . kunnen bouwen commando als dit (zonder AND UnitId = 1 ):

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

U kunt echter de volgende fout tegenkomen als u dat probeert:

Veilige Updates-modus

Als u de bovenstaande fout tegenkomt, komt dat omdat uw MySQL-verbinding in de modus Veilige updates werkt. Dit helpt voorkomen dat we per ongeluk grote hoeveelheden gegevens overschrijven. Sterker nog, als we waren vergeten de WHERE clausule zouden we elk record in de tabel hebben bijgewerkt!

Ja, als u de volgende code uitvoert, wordt elk record in onze tabel bijgewerkt naar Banaan :

UPDATE Fruit
SET FruitName = 'Banana'

Er is dus een echt voordeel te behalen door in de modus Veilige updates te werken.

Als je die zoekopdracht echter echt moet uitvoeren (of als al je fruit echt in bananen is veranderd), kun je een van de volgende dingen doen:

  • Wijzig uw zoekopdracht om een ​​KEY op te nemen kolom. We hebben dit gedaan in de voorbeelden bovenaan deze pagina.
  • Schakel de modus Veilige updates uit.

Modus Veilige updates uitschakelen

Als u vindt dat u een UPDATE . moet uitvoeren bediening zonder gebruik van een KEY veld, kunt u de modus Veilige updates altijd uitschakelen.

Om de modus Veilige updates uit te schakelen, voert u de volgende opdracht uit voordat u uw UPDATE . uitvoert verklaring:

set sql_safe_updates = 0;

Het is altijd een goed idee om de instelling terug te zetten naar de vorige staat als u klaar bent, vooral met instellingen die een wijdverbreide impact kunnen hebben, zoals deze.

Voer de volgende stappen uit om de modus Veilige updates in te schakelen:

set sql_safe_updates = 1;

In feite zou je alles tegelijkertijd kunnen uitvoeren, zoals dit:

set sql_safe_updates = 0;

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

select * from Fruit;

set sql_safe_updates = 1;

Meerdere velden bijwerken

U kunt meerdere velden bijwerken door een komma te gebruiken om elke veldtoewijzing te scheiden. Zoals dit:

UPDATE Fruit
SET FruitName = 'Red Grapes', Inventory = '11'
WHERE FruitId = 5;

Resultaat:


  1. PolyBase verbinden met Salesforce.com

  2. CONSTRAINT om waarden uit een op afstand gerelateerde tabel te controleren (via join etc.)

  3. Een tekenreeks converteren naar een numerieke waarde in PostgreSQL

  4. Replicatie-failover voor MySQL en MariaDB beheren