MySQL REPLACE

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:

REPLACE table_name(column_list)VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Jest ona podobna do instrukcji 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:

CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
Code language: SQL (Structured Query Language) (sql)

Następnie wstaw kilka wierszy do tabeli cities:

INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Code language: SQL (Structured Query Language) (sql)

Następnie wykonaj zapytanie o dane z tabeli cities w celu weryfikacji operacji wstawiania.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
MySQL REPLACE - przykładowa tabela

Później, użyj instrukcji REPLACE aby zaktualizować populację miasta Los Angeles do 3696820.

REPLACE INTO cities(id,population)VALUES(2,3696820);
Code language: SQL (Structured Query Language) (sql)

Na koniec ponownie przepytaj dane tabeli cities, aby zweryfikować zamianę.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
Przykład MySQL REPLACE

Wartość w kolumnie name wynosi NULL teraz. Instrukcja REPLACE działa w następujący sposób:

  1. Pierwsza, REPLACE instrukcja próbowała wstawić nowy wiersz do cities tabeli. Wstawienie nie powiodło się, ponieważ id 2 już istnieje w tabeli cities.
  2. 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 na NULL.

Użycie instrukcji MySQL REPLACE do aktualizacji wiersza

Następujący przykład ilustruje, jak użyć instrukcji REPLACE do aktualizacji danych:

REPLACE INTO tableSET column1 = value1, column2 = value2;
Code language: SQL (Structured Query Language) (sql)

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:

REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
Code language: SQL (Structured Query Language) (sql)

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.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)

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.

REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Code language: SQL (Structured Query Language) (sql)

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:

REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
Code language: SQL (Structured Query Language) (sql)

W tym poradniku poznaliście różne formy instrukcji MySQL REPLACE do wstawiania lub aktualizowania danych w tabeli.

  • Czy ten kurs był pomocny?
  • TakNie

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *