Wstaw MySQL Ignoruj ​​zduplikowany klucz

Mysql Insert Ignore Duplicate Key



W tabelach lub zestawach wyników często występują sprzeczne dane. Poprawianie jest również czasochłonne i często należy unikać powtarzających się zapisów. Konieczne jest zidentyfikowanie zduplikowanych rekordów i usunięcie ich z dowolnej tabeli. W tej sekcji omówimy, jak uniknąć pojawiania się zduplikowanych danych w tabeli i jak wyeliminować zduplikowane rekordy. W tym przewodniku dowiesz się, jak używać klauzuli INSERT IGNORE, aby uniknąć błędu.

Składnia:

Oto składnia zapytania INSERT IGNORE.







>>INSERT IGNORE INTO nazwa_tabeli(kol1, kol2, kol3)WARTOŚCI(lista_wartości),(lista_wartości),(lista_wartości);

INSERT IGNORE przez Workbench:

Otwórz swój MySQL Workbench 8.0 ze swojego systemu i połącz go z instancją bazy danych.





W obszarze poleceń musisz utworzyć tabelę Employee z czterema kolumnami, w których jedna z nich musi być określona jako UNIQUE. Wypróbuj poniższe zapytanie w obszarze zapytań nawigatora, aby utworzyć tę tabelę. Wybierz całe zapytanie i kliknij znak flash, aby je wykonać.





>>UTWÓRZ TABELĘ Pracownik(ID int PRIMARY KEY NOT NULL, Nazwa varchar(pięćdziesiąt)NOT NULL, wiek Varchar(pięćdziesiąt), Wynagrodzenie varchar(pięćdziesiąt), JEDYNY W SWOIM RODZAJU(NS));

Po utworzeniu tabeli pracownika można znaleźć na liście w opcji Tabele pod danymi bazy danych.



W widoku siatki możesz wprowadzać rekordy bez wpisywania zapytania. Otwórz więc widok siatki pracownika tabeli i dodaj do niego kilka rekordów, jak pokazano poniżej. Wprowadziliśmy wszystkie unikalne rekordy bez duplikatów. Naciśnij przycisk „Zastosuj”, aby zastosować zmiany.

Otworzy się nowe okno z odpowiednimi zapytaniami związanymi z wpisami, które wpisaliśmy powyżej. Ten ekran można nazwać ekranem przeglądu. Jeśli chcesz coś zmienić, możesz to zrobić tutaj. W przeciwnym razie naciśnij przycisk Zastosuj, aby wykonać zapytania.

Jak widać zapytanie zostało wykonane pomyślnie, a rekordy zostały zapisane w bazie danych i jej tabeli Pracownik. Wygenerowałby błąd, gdybyśmy dodali jakąkolwiek zduplikowaną wartość w identyfikatorze kolumny. Stuknij przycisk Zakończ.

Chodziło o widok siatki. Teraz będziemy wstawiać rekordy za pośrednictwem obszaru zapytania. Tymczasem tym razem wstawialiśmy zduplikowane rekordy, aby sprawdzić wyniki. Wypróbowaliśmy więc poniższe zapytanie INSERT, w którym mamy dwie listy wartości. Obie listy wartości mają tę samą wartość w kolumnie „ID”. Wybierz zapytanie i naciśnij znak flash, aby wykonać zapytanie.

Zapytanie nie będzie działać poprawnie i wygeneruje błąd z powodu powielonych wartości w poleceniu INSERT, jak pokazano na obrazku.

Teraz wypróbuj to samo powyższe zapytanie z klauzulą ​​INSERT IGNORE i wykonaj je w przedstawiony sposób.

Widać, że nie generuje błędu w obszarze wyjściowym, ale ostrzega, że ​​polecenie zawiera zduplikowane wartości.

Odśwież widok siatki tabeli Pracownik. Zapytanie INSERT IGNORE zadziałało w połowie. Wstawił pierwszą listę wartości do tabeli, ale druga lista wartości została zignorowana z powodu powtarzającej się wartości 13.

INSERT IGNORE za pomocą powłoki wiersza poleceń:

Aby zrozumieć tę koncepcję, otwórzmy powłokę klienta wiersza poleceń MySQL w twoim systemie. Po zapytaniu wpisz swoje hasło do MySQL, aby rozpocząć pracę nad nim.

Teraz czas na stworzenie stołu. Wypróbuj poniższe polecenie, aby to zrobić. Stworzyliśmy tabelę o nazwie „minister”, podczas gdy jedna z jej kolumn ma ograniczenie UNIQUE. Oczywiste jest, że identyfikator kolumny zaakceptuje tylko wartości unikatowe, a nie zduplikowane.

>>UTWÓRZ TABELĘ data.minister(Mid INT PRIMARY KEY UNIQUE NOT NULL, nazwa VARCHAR(Cztery pięć), Miasto VARCHAR(Cztery pięć));

Zapytanie działa poprawnie, a tabela została utworzona. Aby zrozumieć klauzulę INSERT IGNORE, musisz najpierw zobaczyć, jak działa proste polecenie INSERT. Jeśli używasz polecenia INSERT, aby wstawić kilka danych informacyjnych do tabeli, MySQL zawiesza transakcję i generuje wyjątek, jeśli podczas przetwarzania wystąpi błąd. W konsekwencji do tabeli nie dodano żadnych wierszy. Wstawmy pierwszy rekord w tabeli minister używając poniższego zapytania. Zapytanie zadziała pomyślnie, ponieważ tabela jest obecnie pusta i nie ma odpowiednika dla rekordu.

Ponieważ identyfikator kolumny to UNIQUE, gdy spróbujemy poniższej instrukcji w powłoce wiersza poleceń, wygeneruje błąd. Dzieje się tak, ponieważ w poprzednim zapytaniu dodaliśmy wartość 11, a ze względu na klucz UNIQUE nie pozwala nam to ponownie dodać powtarzającej się wartości.

Dlatego po sprawdzeniu tabeli widzimy, że tabela ma tylko 1 rekord dodany przez pierwsze zapytanie INSERT.

>>WYBIERZ*OD danych.minister;

I odwrotnie, jeśli używasz klauzuli INSERT IGNORE, niepoprawne wiersze danych, które powodują błąd, zostaną przeoczone i wprowadzą tylko te dokładne. W poniższym poleceniu używaliśmy polecenia INSERT IGNORE, aby uniknąć dodawania powtarzających się wartości do tabeli i przeoczyć błąd. Jak widać, pierwsza lista wartości ma zduplikowaną wartość 11, taką samą jak w poprzednim zapytaniu. Chociaż druga lista wartości jest unikalna, pokaże 1 rekord wstawiony do tabeli, która jest drugą listą wartości. MySQL wskazuje również, że wstawiono tylko 1 rekord, aw wiadomości generowane jest 1 ostrzeżenie. Możesz wtedy założyć, że jeśli używamy klauzuli INSERT IGNORE, MySQL wyświetla ostrzeżenie.

Jak widać z poniższych danych wyjściowych, w tej tabeli mamy tylko dwa rekordy — pierwsza lista wartości podana w powyższym zapytaniu, która jest pomijana.

>>WYBIERZ*OD danych.minister;

Wniosek:

Wykonaliśmy wszystkie niezbędne przykłady INSERT IGNORE na zduplikowanych wartościach za pośrednictwem MySQL Workbench i powłoki klienta MySQL wiersza poleceń.