MySQL MariaDB

MySQL Insert Ignore Duplicate Key

MySQL Insert Ignore Duplicate Key
Taulukoissa tai tulosjoukoissa on usein ristiriitaisia ​​tietoja. Korjaaminen on myös aikaa vievää, ja usein toistuvia tietueita on vältettävä. Tunnistaa päällekkäiset tietueet ja poistaa ne kummastakin taulukosta. Tässä osassa kerrotaan, kuinka vältetään päällekkäisten tietojen näkyminen taulukon sisällä ja kuinka poistaa nykyiset päällekkäiset tietueet. Tässä oppaassa opit käyttämään INSERT IGNORE -lauseketta virheen välttämiseksi.

Syntaksi:

Tässä on INSERT IGNORE -kyselyn syntaksi.

>> INSERT IGNORE INTO table_name (col1, col2, col3) ARVOT (arvo_luettelo), (arvo_luettelo), (arvo_luettelo);

INSERT IGNORE Workbenchin kautta:

Avaa MySQL Workbench 8.0 järjestelmästäsi ja liitä se tietokantaan.

Komentoalueella sinun on luotava taulukko "Työntekijä", jossa on neljä saraketta, joista yksi on määritettävä "UNIQUE". Luo tämä taulukko kokeilemalla alla olevaa kyselyä navigaattorin kyselyalueella. Valitse koko kysely ja suorita se napsauttamalla flash-merkkiä.

>> LUO TAULUKKO Työntekijä (henkilötunnus ensisijainen avain EI NULL, nimi varchar (50) EI NULL, ikä Varchar (50), palkka Varchar (50), UNIQUE (ID));

Luomisen yhteydessä löydät taulukon "työntekijä" luettelosta vaihtoehdosta "Taulukot" tietokannan "data" alla.

Ruudukkonäkymässä voit kirjoittaa tietueet kirjoittamatta kyselyä. Joten avaa taulukon ”työntekijä” ruudukkonäkymä ja lisää siihen tietueita alla olevan kuvan mukaisesti. Olemme syöttäneet kaikki ainutlaatuiset tietueet ilman kopioita. Ota muutokset käyttöön napsauttamalla Käytä-painiketta.

Uusi ikkuna avautuu vastaavilla kyselyillä, jotka liittyvät yllä kirjoittamiimme tietueisiin. Tätä näyttöä voidaan kutsua "Review" -näytöksi. Jos haluat muuttaa jotain, voit tehdä sen täällä. Muussa tapauksessa suorita kyselyt napsauttamalla Käytä-painiketta.

Kuten näette, kysely on suoritettu onnistuneesti ja tietueet tallennetaan tietokantaan ja sen taulukkoon ”Työntekijä”. Se olisi tuottanut virheen, jos olisimme lisänneet kaksoisarvon sarakkeeseen "ID". Napauta Valmis-painiketta.

Tässä oli kyse ruudukkonäkymästä. Lisäämme nyt tietueita kyselyalueen kautta. Sillä välin olemme lisänneet kaksoiskappaleet tällä kertaa tulostuksen tarkistamiseksi. Joten olemme yrittäneet alla olevaa "INSERT" -kyselyä, jossa meillä on kaksi arvoluetteloa. Molemmilla arvoluetteloilla on sama arvo sarakkeessa '' ID ''. Valitse kysely ja suorita kysely napsauttamalla flash-merkkiä.

Kysely ei toimi oikein, ja se aiheuttaa virheen INSERT-komennon päällekkäisten arvojen vuoksi, kuten kuvassa näkyy.

Kokeile nyt samaa yllä olevaa kyselyä INSERT IGNORE -lausekkeella ja suorita se esitetyllä tavalla.

Voit nähdä, että se ei aiheuta virhettä lähtöalueelle, mutta se antaa varoituksen siitä, että komento sisältää päällekkäisiä arvoja.

Päivitä taulukon ”Työntekijä” ruudukkonäkymä. INSERT IGNORE -kysely on toiminut puolet. Se lisäsi ensimmäisen arvoluettelon taulukkoon, mutta toinen arvoluettelo on jätetty huomiotta toistuvan arvon "13" vuoksi.

INSERT IGNORE komentorivin kuoren kautta:

