MySQL Insert Ignoreeri duplikaatvõtit

Mysql Insert Ignore Duplicate Key



Tabelites või tulemite kogumites on sageli vastuolulisi andmeid. Samuti on aeganõudev parandamine ja sageli tuleb korduvaid kirjeid vältida. Dubleerivate kirjete tuvastamine ja nende kustutamine mõlemast tabelist on vajalik. Selles jaotises käsitletakse üksikasjalikult, kuidas vältida topeltandmete ilmumist tabelisse ja praeguste topeltkirjete kõrvaldamist. Selles juhendis saate teada, kuidas kasutada vea vältimiseks klauslit INSERT IGNORE.

Süntaks:

Siin on päringu INSERT IGNORE süntaks.







>>INSERT IGNORE INTO table_name(col1, col2, col3)VÄÄRTUSED(väärtusnimekiri),(väärtusnimekiri),(väärtusnimekiri);

INSERT IGNORE töölaua kaudu:

Avage oma süsteemist MySQL Workbench 8.0 ja ühendage see andmebaasi eksemplariga.





Käsualal peate looma nelja veeruga tabeli Töötaja, kus üks neist tuleb määrata UNIKAALSEKS. Selle tabeli loomiseks proovige allolevat päringut navigaatori päringualal. Valige kogu päring ja klõpsake selle täitmiseks välgumärki.





>>LOO TABEL Töötaja(ID int PRIMARY KEY NOT NULL, nimi varchar(viiskümmend)MITTE NULL, Age Varchar(viiskümmend), Palk varchar(viiskümmend), UNIKAALNE(ID));

Loomisel leiate tabeli töötaja loendist andmebaasi andmete all olevast tabelite valikust.



Ruudustikvaates saate kirjeid sisestada ilma ühtegi päringut tippimata. Niisiis, avage tabelitöötaja ruudustikvaade ja lisage sinna mõned kirjed, nagu allpool näidatud. Oleme sisestanud kõik unikaalsed kirjed ilma duplikaatideta. Muudatuste rakendamiseks klõpsake nuppu „Rakenda”.

Avaneb uus aken vastavate päringutega, mis on seotud ülalkirjeldatud kirjetega. Seda ekraani võib nimetada ülevaatekuvaks. Kui soovite midagi muuta, saate seda teha siin. Vastasel juhul klõpsake päringute tegemiseks nuppu Rakenda.

Nagu näete, on päring edukalt täidetud ja kirjed salvestatakse andmebaasi ja selle tabelisse Töötaja. See oleks tekitanud vea, kui oleksime lisanud veeru ID -sse duplikaatväärtuse. Puudutage nuppu Lõpeta.

See kõik puudutas võrgupilti. Nüüd sisestame kirjeid päringuala kaudu. Vahepeal oleme väljundi kontrollimiseks seekord sisestanud topeltkirjeid. Niisiis, oleme proovinud allolevat INSERT päringut, kus meil on kaks väärtuste loendit. Mõlemal väärtuste loendil on veerus „ID” sama väärtus. Valige päring ja vajutage päringu käivitamiseks välklampi.

Päring ei tööta õigesti ja see tekitab tõrke, mis tuleneb pildil kuvatud käsu INSERT dubleeritud väärtustest.

Nüüd proovige sama ülaltoodud päringut klausliga INSERT IGNORE ja käivitage see esitatud kujul.

Näete, et see ei tekita väljundpiirkonnas viga, kuid annab hoiatuse, et käsk sisaldab duplikaatväärtusi.

Värskendage tabeli Employee ruudustikvaadet. Päring INSERT IGNORE on töötanud poole võrra. See sisestas tabelisse esimese väärtuste loendi, kuid teist väärtuste loendit on korduva väärtuse tõttu 13 ignoreeritud.

INSERT IGNORE käsurea Shelli kaudu:

Selle kontseptsiooni mõistmiseks avame teie süsteemis MySQL käsurea kliendikesta. Küsimise peale tippige oma MySQL parool, et sellega alustada.

Nüüd on aeg luua tabel. Selleks proovige allolevat käsku. Oleme loonud tabeli nimega „minister”, samas kui selle veergudel on ainulaadne piirang. On selge, et veeru ID aktsepteerib ainult kordumatuid väärtusi, mitte korduvaid väärtusi.

>>LOO TABEL data.minister(Keskmine INT PRIMARY KEY UNIQUE NOT NULL, nimi VARCHAR(Neli, viis), Linn VARCHAR(Neli, viis));

Päring töötab nõuetekohaselt ja tabel on loodud. Klausli INSERT IGNORE mõistmiseks peate esmalt nägema lihtsa INSERT käsu tööd. Kui kasutate tabelisse mitme teabe sisestamiseks käsku INSERT, peatab MySQL tehingu ja loob erandi, kui töötlemise ajal ilmneb tõrge. Seetõttu ei ole tabelisse ühtegi rida lisatud. Sisestage tabelis minister esimene kirje, kasutades allpool näidatud päringut. Päring töötab edukalt, kuna tabel on praegu tühi ja pole ühtegi kirjet, millega võrrelda.

Kuna veeru ID on ainulaadne, tekitab see käsurea kestal allolevaid juhiseid proovides vea. Seda seetõttu, et oleme lisanud eelmise päringu väärtuse 11 ja UNIQUE võtme tõttu ei võimalda see meil korduvat väärtust uuesti lisada.

Seega näeme tabelit kontrollides, et tabelisse on lisatud ainult 1 kirje, mille on lisanud esimene INSERT -päring.

>>VALI*FROM data.minister;

Seevastu kui kasutate klauslit INSERT IGNORE, jäetakse vea käivitavad valed andmeridad tähelepanuta ja sisestatakse ainult täpsed. Allolevas käsus oleme kasutanud käsku INSERT IGNORE, et vältida korduvate väärtuste lisamist tabelisse ja jätta viga tähelepanuta. Nagu näete, on esimese väärtuste loendi duplikaatväärtus 11 sama, mis eelmisel päringul. Kuigi teine ​​väärtuste loend on ainulaadne, kuvatakse tabelisse 1 kirje, mis on teine ​​väärtuste loend. MySQL näitab ka seda, et sisestatud on ainult 1 kirje ja sõnumisse genereeritakse 1 hoiatus. Seejärel võite eeldada, et kui kasutame klauslit INSERT IGNORE, annab MySQL hoiatuse.

Nagu allolevast väljundist näete, on meil selles tabelis ainult kaks kirjet - ülaltoodud päringus esitatud väärtuste esimene loend, mis jäetakse tähelepanuta.

>>VALI*FROM data.minister;

Järeldus:

Oleme teinud kõik vajalikud INSERT IGNORE näited duplikaatväärtuste kohta MySQL Workbenchi ja MySQL käsurea kliendi kesta kaudu.