MySQL Insert Zanemari duplirani ključ

Mysql Insert Ignore Duplicate Key



U tablicama ili skupovima ishoda često postoje oprečni podaci. Također je potrebno mnogo vremena za ispravljanje, a često se moraju izbjegavati ponovljeni zapisi. Potrebno je identificirati dvostruke zapise i izbrisati ih iz bilo koje tablice. U ovom će odjeljku biti objašnjeno kako izbjeći pojavljivanje dupliciranih podataka unutar tablice i kako ukloniti trenutne dvostruke zapise. U ovom ćete vodiču naučiti kako koristiti klauzulu INSERT IGNORE kako biste izbjegli pogrešku.

Sintaksa:

Ovdje je sintaksa za upit INSERT IGNORE.







>>INSERT IGNORE INTO_name_tabele(col1, col2, col3)VRIJEDNOSTI(popis_vrijednosti),(popis_vrijednosti),(popis_vrijednosti);

UMETNITE IGNORE putem Workbencha:

Otvorite MySQL Workbench 8.0 sa svog sustava i povežite ga s instancom baze podataka.





U području naredbi morate stvoriti tablicu Employee s četiri stupca u kojima jedan od njih mora biti naveden kao UNIQUE. Isprobajte donji upit u području upita navigatora da biste stvorili ovu tablicu. Odaberite cijeli upit i kliknite znak flash da biste ga izvršili.





>>CREATE TABLE Zaposlenik(ID int PRIMARNI KLJUČ NIJE NULL, Naziv varchar(pedeset)NIJE NULA, dob Varchar(pedeset), Plaća varchar(pedeset), JEDINSTVENO(iskaznica));

Nakon izrade, zaposlenika tablice možete pronaći na popisu pod opcijom Tablice ispod podataka baze podataka.



U mrežnom prikazu možete unijeti zapise bez upisivanja upita. Dakle, otvorite mrežni prikaz zaposlenika tablice i dodajte mu neke zapise kao što je prikazano u nastavku. Unijeli smo sve jedinstvene zapise bez duplikata. Pritisnite gumb ‘Primijeni’ da biste primijenili promjene.

Otvorit će se novi prozor s relevantnim upitima vezanim uz gore navedene zapise. Ovaj se zaslon može nazvati zaslonom za pregled. Ako želite nešto promijeniti, to možete učiniti ovdje. U protivnom, pritisnite gumb Primijeni da biste izvršili upite.

Kao što vidite, upit je uspješno izveden i zapisi su spremljeni u bazu podataka i njezinu tablicu Employee. To bi generiralo pogrešku da smo dodali bilo koju dupliciranu vrijednost u ID stupca. Dodirnite gumb Završi.

Ovdje se radi samo o prikazu mreže. Sada ćemo umetati zapise putem područja upita. U međuvremenu smo ovaj put umetnuli dvostruke zapise kako bismo provjerili izlaz. Dakle, isprobali smo dolje navedeni INSERT upit, gdje imamo dva popisa vrijednosti. Oba popisa vrijednosti imaju istu vrijednost u stupcu 'ID'. Odaberite upit i pritisnite znak flash da biste izvršili upit.

Upit neće raditi ispravno i generirat će pogrešku zbog dupliciranih vrijednosti u naredbi INSERT kako je prikazano na slici.

Sada isprobajte isti gornji upit s INSERT IGNORE klauzulom i izvedite ga kako je prikazano.

Možete vidjeti da ne generira pogrešku u izlaznom području, ali daje upozorenje da naredba sadrži dvostruke vrijednosti.

Osvježite prikaz mreže zaposlenika tablice. Upit INSERT IGNORE radio je pola. U tablicu je umetnut prvi popis vrijednosti, ali je drugi popis vrijednosti zanemaren zbog ponovljene vrijednosti 13.

UMETNITE IGNORE putem ljuske naredbenog retka:

Da bismo razumjeli ovaj koncept, otvorimo okno klijentske ljuske naredbenog retka MySQL u vašem sustavu. Na upit upišite svoju lozinku za MySQL da biste počeli raditi na njoj.

Sada je vrijeme za izradu tablice. Pokušajte to učiniti s naredbom ispod. Napravili smo tablicu pod nazivom 'ministar', dok jedan od stupaca ima UNIQUE ograničenje. Jasno je da će ID stupca prihvatiti samo jedinstvene vrijednosti, a ne i duplicirane vrijednosti.

>>CREATE TABLE data.minister(Sredina INT PRIMARNI KLJUČ JEDINSTVEN NI NULA, Ime VARCHAR(Četiri pet), Grad VARCHAR(Četiri pet));

Upit radi na odgovarajući način, a tablica je stvorena. Da biste razumjeli klauzulu INSERT IGNORE, najprije morate vidjeti kako funkcionira jednostavna naredba INSERT. Ako koristite naredbu INSERT za umetanje nekoliko podataka u tablicu, MySQL obustavlja transakciju i generira iznimku ako se tijekom obrade dogodi pogreška. Posljedično, tablica nema dodanih redaka. Umetnimo prvi zapis u tablicu ministra pomoću dolje prikazanog upita. Upit će uspješno funkcionirati jer je tablica trenutno prazna i nema zapisa za usporedbu.

Budući da je ID stupca JEDINSTVEN, kada isprobamo donje upute na ljusci naredbenog retka, generirat će se pogreška. To je zato što smo dodali vrijednost 11 u prethodnom upitu, a zbog UNIQUE ključa ne dopušta nam ponovno dodavanje ponovljene vrijednosti.

Stoga, provjerom tablice možemo vidjeti da tablica ima samo 1 zapis dodan prvim upitom INSERT.

>>ODABERI*IZ data.minister;

Nasuprot tome, ako koristite klauzulu INSERT IGNORE, pogrešni retci podataka koji pokreću pogrešku bit će zanemareni i unijet će samo one točne. U naredbi ispod koristili smo naredbu INSERT IGNORE kako bismo izbjegli dodavanje ponovljenih vrijednosti u tablicu i previdjeli pogrešku. Kao što vidite, prvi popis vrijednosti ima dupliciranu vrijednost 11 isto kao u prethodnom upitu. Dok je drugi popis vrijednosti jedinstven, prikazat će 1 zapis umetnut u tablicu, što je drugi popis vrijednosti. MySQL također označava da je umetnut samo 1 zapis, a u poruci je generirano 1 upozorenje. Tada možete pretpostaviti da ako koristimo klauzulu INSERT IGNORE, MySQL daje upozorenje.

Kao što možete vidjeti iz donjeg prikaza, u ovoj tablici imamo samo dva zapisa - prvi popis vrijednosti navedenih u gornjem upitu, koji se zanemaruje.

>>ODABERI*IZ data.minister;

Zaključak:

Napravili smo sve potrebne primjere INSERT IGNORE na dupliciranim vrijednostima putem MySQL Workbencha i MySQL klijentske ljuske naredbenog retka.