Co jest upsert i jak to zrobić w MySQL

Co jest upsert i jak to zrobić w MySQL
Bazy danych stały się istotną częścią dzisiejszego społeczeństwa. Bazy danych pomagają nam wydajniej przechowywać nasze dane i zmniejszyć błędy. Od małego sklepu po wielobranżową firmę, wszystkie używają baz danych do przechowywania swoich informacji. Możesz argumentować, że informacje mogą być przechowywane w arkuszu kalkulacyjnym w zorganizowany sposób.

Chociaż jest to technicznie poprawne, ale praktycznie, jest to bardzo katastrofalne. Powodem jest to, że wraz ze wzrostem danych, przechowywane jest wiele zwolnień i bezużytecznych danych. Wiele razy dane mogą nawet konfliktować. Coś takiego może być bardzo szkodliwe dla każdej firmy. Rozwiązaniem jest przechowywanie danych w bazie danych.

Krótko mówiąc, system zarządzania bazą danych lub DBMS jest oprogramowaniem, które pozwala użytkownikom zarządzać swoją bazą danych. W przypadku ogromnych fragmentów danych używana jest baza danych. System zarządzania bazami danych zapewnia wiele krytycznych funkcji. Upsert to jedna z tych funkcji. Upsert, jak nazwa, wskazuje kombinację aktualizacji i wstawiania dwóch słów. Pierwsze dwie litery pochodzą z aktualizacji, a reszta czterech jest z wstawki. Upsert pozwala autorowi manipulacji danymi (DML) na wstawienie nowego wiersza lub aktualizację istniejącego wiersza. Upsert to operacja atomowa, co oznacza, że ​​jest to jednoetapowa operacja.

Domyślnie MySQL zapewnia opcję zduplikowanej aktualizacji klucza do wstawienia, która wykonuje to zadanie. Jednak do wykonania tego zadania można wykorzystać inne stwierdzenia. Obejmują one stwierdzenia, takie jak Ignor, wymień lub wstaw.

Możesz wykonać Upsert za pomocą MySQL na trzy sposoby.

  1. Upsert za pomocą wstawki ignoruj
  2. Upsert za pomocą zamiennika
  3. Upsert Używając na zduplikowanej aktualizacji klucza

Zanim przejdziemy dalej, będę używać mojej bazy danych w tym przykładzie i będziemy pracować w MySQL Workbench. Obecnie używam wersji 8.0 Edycja społeczności. Nazwa bazy danych używanej w tym samouczku to Sakila. Sakila to baza danych zawierająca szesnaście tabel. W tej bazie danych skupimy się na tabeli sklepów. Ta tabela zawiera cztery atrybuty i dwa wiersze. Atrybut Store_id jest kluczowym kluczem.

Zobaczmy, jak powyższe sposoby wpływają na te dane.

Upsert za pomocą wstawki ignoruj

Wstaw ignorowanie powoduje, że MySQL ignoruje błędy wykonania podczas wykonania wkładki. Tak więc, jeśli wkładasz nowy rekord z tym samym kluczem podstawowym, co jeden z rekordów już w tabeli, otrzymasz błąd. Jeśli jednak wykonasz tę akcję za pomocą wstawki ignoruj, wynikowy błąd zostanie stłumiony.

Tutaj staramy się dodać nowy rekord za pomocą standardowej instrukcji MySQL Insert.

Otrzymujemy następujący błąd.

Ale kiedy wykonujemy tę samą funkcję za pomocą INSERT IGNORE, nie otrzymujemy błędu. Zamiast tego otrzymujemy następujące ostrzeżenie, a MySQL ignoruje to oświadczenie wstawienia. Ta metoda jest korzystna, gdy dodajesz ogromne ilości nowych rekordów do tabeli. Tak więc, jeśli są jakieś duplikaty, MySQL zignoruje je i doda pozostałe rekordy do tabeli.

Upsert za pomocą wymiany:

