MySQL – Jak wstawić nowy wiersz tylko wtedy, gdy dane nie istnieją

Mysql Jak Wstawic Nowy Wiersz Tylko Wtedy Gdy Dane Nie Istnieja



MySQL to słynny RDBMS typu open source do przechowywania danych w bazach danych. Wstawianie danych do tabel bazy danych jest częstym zadaniem. Czasami użytkownicy nie chcą wstawiać zduplikowanych danych, aby wyeliminować nadmiarowość. MySQL umożliwia użytkownikom wstawianie danych tylko wtedy, gdy podobne dane już nie istnieją.

W tym poście omówimy wstawianie nowego wiersza tylko wtedy, gdy dane nie istnieją już w tabeli MySQL. Zanim zaczniesz pisać ten post, upewnij się, że jesteś zalogowany na lokalnym serwerze MySQL i wybrałeś bazę danych, w której chcesz pracować.

Wstaw nowy wiersz tylko wtedy, gdy dane nie istnieją, używając instrukcji „INSERT IGNORE”.

Cóż, odpowiedź na tytułowe pytanie jest dość prosta i jednoznaczna. Po prostu skorzystaj z opcji „ WSTAWIĆ ” słowo kluczowe wraz z „ IGNOROWAĆ ” Słowo kluczowe. Dzięki temu nowe dane lub zapytanie wstawiania zostanie wykonane tylko wtedy, gdy w MySQL nie zostanie znaleziony żaden poprzedni wpis danych. Aby uzyskać krótkie omówienie tego, spójrz na następującą składnię:







WSTAWIĆ IGNOROWAĆ DO [ tabela - nazwa ] ( [ kolumna1 - nazwa ] , [ kolumna2 - nazwa ] , [ kolumna3 - nazwa ] ) WARTOŚCI ( [ wartość1 ] , [ wartość2 ] , [ wartość3 ] ) ;

Zobaczmy przykład, jeśli użytkownik chce wprowadzić wartość wiersza „ 1 ”, „ Jan ' I ' Łania ' w ' Klient ”tabela dla kolumn” ID ”, „ Imię ' I ' Nazwisko ” odpowiednio. Uruchom to zapytanie, aby wstawić te wartości, jeśli istnieją, jeśli nie istnieje jeszcze żaden wiersz z tymi wartościami:



WYBIERAĆ * Z Klient;
WSTAWIĆ IGNOROWAĆ DO Klient ( ID , Imię , Nazwisko ) WARTOŚCI ( 1 , 'Jan' , 'Łania' ) ;

Dane wyjściowe zawierają dwie tabele wyświetlające dane tabeli przed i po wykonaniu zapytania. Możesz zauważyć, że nic się nie zmienia w tabeli, ponieważ wiersz już istniał, więc MySQL pomyślnie zignorował proces wstawiania bez wyświetlania błędu:







Wstaw nowy wiersz tylko wtedy, gdy dane nie istnieją, używając klauzuli „GDZIE NIE ISTNIEJE”.

W MySQL „ GDZIE NIE ISTNIEJE Klauzula ” zapobiega wstawianiu wierszy, jeśli już istnieją w tabeli, gdy jest używana w „ WŁÓŻ W ” z podzapytaniem do zdefiniowania warunku. Gdy ta klauzula jest używana z podzapytaniem „ (SELECT * FROM [nazwa-tabeli] [nazwa-kolumny]=[wyrażenie]); ” sprawdza, czy w tabeli istnieje wiersz spełniający warunek. Jeśli wiersz istnieje, „ GDZIE NIE ISTNIEJE ” zwróci wartość fałszywą, a „ WYBIERAĆ ” instrukcja nie zwróci żadnych wierszy. W rezultacie wiersz nie zostanie wstawiony do tabeli. Składnia jest przedstawiona poniżej:

WSTAWIĆ DO [ tabela - nazwa ] ( [ kolumna1 - nazwa ] , [ kolumna2 - nazwa ] , [ kolumna3 - nazwa ] )
WYBIERAĆ [ wartość1 ] , [ wartość2 ] , [ wartość3 ]
GDZIE NIE ISTNIEJE ( WYBIERAĆ * Z [ tabela - nazwa ] [ kolumna - nazwa ] = [ wyrażenie ] ) ;

