MySQL Insert Ohita päällekkäiset avaimet

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ä. Päällekkäisten tietueiden tunnistaminen ja poistaminen kummastakin taulukosta on välttämätöntä. Tässä osassa käsitellään sitä, miten vältetään päällekkäisten tietojen näkyminen taulukon sisällä ja miten poistetaan 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(value_list),(value_list),(value_list);

INSERT IGNORE työpöydän kautta:

Avaa MySQL Workbench 8.0 järjestelmästäsi ja yhdistä se tietokantainstanssiin.





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





>>LUO TAULUKKO Työntekijä(ID int PRIMARY KEY NOT NULL, nimi varchar(viisikymmentä)EI NULL, ikä Varchar(viisikymmentä), Palkka varchar(viisikymmentä), AINUTLAATUINEN(ID));

Luodessasi taulukon työntekijän löydät luettelosta Taulukot -vaihtoehdon alta tietokantatietojen alta.



Ruudukkonäkymässä voit syöttää tietueet kirjoittamatta kyselyitä. Avaa siis taulukon työntekijän ruudukkonäkymä ja lisää siihen joitain tietueita alla olevan kuvan mukaisesti. Olemme syöttäneet kaikki ainutlaatuiset tietueet ilman kaksoiskappaleita. Ota muutokset käyttöön napsauttamalla Käytä -painiketta.

Uusi ikkuna avautuu, ja asiaankuuluvat kyselyt liittyvät yllä kirjoittamiimme tietueisiin. Tätä näyttöä voidaan kutsua tarkastelunä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 päällekkäisen arvon sarakkeen tunnukseen. Napauta Valmis -painiketta.

Tämä koski ruudukkonäkymää. Nyt lisäämme tietueita kyselyalueen kautta. Samaan aikaan olemme lisänneet päällekkäisiä tietueita tällä kertaa tuloksen tarkistamiseksi. Olemme siis kokeilleet alla olevaa INSERT -kyselyä, jossa meillä on kaksi arvoluetteloa. Molemmilla arvoluetteloilla on sama arvo sarakkeessa 'ID'. Valitse kysely ja suorita kysely painamalla flash -merkkiä.

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

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

Voit nähdä, että se ei aiheuta virhettä tulostusalueella, mutta varoittaa, että komento sisältää päällekkäisiä arvoja.

Päivitä taulukon Employee 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 Shellin kautta:

Ymmärtääksemme tämän käsitteen, avataan MySQL-komentorivin asiakaskuori järjestelmässäsi. Kirjoita pyydettäessä MySQL -salasanasi ja aloita sen käsittely.

Nyt on aika luoda taulukko. Kokeile alla olevaa komentoa tehdäksesi niin. Olemme luoneet taulukon nimeltä 'ministeri', kun taas yksi sen sarakkeista on ainutlaatuinen rajoitus. On selvää, että sarakkeen tunnus hyväksyy vain yksilölliset arvot, ei päällekkäisiä arvoja.

>>CREATE TABLE data.minister(Puolivälissä INT PRIMARY KEY UNIQUE NOT NULL, nimi VARCHAR(Neljä viisi), Kaupunki VARCHAR(Neljä viisi));

Kysely toimii oikein ja taulukko on luotu. INSERT IGNORE -lausekkeen ymmärtämiseksi sinun on ensin nähtävä yksinkertaisen INSERT -komennon toiminta. Jos käytät INSERT -komentoa useiden tietotietojen lisäämiseen taulukkoon, MySQL keskeyttää tapahtuman ja luo poikkeuksen, jos prosessin aikana tapahtuu virhe. Tämän vuoksi taulukkoon ei ole lisätty rivejä. Lisätään ensimmäinen tietue taulukon ministeriin käyttämällä alla esitettyä kyselyä. Kysely toimii onnistuneesti, koska taulukko on tällä hetkellä tyhjä, eikä vastaavaa tietuetta ole.

Koska sarakkeen tunnus on UNIQUE, kun yritämme alla olevia ohjeita komentorivikuorella, se tuottaa virheen. Tämä johtuu siitä, että olemme lisänneet arvon 11 edelliseen kyselyyn, ja UNIQUE -avaimen vuoksi se ei salli meidän lisätä toistettua arvoa uudelleen.

Näin ollen, kun tarkistamme taulukon, voimme nähdä, että taulukossa on vain yksi tietue, joka on lisätty ensimmäisellä INSERT -kyselyllä.

>>VALITSE*FROM data.minister;

Päinvastoin, jos käytät INSERT IGNORE -lauseketta, virheen aiheuttavat virheelliset tietorivit jätetään huomiotta ja syöttävät vain tarkat rivit. Alla olevassa komennossa olemme käyttäneet INSERT IGNORE -komentoa välttääksesi toistuvien arvojen lisäämisen taulukkoon ja jättämättä virheen huomiotta. Kuten näette, ensimmäisellä arvoluettelolla on päällekkäinen arvo 11 sama kuin edellisessä kyselyssä. Vaikka toinen arvoluettelo on ainutlaatuinen, se näyttää taulukkoon yhden tietueen, joka on toinen arvoluettelo. MySQL osoittaa myös, että vain 1 tietue on lisätty ja viestiin luodaan 1 varoitus. Voit sitten olettaa, että jos käytämme INSERT IGNORE -lauseketta, MySQL antaa varoituksen.

Kuten alla olevasta tuotoksesta näkyy, tässä taulukossa on vain kaksi tietuetta - ensimmäinen kyselyn arvojen luettelo, joka jätetään huomiotta.

>>VALITSE*FROM data.minister;

Johtopäätös:

Olemme tehneet kaikki tarvittavat esimerkit INSERT IGNORE: n päällekkäisistä arvoista MySQL Workbenchin ja MySQL-komentoriviasiakkaaseen.