logo

ZAMIEŃ MySQL

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:

ZAMIEŃ MySQL

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.

ZAMIEŃ MySQL

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:

ZAMIEŃ MySQL

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.

ZAMIEŃ MySQL