A REPLACE utasítás a MySQL-ben az SQL szabvány kiterjesztése. Ez az utasítás ugyanúgy működik, mint az INSERT utasítás, azzal a különbséggel, hogy ha egy régi sor egyezik a tábla új rekordjával egy ELSŐDLEGES KULCS vagy egy EGYEDI index esetében, akkor ez a parancs törölte a régi sort az új sor hozzáadása előtt.
Ez az utasítás akkor szükséges, ha frissíteni akarjuk a meglévő rekordokat a táblába, hogy azok naprakészek maradjanak. Ha erre a célra a szabványos beszúrási lekérdezést használjuk, akkor az ELSŐDLEGES KULCS duplikált bejegyzést vagy EGYEDI kulcs hibát ad. Ebben az esetben a REPLACE utasítást fogjuk használni feladatunk végrehajtásához. A REPLACE parancshoz a kettő közül az egyik szükséges lehetséges akciók történnek:
tigris az oroszlánhoz képest
- Ha nem található egyező érték a meglévő adatsorral, akkor egy szabványos INSERT utasítás kerül végrehajtásra.
- Ha a rekord ismétlődik, a csere parancs törli a meglévő sort, majd hozzáadja az új rekordot a táblázathoz.
A REPLACE utasításban a frissítés két lépésben történt. Először törli a meglévő rekordot, majd hozzáadja az újonnan frissített rekordot, hasonlóan egy szabványos INSERT parancshoz. Így elmondhatjuk, hogy a REPLACE utasítás két szabványos funkciót hajt végre, TÖRÖL és BESZÁLLÍTÁS .
Szintaxis
A következő a szintaxis CSERE nyilatkozat be MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
MySQL REPLACE Példa
Ismerjük meg a REPLACE utasítás működését a MySQL-ben egy példa segítségével. Először létrehozunk egy nevű táblát 'Személy' a következő állítás segítségével:
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 );
Ezután ki kell töltenünk a rekordot a táblázatba a BESZÁLLÍTÁS nyilatkozat az alábbiak szerint:
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');
Hajtsa végre a KIVÁLASZTÁS nyilatkozat az alábbi kimenetben megjeleníthető rekordok ellenőrzésére:
Az adatok táblába való igazolása után a REPLACE utasítás segítségével bármelyik régi sort lecserélhetjük az újra. Hajtsa végre az alábbi utasítást, amely frissíti a 4-es azonosítójú személy városa .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
A fenti utasítás sikeres végrehajtása után szükséges a Személy tábla adatainak ismételt lekérdezése a helyettesítés ellenőrzéséhez.
Az érték a név és email oszlopok vannak NULLA Most. Ez azért van, mert a REPLACE utasítás a következőképpen működik:
- Ez az utasítás először egy új sort próbál beszúrni a Személy táblába. Az új sor beszúrása azonban sikertelen, mert az id = 4 már létezik a táblázatban.
- Tehát ez az utasítás először törölje azt a sort, amelynek azonosítója = 4, majd szúrjon be egy új sort, amelynek azonosítója és városa ugyanaz, mint Amszterdam. Mivel nem adtuk meg a név és e-mail oszlop értékét, NULL-ra állítottuk.
MySQL REPLACE utasítás egy sor frissítéséhez
A következő REPLACE utasítást használhatjuk egy sor adatainak táblázatba való frissítéséhez:
REPLACE INTO table SET column1 = value1, column2 = value2;
A fenti szintaxis hasonló a UPDATE nyilatkozat kivéve a REPLACE kulcsszót. Megjegyzendő, hogy ezzel az utasítással nem használhatjuk a WHERE záradékot.
Hajtsa végre az alábbi példát, amely a REPLACE utasítást használja a megnevezett személy városának frissítéséhez Mikrofon tól től Kalifornia nak nek Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
A táblázat ellenőrzése után a következő kimenetet láthatjuk:
Ha nem adtuk meg az oszlop értékét a SET záradék , ez a parancs úgy működik, mint a UPDATE nyilatkozat , ami azt jelenti, hogy a REPLACE utasítás az adott oszlop alapértelmezett értékét fogja használni.
mutatók a c
A MySQL REPLACE adatok beszúrásához a SELECT utasításból.
A következő REPLACE INTO utasítással adatokat szúrhatunk be egy táblába a lekérdezésből visszaadott adatokkal.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
Megjegyzendő, hogy a fenti REPLACE lekérdezés hasonló a INSERT INTO SELECT nyilatkozat. Hajtsa végre az alábbi példát, amely a REPLACE INTO utasítást használja egy sor másolásához ugyanazon a táblán belül.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
A táblázat ellenőrzése után a következő kimenetet kapjuk. Ebben a kimenetben láthatjuk, hogy egy sor másolata ugyanabban a táblában sikeresen hozzáadásra került.