MySQL - Cum să inserați un rând nou numai dacă datele nu există

Mysql Cum Sa Inserati Un Rand Nou Numai Daca Datele Nu Exista



MySQL este un renumit RDBMS open-source pentru stocarea datelor în baze de date. Inserarea datelor în tabelele bazei de date este o sarcină comună. Uneori, utilizatorii nu doresc să insereze date duplicate pentru a elimina redundanța. MySQL permite utilizatorilor să introducă date numai dacă date similare nu există deja.

Această postare va discuta despre inserarea unui rând nou numai dacă datele nu există deja în tabelul MySQL. Înainte de a începe cu această postare, asigurați-vă că sunteți conectat la serverul local MySQL și că ați ales o bază de date în care doriți să lucrați.

Introduceți un rând nou numai dacă nu există date utilizând instrucțiunea „INSERT IGNORE”.

Ei bine, răspunsul la întrebarea din titlu este destul de simplu și direct. Pur și simplu utilizați „ INTRODUCE „, împreună cu „ IGNORA ” Cuvânt cheie. Acest lucru se va asigura că noile date sau interogarea de inserare sunt executate numai atunci când nu se găsește nicio intrare anterioară a datelor în MySQL. Pentru a obține o scurtă prezentare generală a acestui lucru, aruncați o privire la următoarea sintaxă:







INTRODUCE IGNORA ÎN [ masa - Nume ] ( [ coloana 1 - Nume ] , [ coloana2 - Nume ] , [ coloana3 - Nume ] ) VALORI ( [ valoare1 ] , [ valoarea2 ] , [ valoarea 3 ] ) ;

Să vedem un exemplu dacă utilizatorul dorește să introducă o valoare de rând „ 1 ”, “ Ioan ' și ' Căprioară ' în ' Client „tabel pentru coloane” Id ,” “ Nume ' și ' Nume ” respectiv. Rulați această interogare pentru a insera aceste valori dacă există, dacă nu există deja niciun rând care să aibă aceste valori:



SELECTAȚI * DIN Client;
INTRODUCE IGNORA ÎN Client ( Id , Nume , Nume ) VALORI ( 1 , 'Ioan' , 'Căprioară' ) ;

Ieșirea conține două tabele care afișează datele tabelului înainte și după executarea interogării. Puteți observa că nimic nu se schimbă în tabel, deoarece rândul exista deja, așa că MySQL a ignorat cu succes procesul de inserare fără a afișa eroarea:







Introduceți un nou rând numai dacă datele nu există, folosind clauza „UNDE NU EXISTĂ”.

În MySQL, „ UNDE NU EXISTA ” clauza împiedică inserarea de rânduri dacă acestea există deja în tabel atunci când este folosită în “ INTRODU IN ” instrucțiune cu o subinterogare pentru a defini o condiție. Când această clauză este folosită cu subinterogarea „ (SELECT * FROM [nume-tabel] [nume-coloană]=[expresie]); ” verifică dacă există un rând în tabel care îndeplinește condiția. Dacă există un rând, „ UNDE NU EXISTA ' clauza va returna o valoare falsă, iar ' SELECTAȚI ” instrucțiunea nu va returna niciun rând. Ca urmare, rândul nu va fi inserat în tabel. Sintaxa este prezentată mai jos:

INTRODUCE ÎN [ masa - Nume ] ( [ coloana 1 - Nume ] , [ coloana2 - Nume ] , [ coloana3 - Nume ] )
SELECTAȚI [ valoare1 ] , [ valoarea2 ] , [ valoarea 3 ]
UNDE NU EXISTĂ ( SELECTAȚI * DIN [ masa - Nume ] [ coloană - Nume ] = [ expresie ] ) ;

Să vedem un exemplu dacă utilizatorul dorește să insereze un rând în tabelul angajaților care conține valori „ 1 ”, “ american ' și ' Henriot ” în coloanele ” id ”, “ Numele companiei ' și ' Nume de contact ” respectiv. Dar numai dacă un rând cu id-ul „ 1 ” nu se găsește în tabel sau nu există. În acest caz particular, interogarea va deveni:



SELECTAȚI * DIN angajat;

INTRODUCE ÎN angajat ( id , Numele companiei , Nume de contact )
SELECTAȚI 1 , 'American' , „Henriot”
UNDE NU EXISTĂ ( SELECTAȚI * DIN angajat UNDE id = 1 ) ;

Ieșirea afișează un rând nou care nu este inserat ca rând cu „ id ' egal cu ' 1 ” exista deja.

Introduceți un rând nou numai dacă datele nu există, folosind clauza „ON DUPLICATE KEY UPDATE”

Ei bine, o altă modalitate este să folosiți „ LA ACTUALIZAREA CHEIEI DUPLICATE ” clauză în MySQL. Deoarece această clauză va fi folosită cu interogarea „INSERT INTO” formând o execuție „if-else”. Deci, aceasta înseamnă că datele din tabel vor fi actualizate numai dacă sunt unice. În caz contrar, nu ar avea loc nicio schimbare. Sintaxa generală pentru aceasta este următoarea:

INTRODUCE ÎN [ masa - Nume ] ( [ coloana 1 - Nume ] , [ coloana2 - Nume ] , [ coloana3 - Nume ] ) VALORI ( [ valoare1 ] , [ valoarea2 ] , [ valoarea 3 ] )
PE DUPLICAT CHEIE ACTUALIZAȚI [ coloana 1 - Nume ] = [ coloana 1 - Nume ] ;

Să vedem un exemplu, pentru a introduce valori în „ 2 ”, “ Pascale ”, “ Nixon ”, “ Londra ”, “ Regatul Unit ' și „(171) 555-7788 ' in masa ' Client ” pentru coloane ” Id ”, “ Nume ”, “ Nume ”, “ oraș ”, “ țară ' și ' telefon ” respectiv. Dacă rândul nu există deja, acesta va fi inserat. În caz contrar, va actualiza valorile în care „ Id=Id ” condiția întrunește. Rulați această interogare:

SELECTAȚI * DIN client ;
INTRODUCE ÎN Client ( Id , Nume , Nume , oraș , țară , telefon )
VALORI ( 2 , 'Pascale' , „Nixon” , 'Londra' , 'REGATUL UNIT' , „(171) 555-7788” )
PE DUPLICAT CHEIE ACTUALIZAȚI Id = Id;

Acesta este tabelul înainte de a rula interogarea, puteți vedea „ Id ' egal cu ' 2 ' nu exista:

După rularea interogării, această interogare va insera noi rânduri în tabel:

Ați inserat cu succes un rând nou, deoarece datele nu există înainte de a rula interogarea.

Concluzie

În MySQL, introduceți un rând nou numai dacă datele nu există deja utilizând „ INSERT IGNORE ” declarație sau ” UNDE NU EXISTA ' clauza din ' INTRODU IN ' afirmație. Un alt mod de a face acest lucru este folosirea „ LA ACTUALIZAREA CHEIEI DUPLICATE ' clauza din ' INTRODU IN ” declarație de actualizat dacă rândul există deja. În caz contrar, adăugați un rând nou. Postarea a discutat despre cum să inserați un rând nou numai dacă datele nu există.