logo

MySQL ERSÄTT

REPLACE-satsen i MySQL är en förlängning av SQL-standarden. Denna sats fungerar på samma sätt som INSERT-satsen, förutom att om en gammal rad matchar den nya posten i tabellen för en PRIMARY KEY eller ett UNIKT index, tog detta kommando bort den gamla raden innan den nya raden läggs till.

Detta uttalande krävs när vi vill uppdatera befintliga poster i tabellen för att hålla dem uppdaterade. Om vi ​​använder standardinsättningsfrågan för detta ändamål kommer den att ge en Duplicate-post för PRIMÄRKEY eller ett UNIKT nyckelfel. I det här fallet kommer vi att använda REPLACE-satsen för att utföra vår uppgift. Kommandot REPLACE kräver en av de två möjlig åtgärder äger rum:

char till heltal java
  • Om inget matchande värde hittas med den befintliga dataraden, utförs en standardsats INSERT.
  • Om dubblettposten hittas, kommer ersätt-kommandot att ta bort den befintliga raden och sedan lägga till den nya posten i tabellen.

I REPLACE-satsen utfördes uppdateringen i två steg. Först kommer den att radera den befintliga posten, och sedan läggs den nyligen uppdaterade posten till, liknande ett standardkommando INSERT. Således kan vi säga att REPLACE-satsen utför två standardfunktioner, RADERA och FÖRA IN .

Syntax

Följande är syntaxen för BYTA UT uttalande i MySQL :

 REPLACE [INTO] table_name(column_list) VALUES(value_list); 

MySQL REPLACE Exempel

Låt oss förstå hur REPLACE-satsen fungerar i MySQL med hjälp av ett exempel. Först ska vi skapa en tabell med namnet 'Person' med hjälp av följande uttalande:

de är sångare
 CREATE TABLE Person ( ID int AUTO_INCREMENT PRIMARY KEY, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL UNIQUE, City varchar(25) DEFAULT NULL ); 

Därefter måste vi fylla i posten i tabellen med hjälp av FÖRA IN uttalande enligt nedan:

 INSERT INTO Person(ID, Name, Email, City) VALUES (1,'Mike', '[email protected]', 'California'), (2, 'Alexandar', '[email protected]', 'New York'), (3, 'Adam', '[email protected]', 'Los Angeles'), (4, 'Peter', '[email protected]', 'Alaska'); 

Utför VÄLJ uttalande för att verifiera de poster som kan visas i nedanstående utdata:

MySQL ERSÄTT

Efter att ha verifierat data till en tabell kan vi ersätta vilken gammal rad som helst med den nya raden med hjälp av REPLACE-satsen. Utför nedanstående uttalande som uppdaterar stad för en person vars id är 4 .

 REPLACE INTO Person (id, city) VALUES(4,'Amsterdam'); 

Efter framgångsrik exekvering av ovanstående uttalande krävs att du frågar efter data från tabellen Person igen för att verifiera ersättningen.

MySQL ERSÄTT

Värdet i namn och e-post kolumner är NULL nu. Det beror på att REPLACE-satsen fungerar enligt följande:

  • Denna sats försöker först infoga en ny rad i tabellen Person. Men infogningen av en ny rad misslyckades eftersom id = 4 redan finns i tabellen.
  • Så denna sats raderar först raden vars id = 4 och infogar sedan en ny rad med samma id och stad som Amsterdam. Eftersom vi inte har angett värdet för namn- och e-postkolumnen sattes det till NULL.

MySQL REPLACE-sats för att uppdatera en rad

Vi kan använda följande REPLACE-sats för att uppdatera en raddata till en tabell:

 REPLACE INTO table SET column1 = value1, column2 = value2; 

Ovanstående syntax liknar UPPDATERA uttalande förutom nyckelordet REPLACE. Det är att notera att vi inte kan använda WHERE-satsen med detta uttalande.

Utför exemplet nedan som använder REPLACE-satsen för att uppdatera staden för den namngivna personen Mikrofon från Kalifornien till birmingham .

 REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham'; 

Efter verifiering av tabellen kan vi se följande utdata:

python-väginställning
MySQL ERSÄTT

Om vi ​​inte har angett kolumnens värde i SET-klausul , det här kommandot fungerar som UPPDATERA uttalande , vilket innebär att REPLACE-satsen använder standardvärdet för den kolumnen.

MySQL REPLACE för att infoga data från SELECT-satsen.

Vi kan använda följande REPLACE INTO-sats för att infoga data i en tabell med data som returneras från en fråga.

 REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition; 

Det är att notera att ovanstående REPLACE-fråga liknar INFOGA I SELECT påstående. Utför exemplet nedan som använder REPLACE INTO-satsen för att kopiera en rad i samma tabell.

 REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2; 

Efter verifiering av tabellen får vi följande utdata. I denna utdata kan vi se att kopian av en rad i samma tabell har lagts till.

MySQL ERSÄTT