MySQL – Ako vložiť nový riadok, iba ak údaje neexistujú

Mysql Ako Vlozit Novy Riadok Iba Ak Udaje Neexistuju



MySQL je slávny open-source RDBMS na ukladanie údajov do databáz. Vkladanie údajov do tabuliek vašej databázy je bežnou úlohou. Používatelia niekedy nechcú vkladať duplicitné údaje, aby sa eliminovala nadbytočnosť. MySQL umožňuje používateľom vkladať údaje iba vtedy, ak podobné údaje ešte neexistujú.

Tento príspevok bude diskutovať o vložení nového riadku iba v prípade, že v tabuľke MySQL ešte neexistujú údaje. Pred začatím tohto príspevku sa uistite, že ste prihlásení na lokálny server MySQL a vybrali ste si databázu, v ktorej chcete pracovať.

Vložiť nový riadok, len ak údaje neexistujú, pomocou príkazu „INSERT IGNORE“.

Nuž, odpoveď na otázku v nadpise je celkom jednoduchá a priamočiara. Stačí použiť „ VLOŽIŤ ” kľúčové slovo spolu s “ IGNOROVAŤ Kľúčové slovo. Tým sa zabezpečí, že nové údaje alebo dotaz na vloženie sa vykonajú iba vtedy, keď sa v MySQL nenájde žiadny predchádzajúci záznam údajov. Ak chcete získať krátky prehľad o tom, pozrite sa na nasledujúcu syntax:







VLOŽIŤ IGNOROVAŤ DO [ tabuľky - názov ] ( [ stĺpec1 - názov ] , [ stĺpec2 - názov ] , [ stĺpec 3 - názov ] ) HODNOTY ( [ hodnota1 ] , [ hodnota2 ] , [ hodnota3 ] ) ;

Pozrime sa na príklad, ak chce používateľ zadať hodnotu riadka „ 1 “, “ John “ a „ Laň “ v „ Zákazník 'tabuľka pre stĺpce' Id “, “ Krstné meno “ a „ Priezvisko “. Spustite tento dotaz, ak chcete vložiť tieto hodnoty, ak už neexistuje riadok s týmito hodnotami:



VYBRAŤ * OD Zákazník;
VLOŽIŤ IGNOROVAŤ DO Zákazník ( Id , Krstné meno , Priezvisko ) HODNOTY ( 1 , 'John' , 'Laň' ) ;

Výstup obsahuje dve tabuľky zobrazujúce údaje tabuľky pred a po vykonaní dotazu. Môžete si všimnúť, že sa v tabuľke nič nemení, pretože riadok už existoval, takže MySQL úspešne ignorovalo proces vkladania bez zobrazenia chyby:







Vložte nový riadok, len ak údaje neexistujú. Použite klauzulu „WHERE NOT EXISTS“.

V MySQL je „ KDE NEEXISTUJE klauzula ” bráni vloženiu riadkov, ak už existujú v tabuľke, keď sa používa v “ VLOŽIŤ DO ” s poddotazom na definovanie podmienky. Keď sa táto klauzula použije s poddotazom „ (SELECT * FROM [názov-tabuľky] [názov-stĺpca]=[výraz]); ” skontroluje, či v tabuľke existuje riadok, ktorý spĺňa podmienku. Ak existuje riadok, „ KDE NEEXISTUJE klauzula ” vráti falošnú hodnotu a klauzula “ VYBRAŤ ” nevráti žiadne riadky. V dôsledku toho sa riadok nevloží do tabuľky. Syntax je uvedená nižšie:

VLOŽIŤ DO [ tabuľky - názov ] ( [ stĺpec1 - názov ] , [ stĺpec2 - názov ] , [ stĺpec 3 - názov ] )
VYBRAŤ [ hodnota1 ] , [ hodnota2 ] , [ hodnota3 ]
KDE NIE EXISTUJE ( VYBRAŤ * OD [ tabuľky - názov ] [ stĺpec - názov ] = [ výraz ] ) ;

