Izjava REPLACE u MySQL-u je proširenje SQL standarda. Ova izjava radi isto kao INSERT izjava, osim što ako stari red odgovara novom zapisu u tablici za PRIMARY KEY ili UNIQUE indeks, ova naredba briše stari red prije dodavanja novog reda.
Ova izjava je potrebna kada želimo ažurirati postojeće zapise u tablici kako bi ostali ažurirani. Ako za ovu svrhu koristimo standardni upit za umetanje, on će dati Duplicate unos za PRIMARY KEY ili UNIQUE key error. U ovom slučaju koristit ćemo naredbu REPLACE za izvođenje našeg zadatka. Naredba REPLACE zahtijeva jednu od dvije moguće radnje se odvijaju:
- Ako nije pronađena podudarna vrijednost s postojećim podatkovnim redom, izvodi se standardna naredba INSERT.
- Ako se pronađe dvostruki zapis, naredba zamjene će izbrisati postojeći red i zatim dodati novi zapis u tablicu.
U naredbi REPLACE, ažuriranje se izvodi u dva koraka. Prvo će izbrisati postojeći zapis, a zatim se dodaje novi ažurirani zapis, slično standardnoj naredbi INSERT. Dakle, možemo reći da naredba REPLACE obavlja dvije standardne funkcije, IZBRISATI i UMETNUTI .
Sintaksa
kako pokrenuti skriptu na linuxu
Sljedeća je sintaksa ZAMIJENITI izjava u MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
Primjer MySQL REPLACE
Razmotrimo rad naredbe REPLACE u MySQL uz pomoć primjera. Prvo ćemo kreirati tablicu pod nazivom 'Osoba' pomoću sljedeće izjave:
10 ml je koliko
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 );
Zatim moramo popuniti zapis u tablicu pomoću UMETNUTI izjava kao u nastavku:
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');
izvršiti IZABERI izjava za provjeru zapisa koji se mogu prikazati u donjem izlazu:
Nakon provjere podataka u tablici, možemo zamijeniti bilo koji stari redak novim redom pomoću naredbe REPLACE. Izvršite naredbu u nastavku koja ažurira grad osobe čiji je ID 4 .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
Nakon uspješnog izvođenja gornje naredbe potrebno je ponovno upitati podatke tablice Osoba za provjeru zamjene.
lateks matrica
Vrijednost u Ime i elektronička pošta stupci su NULL sada. To je zato što naredba REPLACE radi na sljedeći način:
- Ova izjava prvo pokušava umetnuti novi redak u tablicu osoba. Ali umetanje novog retka nije uspjelo jer id = 4 već postoji u tablici.
- Dakle, ova izjava prvo briše red čiji je id = 4, a zatim umetnite novi red s istim id-om i gradom kao Amsterdam. Budući da nismo naveli vrijednost za stupac imena i e-pošte, postavljena je na NULL.
MySQL REPLACE izjava za ažuriranje retka
Možemo koristiti sljedeću naredbu REPLACE za ažuriranje podataka retka u tablicu:
REPLACE INTO table SET column1 = value1, column2 = value2;
Gornja sintaksa slična je sintaksi UPDATE izjava osim ključne riječi REPLACE. Treba napomenuti da ne možemo koristiti WHERE klauzulu s ovom izjavom.
Izvršite donji primjer koji koristi naredbu REPLACE za ažuriranje grada imenovane osobe Mikrofon iz Kalifornija do Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
Nakon provjere tablice, možemo vidjeti sljedeći rezultat:
Ako nismo naveli vrijednost stupca u SET klauzula , ova naredba radi kao UPDATE izjava , što znači da će izjava REPLACE koristiti zadanu vrijednost tog stupca.
MySQL REPLACE za umetanje podataka iz naredbe SELECT.
Možemo upotrijebiti sljedeću naredbu REPLACE INTO za umetanje podataka u tablicu s podacima koje vraća upit.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
Treba napomenuti da je gornji REPLACE upit sličan upitu INSERT INTO SELECT izjava. Izvršite donji primjer koji koristi naredbu REPLACE INTO za kopiranje retka unutar iste tablice.
hashset java
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
Nakon provjere tablice, dobit ćemo sljedeći izlaz. U ovom izlazu možemo vidjeti da je kopija retka unutar iste tablice uspješno dodana.