Instrukcja REPLACE w MySQL jest rozszerzeniem standardu SQL. Ta instrukcja działa tak samo jak instrukcja INSERT, z tą różnicą, że jeśli stary wiersz pasuje do nowego rekordu w tabeli dla KLUCZA PODSTAWOWEGO lub indeksu UNIQUE, to polecenie usuwa stary wiersz przed dodaniem nowego.
To oświadczenie jest wymagane, gdy chcemy zaktualizować istniejące rekordy w tabeli, aby zapewnić ich aktualność. Jeśli w tym celu użyjemy standardowego zapytania wstawiającego, wyświetli się zduplikowany wpis dla KLUCZ PODSTAWOWY lub błąd klucza UNIQUE. W tym przypadku do wykonania naszego zadania użyjemy instrukcji REPLACE. Polecenie REPLACE wymaga jednego z dwóch możliwy akcje mają miejsce:
- Jeśli w istniejącym wierszu danych nie zostanie znaleziona pasująca wartość, wykonywana jest standardowa instrukcja INSERT.
- Jeśli zostanie znaleziony zduplikowany rekord, polecenie zamiany usunie istniejący wiersz, a następnie doda nowy rekord do tabeli.
W instrukcji REPLACE aktualizacja odbywa się w dwóch etapach. Najpierw usunie istniejący rekord, a następnie dodany zostanie nowo zaktualizowany rekord, podobnie jak w przypadku standardowego polecenia INSERT. Można zatem powiedzieć, że instrukcja REPLACE spełnia dwie standardowe funkcje: USUWAĆ I WSTAWIĆ .
Składnia
Poniżej znajduje się składnia ZASTĘPOWAĆ oświadczenie w MySQL'a :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
Przykład ZAMIANY MySQL
Przyjrzyjmy się działaniu instrukcji REPLACE w MySQL na przykładzie. Najpierw utworzymy tabelę o nazwie 'Osoba' używając następującego stwierdzenia:
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 );
Następnie musimy wypełnić rekord w tabeli za pomocą WSTAWIĆ oświadczenie jak poniżej:
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');
Wykonaj WYBIERAĆ instrukcja weryfikująca rekordy, które można wyświetlić w poniższych wynikach:
Po zweryfikowaniu danych w tabeli możemy zastąpić dowolny stary wiersz nowym wierszem za pomocą instrukcji REPLACE. Wykonaj poniższą instrukcję, która aktualizuje plik miasto osoby o identyfikatorze 4 .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
Po pomyślnym wykonaniu powyższej instrukcji należy ponownie sprawdzić dane tabeli Osoba w celu weryfikacji zamiany.
Wartość w nazwa I e-mail kolumny są ZERO Teraz. Dzieje się tak, ponieważ instrukcja REPLACE działa w następujący sposób:
- Ta instrukcja próbuje najpierw wstawić nowy wiersz do tabeli Person. Jednak wstawienie nowego wiersza nie powiodło się, ponieważ identyfikator = 4 już istnieje w tabeli.
- Zatem ta instrukcja najpierw usuwa wiersz, którego identyfikator = 4, a następnie wstawia nowy wiersz z tym samym identyfikatorem i miastem co Amsterdam. Ponieważ nie określiliśmy wartości kolumny name i email, została ona ustawiona na NULL.
Instrukcja MySQL REPLACE do aktualizacji wiersza
Aby zaktualizować dane wiersza do tabeli, możemy użyć następującej instrukcji REPLACE:
REPLACE INTO table SET column1 = value1, column2 = value2;
Powyższa składnia jest podobna do składni AKTUALIZUJ oświadczenie z wyjątkiem słowa kluczowego REPLACE. Należy zauważyć, że w tej instrukcji nie można użyć klauzuli WHERE.
Wykonaj poniższy przykład, w którym zastosowano instrukcję REPLACE w celu zaktualizowania miasta wskazanej osoby Mikrofon z Kalifornia Do Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
Po sprawdzeniu tabeli możemy zobaczyć następujący wynik:
Jeżeli nie określiliśmy wartości kolumny w pliku Klauzula SET , to polecenie działa podobnie jak AKTUALIZUJ oświadczenie , co oznacza, że instrukcja REPLACE użyje wartości domyślnej tej kolumny.
MySQL REPLACE, aby wstawić dane z instrukcji SELECT.
Możemy użyć poniższej instrukcji REPLACE INTO, aby wstawić dane do tabeli zawierającej dane zwrócone z zapytania.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
Należy zauważyć, że powyższe zapytanie REPLACE jest podobne do zapytania WSTAW DO WYBIERZ oświadczenie. Wykonaj poniższy przykład, w którym zastosowano instrukcję REPLACE INTO w celu skopiowania wiersza w tej samej tabeli.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
Po sprawdzeniu tabeli otrzymamy następujący wynik. W tym wyniku widzimy, że kopia wiersza w tej samej tabeli została pomyślnie dodana.