Zobaczmy przykład, jeśli użytkownik chce wstawić wiersz w tabeli pracowników zawierający wartości „ 1 ”, „ amerykański ' I ' Henriota ” w kolumnach ” ID ”, „ Nazwa firmy ' I ' Nazwa Kontaktu ” odpowiednio. Ale tylko wtedy, gdy wiersz o identyfikatorze „ 1 ” nie występuje w tabeli lub nie istnieje. W tym konkretnym przypadku zapytanie stanie się:



WYBIERAĆ * Z pracownik;

WSTAWIĆ DO pracownik ( ID , Nazwa firmy , Nazwa Kontaktu )
WYBIERAĆ 1 , 'Amerykański' , „Henriota”
GDZIE NIE ISTNIEJE ( WYBIERAĆ * Z pracownik GDZIE ID = 1 ) ;

Dane wyjściowe wyświetlają nowy wiersz, który nie jest wstawiany jako wiersz z „ ID ' równy ' 1 ” już istniał.

Wstaw nowy wiersz tylko wtedy, gdy dane nie istnieją, korzystając z klauzuli „ON DUPLICATE KEY UPDATE”

Cóż, innym sposobem jest użycie „ PRZY AKTUALIZACJI DUPLIKATU KLUCZA ” w MySQL. Ponieważ ta klauzula będzie używana z zapytaniem „INSERT INTO” tworzącym wykonanie „if-else”. Oznacza to, że dane w tabeli zostaną zaktualizowane tylko wtedy, gdy są unikalne. Inaczej żadna zmiana by nie nastąpiła. Ogólna składnia tego jest następująca:

WSTAWIĆ DO [ tabela - nazwa ] ( [ kolumna1 - nazwa ] , [ kolumna2 - nazwa ] , [ kolumna3 - nazwa ] ) WARTOŚCI ( [ wartość1 ] , [ wartość2 ] , [ wartość3 ] )
NA DUPLIKOWAĆ KLUCZ AKTUALIZACJA [ kolumna1 - nazwa ] = [ kolumna1 - nazwa ] ;

Zobaczmy przykład, aby wstawić wartości w „ 2 ”, „ Pascale ”, „ Nixona ”, „ Londyn ”, „ Wielka Brytania ' I „(171) 555-7788 ' na stole ' Klient ” dla kolumn “ ID ”, „ Imię ”, „ Nazwisko ”, „ miasto ”, „ kraj ' I ' telefon ” odpowiednio. Jeśli wiersz jeszcze nie istnieje, zostanie wstawiony. W przeciwnym razie zaktualizuje wartości, w których „ Identyfikator=Id ” warunek spełnia. Uruchom to zapytanie:

WYBIERAĆ * Z Klient ;
WSTAWIĆ DO Klient ( ID , Imię , Nazwisko , miasto , kraj , telefon )
WARTOŚCI ( 2 , „Pascale” , „Nixon” , 'Londyn' , „Wielka Brytania” , '(171) 555-7788' )
NA DUPLIKOWAĆ KLUCZ AKTUALIZACJA ID = ID;

To jest tabela przed uruchomieniem zapytania, możesz zobaczyć „ ID ' równy ' 2 ' nie istnieje:

Po uruchomieniu zapytania to zapytanie wstawi nowe wiersze do tabeli:

Pomyślnie wstawiono nowy wiersz, ponieważ dane nie istniały przed uruchomieniem zapytania.

Wniosek

W MySQL wstaw nowy wiersz tylko wtedy, gdy dane jeszcze nie istnieją, używając „ WSTAW IGNORUJ ” stwierdzenie lub „ GDZIE NIE ISTNIEJE ”klauzula w „ WŁÓŻ W ' oświadczenie. Innym sposobem na to jest użycie „ PRZY AKTUALIZACJI DUPLIKATU KLUCZA ”klauzula w „ WŁÓŻ W ”, aby zaktualizować, jeśli wiersz już istnieje. W przeciwnym razie dodaj nowy wiersz. W poście omówiono sposób wstawiania nowego wiersza tylko wtedy, gdy dane nie istnieją.