Podsumowanie: W tym poradniku dowiesz się jak używać instrukcji MySQL REPLACE do wstawiania lub aktualizacji danych w tabelach bazy danych.
Wprowadzenie do instrukcji MySQL REPLACE
Konstrukcja MySQL REPLACE jest rozszerzeniem standardu SQL. Polecenie MySQL REPLACE działa w następujący sposób:
Krok 1. Wstawienie nowego wiersza do tabeli, jeśli wystąpi błąd duplikatu klucza.
Krok 2. Jeśli wstawienie nie powiedzie się z powodu wystąpienia błędu duplikatu klucza:
- Usuń z tabeli wiersz powodujący konflikt, który powoduje błąd duplikatu klucza.
- Wstaw ponownie nowy wiersz do tabeli.
Aby określić, czy nowy wiersz, który już istnieje w tabeli, MySQL używa PRIMARY KEY lub UNIQUE KEY indeksu. Jeśli tabela nie ma jednego z tych indeksów, instrukcja REPLACE działa jak instrukcja INSERT.
Aby użyć instrukcji REPLACE, musisz mieć co najmniej oba uprawnienia INSERT i DELETE dla tabeli.
Zauważ, że MySQL posiada funkcję REPLACE string, która nie jest REPLACE oświadczeniem omawianym w tym poradniku.
Używanie MySQL REPLACE do wstawiania nowego wiersza
Następująca ilustracja przedstawia składnię instrukcji REPLACE:
Code language: SQL (Structured Query Language) (sql)REPLACE table_name(column_list)VALUES(value_list);
INSERT z wyjątkiem słowa kluczowego REPLACE.Przyjrzyjmy się poniższemu przykładowi użycia instrukcji REPLACE, aby zobaczyć, jak to działa.
Po pierwsze, utwórz nową tabelę o nazwie cities w następujący sposób:
Code language: SQL (Structured Query Language) (sql)CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
Następnie wstaw kilka wierszy do tabeli cities:
Code language: SQL (Structured Query Language) (sql)INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Następnie wykonaj zapytanie o dane z tabeli cities w celu weryfikacji operacji wstawiania.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;

Później, użyj instrukcji REPLACE aby zaktualizować populację miasta Los Angeles do 3696820.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(id,population)VALUES(2,3696820);
Na koniec ponownie przepytaj dane tabeli cities, aby zweryfikować zamianę.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;

Wartość w kolumnie name wynosi NULL teraz. Instrukcja REPLACE działa w następujący sposób:
- Pierwsza,
REPLACEinstrukcja próbowała wstawić nowy wiersz docitiestabeli. Wstawienie nie powiodło się, ponieważ id 2 już istnieje w tabelicities. - Następnie,
REPLACEstatement usunął wiersz z id 2 i wstawił nowy wiersz z tym samym id 2 i populacją3696820. Ponieważ nie określono wartości dla kolumny name, została ona ustawiona naNULL.
Użycie instrukcji MySQL REPLACE do aktualizacji wiersza
Następujący przykład ilustruje, jak użyć instrukcji REPLACE do aktualizacji danych:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO tableSET column1 = value1, column2 = value2;
Ta instrukcja jest jak instrukcja UPDATE z wyjątkiem słowa kluczowego REPLACE. Dodatkowo, nie posiada ona klauzuli WHERE.
Ten przykład wykorzystuje instrukcję REPLACE do aktualizacji populacji miasta Phoenix do 1768980:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
W przeciwieństwie do instrukcji UPDATE, jeśli nie określisz wartości dla kolumny w klauzuli SET, instrukcja REPLACE użyje domyślnej wartości tej kolumny.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
Używanie MySQL REPLACE do wstawiania danych z instrukcji SELECT
Poniżej zilustrowano instrukcję REPLACE , która wstawia dane do tabeli z danymi pochodzącymi z zapytania.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Zauważ, że ta forma instrukcji REPLACE jest podobna do instrukcji INSERT INTO SELECT.
Poniższa instrukcja używa instrukcji REPLACE INTO do kopiowania wiersza w obrębie tej samej tabeli:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
W tym poradniku poznaliście różne formy instrukcji MySQL REPLACE do wstawiania lub aktualizowania danych w tabeli.
- Czy ten kurs był pomocny?
- TakNie