logo

MySQL ERSTATT

REPLACE-setningen i MySQL er en utvidelse av SQL-standarden. Denne setningen fungerer på samme måte som INSERT-setningen, bortsett fra at hvis en gammel rad samsvarer med den nye posten i tabellen for en PRIMARY KEY eller en UNIQUE indeks, slettet denne kommandoen den gamle raden før den nye raden ble lagt til.

Denne uttalelsen er nødvendig når vi ønsker å oppdatere de eksisterende postene i tabellen for å holde dem oppdatert. Hvis vi bruker standard innsettingsspørring til dette formålet, vil det gi en Duplikatoppføring for PRIMÆRKØKKEL eller en UNIK nøkkelfeil. I dette tilfellet vil vi bruke REPLACE-setningen til å utføre oppgaven vår. REPLACE-kommandoen krever en av de to mulig handlinger finner sted:

  • Hvis ingen samsvarende verdi blir funnet med den eksisterende dataraden, utføres en standard INSERT-setning.
  • Hvis duplikatposten blir funnet, vil erstatte-kommandoen slette den eksisterende raden og deretter legge til den nye posten i tabellen.

I REPLACE-setningen ble oppdateringen utført i to trinn. Først vil den slette den eksisterende posten, og deretter legges den nylig oppdaterte posten til, på samme måte som en standard INSERT-kommando. Dermed kan vi si at REPLACE-setningen utfører to standardfunksjoner, SLETT og SETT INN .

Syntaks

Følgende er syntaksen til ERSTATTE uttalelse i MySQL :

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

MySQL REPLACE Eksempel

La oss forstå hvordan REPLACE-setningen fungerer i MySQL ved hjelp av et eksempel. Først skal vi lage en tabell med navnet 'Person' ved å bruke følgende utsagn:

 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 ); 

Deretter må vi fylle posten inn i tabellen ved å bruke SETT INN uttalelse som nedenfor:

 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 PLUKKE UT uttalelse for å bekrefte postene som kan vises i utdataene nedenfor:

MySQL ERSTATT

Etter å ha verifisert dataene i en tabell, kan vi erstatte en hvilken som helst gammel rad med den nye raden ved å bruke REPLACE-setningen. Utfør setningen nedenfor som oppdaterer byen til en person hvis ID er 4 .

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

Etter vellykket utførelse av setningen ovenfor, er det nødvendig å spørre dataene til tabellen Person på nytt for å bekrefte erstatningen.

MySQL ERSTATT

Verdien i Navn og e-post kolonner er NULL nå. Det er fordi REPLACE-setningen fungerer som følger:

  • Denne setningen prøver først å sette inn en ny rad i Person-tabellen. Men innsettingen av en ny rad mislyktes fordi id = 4 allerede eksisterer i tabellen.
  • Så denne setningen sletter først raden hvis id = 4 og sett inn en ny rad med samme id og by som Amsterdam. Siden vi ikke har spesifisert verdien for navn og e-postkolonnen, ble den satt til NULL.

MySQL REPLACE-setning for å oppdatere en rad

Vi kan bruke følgende REPLACE-setning for å oppdatere en raddata til en tabell:

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

Syntaksen ovenfor ligner på OPPDATERING erklæring bortsett fra ERSTAT-nøkkelordet. Det er å merke seg at vi ikke kan bruke WHERE-klausulen med denne uttalelsen.

Utfør eksemplet nedenfor som bruker REPLACE-setningen til å oppdatere byen til personen som er navngitt Mike fra California til Birmingham .

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

Etter verifisering av tabellen kan vi se følgende utgang:

maskinskrift foreach
MySQL ERSTATT

Hvis vi ikke har spesifisert kolonnens verdi i SET-klausul , fungerer denne kommandoen som OPPDATERING erklæring , som betyr at REPLACE-setningen vil bruke standardverdien for den kolonnen.

MySQL REPLACE for å sette inn data fra SELECT-setningen.

Vi kan bruke følgende REPLACE INTO-setning for å sette inn data i en tabell med dataene som returneres fra en spørring.

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

Det er å merke seg at ovennevnte REPLACE-spørsmål ligner på INSERT I SELECT uttalelse. Utfør eksemplet nedenfor som bruker REPLACE INTO-setningen til å kopiere en rad i samme tabell.

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

Etter verifisering av tabellen vil vi få følgende utgang. I denne utgangen kan vi se at kopien av en rad i samme tabell er lagt til.

MySQL ERSTATT