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,
REPLACE
instrukcja próbowała wstawić nowy wiersz docities
tabeli. Wstawienie nie powiodło się, ponieważ id 2 już istnieje w tabelicities
. - Następnie,
REPLACE
statement 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