MySQL Insert Ignore Duplicate Key

Mysql Insert Ignore Duplicate Key



Există adesea date contradictorii în tabele sau seturi de rezultate. De asemenea, consumă mult timp pentru a corecta și trebuie evitate înregistrările repetate. Este necesară identificarea înregistrărilor duplicate și ștergerea acestora din oricare dintre tabele. Această secțiune va detalia despre cum să evitați apariția datelor duplicate în interiorul unui tabel și despre cum să eliminați înregistrările duplicate actuale. În acest ghid, veți învăța cum să utilizați clauza INSERT IGNORE pentru a evita eroarea.

Sintaxă:

Iată sintaxa pentru interogarea INSERT IGNORE.







>>INSERAȚI IGNORE INTO table_name(col1, col2, col3)VALORI(valoare_listă),(valoare_listă),(valoare_listă);

INSERAȚI IGNORE prin Workbench:

Deschideți MySQL Workbench 8.0 din sistemul dvs. și conectați-l la instanța bazei de date.





În zona de comandă, trebuie să creați un tabel Angajat cu patru coloane în care una dintre ele trebuie să fie specificată ca UNICĂ. Încercați interogarea de mai jos în zona de interogare a navigatorului pentru a crea acest tabel. Selectați întreaga interogare și faceți clic pe semnul flash pentru a o executa.





>>CREATE TABLE Angajat(ID int CHEIE PRIMARĂ NU NULĂ, Nume varchar(cincizeci)NU NUL, Age Varchar(cincizeci), Salariu varchar(cincizeci), UNIC(ID));

La creare, puteți găsi angajatul tabelului în listă sub opțiunea Tabelele de sub datele bazei de date.



În vizualizarea grilă, puteți introduce înregistrările fără să introduceți nicio interogare. Deci, deschideți vizualizarea grilă a angajaților din tabelă și adăugați câteva înregistrări în ea așa cum se arată mai jos. Am introdus toate înregistrările unice fără duplicate. Apăsați butonul „Aplicați” pentru a aplica modificările.

Se va deschide o nouă fereastră cu interogările relevante legate de înregistrările pe care le-am introdus mai sus. Acest ecran poate fi numit ecran de examinare. Dacă doriți să schimbați ceva, o puteți face aici. În caz contrar, apăsați butonul Aplicare pentru a executa interogările.

După cum puteți vedea, interogarea a fost executată cu succes, iar înregistrările sunt salvate în baza de date și în tabelul său Angajat. Ar fi generat o eroare dacă am fi adăugat o valoare duplicat în ID-ul coloanei. Atingeți butonul Finalizare.

A fost vorba despre vizualizarea grilă. Acum, vom introduce înregistrări prin zona de interogare. Între timp, am inserat înregistrări duplicate de această dată pentru a verifica rezultatul. Deci, am încercat interogarea INSERT de mai jos, unde avem două liste de valori. Ambele liste de valori au aceeași valoare la coloana „ID”. Selectați interogarea și apăsați semnul flash pentru a executa interogarea.

Interogarea nu va funcționa corect și va genera o eroare din cauza valorilor duplicate din comanda INSERT așa cum este afișată în imagine.

Acum încercați aceeași interogare de mai sus cu clauza INSERT IGNORE și executați-o așa cum a fost prezentată.

Puteți vedea că nu generează o eroare în zona de ieșire, dar oferă un avertisment că comanda conține valori duplicat.

Reîmprospătați vizualizarea în grilă a tabelului Angajat. Interogarea INSERT IGNORE a funcționat la jumătate. A inserat prima listă de valori în tabel, dar a doua listă de valori a fost ignorată din cauza valorii repetate 13.

INSERAȚI IGNORE prin linia de comandă Shell:

Pentru a înțelege acest concept, să deschidem shell-ul clientului din linia de comandă MySQL din sistemul dvs. La întrebare, introduceți parola MySQL pentru a începe să lucrați la ea.

Acum este timpul să creați o masă. Încercați comanda de mai jos pentru a face acest lucru. Am creat un tabel numit „ministru”, în timp ce una dintre coloanele sale are o constrângere UNICĂ. Este clar că ID-ul coloanei va accepta doar valorile unice și nu valorile duplicate.

>>CREARE TABEL date.minister(Mid INT PRIMARY KEY UNIQUE NOT NULL, Nume VARCHAR(Patru cinci), Oraș VARCHAR(Patru cinci));

Interogarea funcționează corespunzător și tabelul a fost creat. Pentru a înțelege clauza INSERT IGNORE, trebuie să vedeți mai întâi funcționarea comenzii simple INSERT. Dacă utilizați comanda INSERT pentru a insera mai multe date de informații într-un tabel, MySQL suspendă tranzacția și generează o excepție dacă apare o eroare pe parcursul procesării. În consecință, tabelul nu are niciun rând adăugat. Să introducem prima înregistrare în tabelul ministru folosind interogarea de mai jos. Interogarea va funcționa cu succes deoarece tabelul este în prezent gol și nu există nicio înregistrare cu care să se asorteze.

Deoarece ID-ul coloanei este UNIC, atunci când încercăm instrucțiunea de mai jos pe shell-ul liniei de comandă, va genera o eroare. Acest lucru se datorează faptului că am adăugat valoarea 11 în interogarea anterioară și, datorită cheii UNIQUE, nu ne permite să adăugăm din nou valoarea repetată.

Prin urmare, la verificarea tabelului, putem vedea că tabelul are doar 1 înregistrare adăugată de prima interogare INSERT.

>>SELECTAȚI*FROM data.minister;

În schimb, dacă utilizați clauza INSERT IGNORE, rândurile de date incorecte care declanșează eroarea vor fi trecute cu vederea și vor fi introduse doar pe cele corecte. În comanda de mai jos, am folosit comanda INSERT IGNORE pentru a evita adăugarea de valori repetate în tabel și pentru a trece cu vederea eroarea. După cum puteți vedea, prima listă de valori are o valoare duplicat 11 la fel ca în interogarea anterioară. În timp ce a doua listă de valori este unică, va afișa 1 înregistrare inserată în tabel, care este a doua listă de valori. MySQL indică, de asemenea, că a fost introdusă doar o înregistrare și că este generat 1 avertisment în mesaj. Apoi, puteți presupune că, dacă folosim clauza INSERT IGNORE, MySQL oferă un avertisment.

După cum puteți vedea din rezultatul de mai jos, avem doar două înregistrări în acest tabel - prima listă de valori furnizate în interogarea de mai sus, care este ignorată.

>>SELECTAȚI*FROM data.minister;

Concluzie:

Am făcut toate exemplele necesare de INSERT IGNORE pe valori duplicate prin MySQL Workbench și MySQL din linia de comandă client shell.