logo

VÝMENA MySQL

Príkaz REPLACE v MySQL je rozšírením štandardu SQL. Tento príkaz funguje rovnako ako príkaz INSERT okrem toho, že ak sa starý riadok zhoduje s novým záznamom v tabuľke pre PRIMARY KEY alebo UNIQUE index, tento príkaz vymaže starý riadok pred pridaním nového riadka.

Toto vyhlásenie sa vyžaduje, keď chceme aktualizovať existujúce záznamy do tabuľky, aby boli aktualizované. Ak na tento účel použijeme štandardný dotaz na vloženie, zobrazí sa duplicitná položka pre PRIMARY KEY alebo UNIQUE key error. V tomto prípade použijeme na vykonanie našej úlohy príkaz REPLACE. Príkaz REPLACE vyžaduje jeden z týchto dvoch možné prebiehajú akcie:

  • Ak sa nenájde žiadna zodpovedajúca hodnota s existujúcim riadkom údajov, vykoná sa štandardný príkaz INSERT.
  • Ak sa nájde duplicitný záznam, príkaz nahradiť vymaže existujúci riadok a potom pridá nový záznam do tabuľky.

V príkaze REPLACE sa aktualizácia vykonala v dvoch krokoch. Najprv vymaže existujúci záznam a potom sa pridá novo aktualizovaný záznam, podobne ako štandardný príkaz INSERT. Môžeme teda povedať, že príkaz REPLACE vykonáva dve štandardné funkcie, VYMAZAŤ a VLOŽIŤ .

Syntax

Nasledujú syntaxe NAHRADIŤ vyhlásenie v MySQL :

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

MySQL REPLACE Príklad

Poďme pochopiť fungovanie príkazu REPLACE v MySQL pomocou príkladu. Najprv vytvoríme tabuľku s názvom 'osoba' pomocou nasledujúceho vyhlásenia:

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

Ďalej musíme vyplniť záznam do tabuľky pomocou VLOŽIŤ vyhlásenie, ako je uvedené nižšie:

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

Vykonajte SELECT vyhlásenie na overenie záznamov, ktoré možno zobraziť v nasledujúcom výstupe:

VÝMENA MySQL

Po overení údajov do tabuľky môžeme nahradiť ľubovoľný starý riadok novým riadkom pomocou príkazu REPLACE. Vykonajte nižšie uvedené vyhlásenie, ktoré aktualizuje súbor mesto osoby, ktorej identifikačné číslo je 4 .

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

Po úspešnom vykonaní vyššie uvedeného príkazu je potrebné znova dotazovať údaje tabuľky Osoba na overenie náhrady.

VÝMENA MySQL

Hodnota v názov a e-mailom stĺpce sú NULOVÝ teraz. Je to preto, že príkaz REPLACE funguje nasledovne:

  • Tento príkaz sa najskôr pokúsi vložiť nový riadok do tabuľky Osoba. Vloženie nového riadku však zlyhalo, pretože id = 4 už v tabuľke existuje.
  • Takže tento príkaz najprv vymaže riadok, ktorého id = 4 a potom vloží nový riadok s rovnakým id a mestom ako Amsterdam. Keďže sme nešpecifikovali hodnotu pre stĺpec meno a e-mail, bola nastavená na NULL.

Príkazom MySQL REPLACE aktualizujte riadok

Na aktualizáciu údajov riadka do tabuľky môžeme použiť nasledujúci príkaz REPLACE:

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

Vyššie uvedená syntax je podobná syntaxi AKTUALIZOVAŤ vyhlásenie okrem kľúčového slova REPLACE. Je potrebné poznamenať, že v tomto vyhlásení nemôžeme použiť klauzulu WHERE.

Vykonajte nižšie uvedený príklad, ktorý používa príkaz REPLACE na aktualizáciu mesta menovanej osoby Mike od Kalifornia do Birminghame .

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

Po overení tabuľky môžeme vidieť nasledujúci výstup:

VÝMENA MySQL

Ak sme nešpecifikovali hodnotu stĺpca v klauzula SET , tento príkaz funguje ako AKTUALIZOVAŤ vyhlásenie , čo znamená, že príkaz REPLACE použije predvolenú hodnotu tohto stĺpca.

MySQL REPLACE na vloženie údajov z príkazu SELECT.

Na vloženie údajov do tabuľky s údajmi vrátenými z dotazu môžeme použiť nasledujúci príkaz REPLACE INTO.

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

Je potrebné poznamenať, že vyššie uvedený dotaz REPLACE je podobný dotazu INSERT DO SELECT vyhlásenie. Vykonajte nižšie uvedený príklad, ktorý používa príkaz REPLACE INTO na skopírovanie riadku v tej istej tabuľke.

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

Po overení tabuľky dostaneme nasledujúci výstup. V tomto výstupe môžeme vidieť, že kópia riadku v rámci tej istej tabuľky bola úspešne pridaná.

VÝMENA MySQL