MySQL – Kako umetnuti novi red samo ako podaci ne postoje

Mysql Kako Umetnuti Novi Red Samo Ako Podaci Ne Postoje



MySQL je poznata RDBMS otvorenog koda za pohranu podataka u baze podataka. Umetanje podataka u tablice vaše baze podataka uobičajen je zadatak. Ponekad korisnici ne žele umetnuti duplicirane podatke kako bi uklonili redundanciju. MySQL dopušta korisnicima umetanje podataka samo ako slični podaci već ne postoje.

Ovaj će post raspravljati o umetanju novog retka samo ako podaci već ne postoje u MySQL tablici. Prije nego počnete s ovim postom, provjerite jeste li prijavljeni na svoj MySQL lokalni poslužitelj i jeste li odabrali bazu podataka u kojoj želite raditi.

Umetnite novi redak samo ako podaci ne postoje koristeći naredbu 'INSERT IGNORE'.

Pa, odgovor na pitanje iz naslova je prilično jednostavan i jasan. Jednostavno koristite ' UMETNUTI ' ključna riječ zajedno s ' ZANEMARITI ” Ključna riječ. Ovo će osigurati da se novi podaci ili upit za umetanje izvršavaju samo ako u MySQL-u nije pronađen prethodni unos podataka. Da biste dobili kratak pregled ovoga, pogledajte sljedeću sintaksu:







UMETNUTI ZANEMARITI U [ stol - Ime ] ( [ stupac1 - Ime ] , [ stupac2 - Ime ] , [ stupac3 - Ime ] ) VRIJEDNOSTI ( [ vrijednost1 ] , [ vrijednost2 ] , [ vrijednost3 ] ) ;

Pogledajmo primjer ako korisnik želi unijeti vrijednost retka ' 1 ”, “ Ivan ' i ' Srna ' u ' Kupac ” tablica za stupce ” Iskaznica ,” “ Ime ' i ' Prezime ” odnosno. Pokrenite ovaj upit za umetanje ovih vrijednosti ako ih ima ako već ne postoji red s ovim vrijednostima:



IZABERI * IZ Kupac;
UMETNUTI ZANEMARITI U Kupac ( Iskaznica , Ime , Prezime ) VRIJEDNOSTI ( 1 , 'Ivan' , 'srna' ) ;

Izlaz sadrži dvije tablice koje prikazuju podatke tablice prije i nakon izvršenja upita. Možete primijetiti da se ništa ne mijenja u tablici jer je red već postojao pa je MySQL uspješno zanemario proces umetanja bez prikaza pogreške:







Umetnite novi red samo ako podaci ne postoje koristeći klauzulu 'WHERE NOT EXISTS'

U MySQL, ' GDJE NE POSTOJI ' klauzula sprječava umetanje redaka ako već postoje u tablici kada se koristi u ' UMETNUTI U ” izjava s podupitom za definiranje uvjeta. Kada se ova klauzula koristi s podupitom ' (SELECT * FROM [naziv-tablice] [naziv-stupca]=[izraz]); ” provjerava da li u tablici postoji red koji ispunjava uvjet. Ako red postoji, ' GDJE NE POSTOJI ' klauzula će vratiti lažnu vrijednost, a ' IZABERI ” naredba neće vratiti nijedan redak. Kao rezultat toga, red neće biti umetnut u tablicu. Sintaksa je navedena u nastavku:

UMETNUTI U [ stol - Ime ] ( [ stupac1 - Ime ] , [ stupac2 - Ime ] , [ stupac3 - Ime ] )
IZABERI [ vrijednost1 ] , [ vrijednost2 ] , [ vrijednost3 ]
GDJE NE POSTOJI ( IZABERI * IZ [ stol - Ime ] [ stupac - Ime ] = [ izraz ] ) ;

Pogledajmo primjer ako korisnik želi umetnuti redak u tablici zaposlenika koji sadrži vrijednosti ' 1 ”, “ američki ' i ' Henriot ” u stupcima “ iskaznica ”, “ Naziv tvrtke ' i ' Ime kontakta ” odnosno. Ali samo ako je redak s ID-om ' 1 ” nije pronađen u tablici ili ne postoji. U tom konkretnom slučaju, upit će biti:



IZABERI * IZ zaposlenik;

UMETNUTI U zaposlenik ( iskaznica , Naziv tvrtke , Ime kontakta )
IZABERI 1 , 'Američki' , 'Henriot'
GDJE NE POSTOJI ( IZABERI * IZ zaposlenik GDJE iskaznica = 1 ) ;

Izlaz prikazuje novi redak koji nije umetnut kao redak s ' iskaznica ' jednak ' 1 ” već postojao.

Umetnite novi redak samo ako podaci ne postoje koristeći klauzulu 'ON DUPLICATE KEY UPDATE'

Pa, drugi način je korištenje ' PRI AŽURIRANJU DUPLIKATA KLJUČA ” u MySQL. Budući da će se ova klauzula koristiti s upitom 'INSERT INTO' formirajući 'if-else' izvršenje. To znači da će se podaci unutar tablice ažurirati samo ako su jedinstveni. U protivnom ne bi došlo do promjene. Opća sintaksa za ovo je sljedeća:

UMETNUTI U [ stol - Ime ] ( [ stupac1 - Ime ] , [ stupac2 - Ime ] , [ stupac3 - Ime ] ) VRIJEDNOSTI ( [ vrijednost1 ] , [ vrijednost2 ] , [ vrijednost3 ] )
NA DUPLIKAT KLJUČ AŽURIRAJ [ stupac1 - Ime ] = [ stupac1 - Ime ] ;

Pogledajmo primjer za umetanje vrijednosti u ' 2 ”, “ Pascale ”, “ Nixon ”, “ London ”, “ UK ” i “(171) 555-7788 ' u stolu ' Kupac ” za stupce “ Iskaznica ”, “ Ime ”, “ Prezime ”, “ Grad ”, “ zemlja ' i ' telefon ” odnosno. Ako red već ne postoji, bit će umetnut. U suprotnom, ažurirat će vrijednosti gdje je ' Id=Id ” uvjet ispunjava. Pokrenite ovaj upit:

IZABERI * IZ Kupac ;
UMETNUTI U Kupac ( Iskaznica , Ime , Prezime , Grad , zemlja , telefon )
VRIJEDNOSTI ( 2 , 'Pascale' , 'Nixon' , 'London' , 'UK' , '(171) 555-7788' )
NA DUPLIKAT KLJUČ AŽURIRAJ Iskaznica = Iskaznica;

Ovo je tablica prije pokretanja upita, možete vidjeti ' Iskaznica ' jednak ' 2 ' ne postoji:

Nakon pokretanja upita, ovaj će upit umetnuti nove retke u tablicu:

Uspješno ste umetnuli novi redak jer podaci ne postoje prije pokretanja upita.

Zaključak

U MySQL umetnite novi redak samo ako podaci već ne postoje pomoću ' INSERT ZANEMIRI ” izjava ili “ GDJE NE POSTOJI ' klauzula u ' UMETNUTI U ” izjava. Drugi način da to učinite je korištenje ' PRI AŽURIRANJU DUPLIKATA KLJUČA ' klauzula u ' UMETNUTI U ” za ažuriranje ako redak već postoji. U suprotnom, dodajte novi red. Post je raspravljao o tome kako umetnuti novi red samo ako podaci ne postoje.