Tämän käsitteen ymmärtämiseksi avataan MySQL-komentorivin asiakaskuori järjestelmässäsi. Kirjoita pyydettäessä MySQL-salasanasi aloittaaksesi sen käsittelyn.

Nyt on aika luoda taulukko. Kokeile alla olevaa komentoa. Olemme luoneet taulukon nimeltä 'ministeri', kun taas yhdessä sen sarakkeessa on AINUTLAATUISET rajoitukset. On selvää, että sarake ”ID” hyväksyy vain yksilölliset arvot eikä kaksoisarvoja.

>> LUO TAULUKON tiedot.ministeri (Mid INT ENSIMMÄINEN AVAINAINEKOHTAINEN EI NULL, nimi VARCHAR (45), kaupunki VARCHAR (45))

Kysely toimii asianmukaisesti, ja taulukko on luotu. INSERT IGNORE -lausekkeen ymmärtämiseksi sinun on ensin tarkasteltava yksinkertaisen INSERT-komennon toimintaa. Jos lisäät tietotietoja taulukkoon INSERT-komennon avulla, MySQL keskeyttää tapahtuman ja luo poikkeuksen, jos prosessoinnin aikana tapahtuu virhe. Tämän seurauksena taulukkoon ei ole lisätty rivejä. Lisätään ensimmäinen tietue taulukkoon "ministeri" käyttämällä alla olevaa kyselyä. Kysely toimii onnistuneesti, koska taulukko on tällä hetkellä tyhjä, eikä vastaavaa tietuetta ole.

Koska sarake “ID” on AINUTLAATUINEN, kun yritämme alla olevaa komentoa komentorivin kuoressa, se aiheuttaa virheen. Tämä johtuu siitä, että olemme lisänneet arvon "11" edelliseen kyselyyn, ja UNIQUE-avaimen takia se ei salli meidän lisätä toistettua arvoa uudelleen.

Näin ollen taulukon tarkistuksen yhteydessä voimme nähdä, että taulukossa on vain yksi tietue, jonka ensimmäinen INSERT-kysely on lisännyt.

>> VALITSE * FROM-tiedoista.ministeri;

Toisaalta, jos käytät INSERT IGNORE -lauseketta, virheelliset tietorivit, jotka aiheuttavat virheen, jätetään huomiotta ja syötetään vain oikeat. Alla olevassa komennossa olemme käyttäneet INSERT IGNORE -komentoa välttääksesi toistuvien arvojen lisäämistä taulukkoon ja unohtamaan virheen. Kuten näette, ensimmäisellä arvoluettelolla on kaksoisarvo "11", joka on sama kuin edellisessä kyselyssä. Vaikka toinen arvoluettelo on ainutlaatuinen, se näyttää yhden taulukkoon lisätyn tietueen, joka on toinen arvoluettelo. MySQL osoittaa myös, että vain yksi tietue on lisätty, ja yksi varoitus generoidaan viestiin. Voit sitten olettaa, että jos käytämme INSERT IGNORE -lauseketta, MySQL antaa varoituksen.

Kuten alla olevasta lähdöstä näet, tässä taulukossa on vain kaksi tietuetta - ensimmäinen luettelo arvoista, jotka on annettu yllä olevassa kyselyssä, joka jätetään huomiotta.

>> VALITSE * FROM-tiedoista.ministeri;

Päätelmä:

Olemme tehneet kaikki tarvittavat esimerkit INSERT IGNORE -toiminnosta päällekkäisissä arvoissa MySQL Workbenchin ja MySQL-komentorivin asiakaskuoren kautta.

Hyödyllisiä työkaluja Linux-pelaajille
Jos haluat pelata pelejä Linuxissa, on todennäköistä, että olet käyttänyt sovelluksia ja apuohjelmia, kuten Wine, Lutris ja OBS Studio, pelikokemuksen...
HD Remastered Games for Linux that Never had a Linux Release Earlier
Many game developers and publishers are coming up with HD remaster of old games to extend the life of franchise, please fans requesting compatibility ...
Kuinka käyttää AutoKey-toimintoa Linux-pelien automatisointiin
AutoKey on työpöydän automaatioapuohjelma Linuxille ja X11: lle, ohjelmoitu Python 3, GTK ja Qt. Komentosarjojen ja MACRO-toimintojen avulla voit auto...