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