MySQL – Jak vložit nový řádek, pouze pokud data neexistují

Mysql Jak Vlozit Novy Radek Pouze Pokud Data Neexistuji



MySQL je slavný open-source RDBMS pro ukládání dat v databázích. Vkládání dat do tabulek vaší databáze je běžný úkol. Někdy uživatelé nechtějí vkládat duplicitní data, aby se eliminovala redundance. MySQL umožňuje uživatelům vkládat data pouze v případě, že podobná data ještě neexistují.

Tento příspěvek bude diskutovat o vložení nového řádku pouze v případě, že data v tabulce MySQL již neexistují. Než začnete s tímto příspěvkem, ujistěte se, že jste přihlášeni k místnímu serveru MySQL a vybrali jste databázi, ve které chcete pracovat.

Vložit nový řádek pouze v případě, že data neexistují pomocí příkazu „INSERT IGNORE“.

No, odpověď na otázku v nadpisu je docela jednoduchá a přímočará. Jednoduše použijte „ VLOŽIT ” klíčové slovo spolu s “ IGNOROVAT Klíčové slovo. Tím zajistíte, že nová data nebo vkládací dotaz budou provedeny pouze v případě, že v MySQL nebude nalezen žádný předchozí záznam dat. Chcete-li o tom získat stručný přehled, podívejte se na následující syntaxi:







VLOŽIT IGNOROVAT DO [ stůl - název ] ( [ sloupec1 - název ] , [ sloupec2 - název ] , [ sloupec3 - název ] ) HODNOTY ( [ hodnota1 ] , [ hodnota2 ] , [ hodnota3 ] ) ;

Podívejme se na příklad, pokud chce uživatel zadat hodnotu řádku „ 1 “, “ John ' a ' Srna “ v „ Zákazník 'tabulka pro sloupce' Id ',' Jméno ' a ' Příjmení “. Spusťte tento dotaz a vložte tyto hodnoty, pokud existují, pokud již neexistuje žádný řádek s těmito hodnotami:



VYBRAT * Z Zákazník;
VLOŽIT IGNOROVAT DO Zákazník ( Id , Jméno , Příjmení ) HODNOTY ( 1 , 'John' , 'Srna' ) ;

Výstup obsahuje dvě tabulky zobrazující data tabulky před a po provedení dotazu. Můžete si všimnout, že se v tabulce nic nemění, protože řádek již existoval, takže MySQL úspěšně ignorovalo proces vkládání bez zobrazení chyby:







Vložit nový řádek pouze v případě, že data neexistují Pomocí klauzule „WHERE NOT EXISTS“.

V MySQL je „ KDE NEEXISTUJE klauzule 'zabraňuje vkládání řádků, pokud již existují v tabulce, když je použita v ' VLOŽ DO ” s poddotazem k definování podmínky. Když je tato klauzule použita s poddotazem ' (SELECT * FROM [název-tabulky] [název-sloupce]=[výraz]); ” zkontroluje, zda v tabulce existuje řádek, který splňuje podmínku. Pokud existuje řádek, „ KDE NEEXISTUJE klauzule ” vrátí falešnou hodnotu a klauzule “ VYBRAT “ příkaz nevrátí žádné řádky. V důsledku toho nebude řádek vložen do tabulky. Syntaxe je uvedena níže:

VLOŽIT DO [ stůl - název ] ( [ sloupec1 - název ] , [ sloupec2 - název ] , [ sloupec3 - název ] )
VYBRAT [ hodnota1 ] , [ hodnota2 ] , [ hodnota3 ]
KDE NE EXISTUJE ( VYBRAT * Z [ stůl - název ] [ sloupec - název ] = [ výraz ] ) ;

Podívejme se na příklad, pokud chce uživatel vložit řádek do tabulky zaměstnanců obsahující hodnoty „ 1 “, “ americký ' a ' Henriot “ ve sloupcích “ id “, “ Jméno společnosti ' a ' Kontaktní jméno “. Ale pouze v případě, že řádek s ID „ 1 “ se v tabulce nenachází nebo neexistuje. V tomto konkrétním případě bude dotaz vypadat takto:



VYBRAT * Z zaměstnanec;

VLOŽIT DO zaměstnanec ( id , Jméno společnosti , Kontaktní jméno )
VYBRAT 1 , 'Americký' , 'Henriot'
KDE NE EXISTUJE ( VYBRAT * Z zaměstnanec KDE id = 1 ) ;

Výstup zobrazí nový řádek, který není vložen jako řádek s „ id ' rovná ' 1 “ již existoval.

Vložit nový řádek pouze v případě, že data neexistují pomocí klauzule „ON DUPLICATE KEY UPDATE“

Dalším způsobem je použití „ PŘI AKTUALIZACI DUPLIKÁTNÍHO KLÍČE ” v MySQL. Protože tato klauzule bude použita s dotazem „INSERT INTO“ tvořícím provedení „if-else“. To znamená, že data v tabulce budou aktualizována pouze v případě, že jsou jedinečná. Jinak by k žádné změně nedošlo. Obecná syntaxe pro toto je následující:

VLOŽIT DO [ stůl - název ] ( [ sloupec1 - název ] , [ sloupec2 - název ] , [ sloupec3 - název ] ) HODNOTY ( [ hodnota1 ] , [ hodnota2 ] , [ hodnota3 ] )
NA DUPLIKÁT KLÍČ AKTUALIZACE [ sloupec1 - název ] = [ sloupec1 - název ] ;

Podívejme se na příklad, jak vložit hodnoty do „ 2 “, “ Pascale “, “ Nixon “, “ Londýn “, “ Spojené království ' a “(171) 555-7788 ' ve stole ' Zákazník 'pro sloupce' Id “, “ Jméno “, “ Příjmení “, “ město “, “ země ' a ' telefon “. Pokud řádek ještě neexistuje, bude vložen. V opačném případě aktualizuje hodnoty, kde je „ Id=Id “ podmínka splňuje. Spusťte tento dotaz:

VYBRAT * Z Zákazník ;
VLOŽIT DO Zákazník ( Id , Jméno , Příjmení , město , země , telefon )
HODNOTY ( 2 , 'Pascale' , 'Nixon' , 'Londýn' , 'SPOJENÉ KRÁLOVSTVÍ' , '(171) 555-7788' )
NA DUPLIKÁT KLÍČ AKTUALIZACE Id = Id;

Toto je tabulka před spuštěním dotazu, můžete vidět „ Id ' rovná ' 2 ' neexistuje:

Po spuštění dotazu tento dotaz vloží do tabulky nové řádky:

Úspěšně jste vložili nový řádek, protože data před spuštěním dotazu neexistují.

Závěr

V MySQL vložte nový řádek pouze v případě, že data již neexistují pomocí „ INSERT IGNORE “ prohlášení nebo “ KDE NEEXISTUJE 'klauzule v ' VLOŽ DO ' prohlášení. Dalším způsobem, jak toho dosáhnout, je použití „ PŘI AKTUALIZACI DUPLIKÁTNÍHO KLÍČE 'klauzule v ' VLOŽ DO ” k aktualizaci, pokud řádek již existuje. V opačném případě přidejte nový řádek. Příspěvek pojednával o tom, jak vložit nový řádek, pouze pokud data neexistují.