W niektórych okolicznościach możesz zaktualizować swoje istniejące rekordy, aby aktualizować. Za pomocą standardowej wkładki tutaj da ci duplikat wpisu do błędu klucza podstawowego. W tej sytuacji możesz użyć zastępowania, aby wykonać swoje zadanie. Kiedy użyjesz, zamień dowolne dwa w następujących zdarzeniach, które mają miejsce.

Istnieje stary rekord, który pasuje do tego nowego rekordu. W takim przypadku zamień działa jak standardowa instrukcja wstawka i wkłada nowy rekord w tabeli. Drugim przypadkiem jest to, że niektóre poprzednie rekordy pasują do dodania nowego rekordu. Tutaj wymień aktualizuje istniejący rekord.

Aktualizacja odbywa się w dwóch krokach. W pierwszym etapie istniejący rekord jest usuwany. Następnie nowo zaktualizowany rekord jest dodawany jak standardowa wkładka. Więc wykonuje dwie standardowe funkcje, usuń i wstaw. W naszym przypadku zastąpiliśmy pierwszy wiersz nowo zaktualizowanymi danymi.

Na poniższym zdjęciu możesz zobaczyć, jak komunikat mówi „2 wiersze (-y) dotkniętych”, podczas gdy my zastąpiliśmy lub aktualizowaliśmy wartości jednego rzędu. Podczas tej akcji pierwsza płyta została usunięta, a następnie wprowadzono nowy rekord. Stąd wiadomość mówi: „2 rzędów dotkniętych."

Upsert za pomocą wstawki… na zduplikowanej aktualizacji kluczowej:

Do tej pory spojrzeliśmy na dwa polecenia Upsert. Być może zauważyłeś, że każda metoda miała jej niedobór lub ograniczenia, jeśli możesz. Polecenie Ignorore, choć zignorowało duplikat wpisu, ale nie aktualizuje żadnych rekordów. Polecenie zamień, chociaż było aktualizowane, technicznie nie aktualizowało. Usuwało, a następnie wstawiono zaktualizowany wiersz.

Bardziej popularna i skuteczna opcja niż dwie pierwsze jest metoda na duplikat kluczowej aktualizacji. W przeciwieństwie do wymiany, która jest metodą destrukcyjną, ta metoda jest nieniszcząca, co oznacza, że ​​najpierw nie upuszcza zduplikowanych wierszy; Zamiast tego ich bezpośrednio aktualizuje. Ten pierwszy może powodować wiele problemów lub błędów, będąc metodą destrukcyjną. W zależności od ograniczeń obcego klucza, może to spowodować błąd lub w najgorszym przypadku, jeśli twój obcy klucz jest ustawiony na kaskadę, może usunąć wiersze z drugiej połączonej tabeli. To może być bardzo niszczące. Używamy więc tej nieniszczącej metody, ponieważ jest ona znacznie bezpieczniejsza.

Zmienimy rekordy zaktualizowane za pomocą Wymień do ich oryginalnych wartości. Tym razem użyjemy metody aktualizacji kluczowej ON Duplicate.

Zwróć uwagę, jak użyliśmy zmiennych. Mogą być przydatne, ponieważ nie musisz dodawać wartości w instrukcji raz po raz, zmniejszając w ten sposób szanse na błąd. Poniżej znajduje się zaktualizowana tabela. Aby odróżnić go od oryginalnej tabeli, zmieniliśmy atrybut Last_update.

Wniosek:

Tutaj dowiedzieliśmy się, że Upsert to kombinacja aktualizacji i wstawienia dwóch słów. Działa na następującej zasadzie, że jeśli nowy wiersz nie ma żadnych duplikatów, wstaw go i jeśli ma duplikaty wykonać odpowiednią funkcję zgodnie z instrukcją. Istnieją trzy metody wykonywania upsert. Każda metoda ma pewne limity. Najpopularniejsza jest metoda aktualizacji kluczowej. Ale w zależności od twoich wymagań, każdy z powyższych metod może być dla Ciebie bardziej przydatny. Mam nadzieję, że ten samouczek jest dla ciebie pomocny.