Pozrime sa na príklad, ak chce používateľ vložiť riadok do tabuľky zamestnancov obsahujúci hodnoty „ 1 “, “ americký “ a „ Henriot “ v stĺpcoch “ id “, “ Meno spoločnosti “ a „ Kontaktné meno “. Ale iba ak riadok s ID „ 1 “ sa v tabuľke nenachádza alebo neexistuje. V tomto konkrétnom prípade bude dotaz vyzerať takto:



VYBRAŤ * OD zamestnanec;

VLOŽIŤ DO zamestnanca ( id , Meno spoločnosti , Kontaktné meno )
VYBRAŤ 1 , 'americký' , 'Henriot'
KDE NIE EXISTUJE ( VYBRAŤ * OD zamestnanca KDE id = 1 ) ;

Výstup zobrazí nový riadok, ktorý nie je vložený ako riadok s „ id ' rovná ' 1 “ už existoval.

Vložte nový riadok, len ak údaje neexistujú, pomocou klauzuly „ON DUPLICATE KEY UPDATE“

Ďalším spôsobom je použiť „ PRI AKTUALIZÁCII DUPLIKÁTU KĽÚČA klauzula v MySQL. Keďže táto klauzula sa použije s dotazom „INSERT INTO“ tvoriacim vykonanie „if-else“. To znamená, že údaje v tabuľke sa aktualizujú iba vtedy, ak sú jedinečné. Inak by nenastala žiadna zmena. Všeobecná syntax pre toto je nasledovná:

VLOŽIŤ DO [ tabuľky - názov ] ( [ stĺpec1 - názov ] , [ stĺpec2 - názov ] , [ stĺpec 3 - názov ] ) HODNOTY ( [ hodnota1 ] , [ hodnota2 ] , [ hodnota3 ] )
ON DUPLIKÁT KEY AKTUALIZOVAŤ [ stĺpec1 - názov ] = [ stĺpec1 - názov ] ;

Pozrime sa na príklad na vloženie hodnôt do „ 2 “, “ Pascale “, “ Nixon “, “ Londýn “, “ UK “a “(171) 555-7788 ' v tabulke ' Zákazník “ pre stĺpce “ Id “, “ Krstné meno “, “ Priezvisko “, “ mesto “, “ krajina “ a „ telefón “. Ak riadok ešte neexistuje, vloží sa. V opačnom prípade aktualizuje hodnoty, v ktorých je „ Id=Id “podmienka spĺňa. Spustite tento dotaz:

VYBRAŤ * OD Zákazník ;
VLOŽIŤ DO Zákazník ( Id , Krstné meno , Priezvisko , mesto , krajina , telefón )
HODNOTY ( 2 , 'Pascale' , 'Nixon' , 'Londýn' , 'UK' , '(171) 555-7788' )
ON DUPLIKÁT KEY AKTUALIZOVAŤ Id = Id;

Toto je tabuľka pred spustením dotazu, môžete vidieť „ Id ' rovná ' 2 ' neexistuje:

Po spustení dotazu tento dotaz vloží do tabuľky nové riadky:

Úspešne ste vložili nový riadok, pretože údaje pred spustením dotazu neexistujú.

Záver

V MySQL vložte nový riadok iba v prípade, že údaje ešte neexistujú, pomocou „ INSERT IGNORE “výpis alebo “ KDE NEEXISTUJE „klauzula v „ VLOŽIŤ DO “vyhlásenie. Ďalším spôsobom, ako to dosiahnuť, je použitie „ PRI AKTUALIZÁCII DUPLIKÁTU KĽÚČA „klauzula v „ VLOŽIŤ DO ” na aktualizáciu, ak riadok už existuje. V opačnom prípade pridajte nový riadok. Príspevok diskutoval o tom, ako vložiť nový riadok, iba ak údaje neexistujú.