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ą.