MySQL MariaDB

MySQL sisesta ignoreeri duplikaatvõtit

MySQL sisesta ignoreeri duplikaatvõtit
Tabelites või tulemuste komplektides on sageli vastuolulisi andmeid. Parandamine on samuti aeganõudev ning sageli tuleb vältida korduvaid kirjeid. Korduvate kirjete tuvastamine ja kustutamine mõlemast tabelist on vajalik. Selles jaotises käsitletakse üksikasjalikult, kuidas vältida duplikaatandmete ilmumist tabelisse ja kuidas praeguseid duplikaatkirjeid kõrvaldada. Selles juhendis saate teada, kuidas vea vältimiseks kasutada klauslit INSERT IGNORE.

Süntaks:

Siin on päringu INSERT IGNORE süntaks.

>> INSERT IGNORE INTO tabeli_nimi (col1, col2, col3) VALUES (väärtusloend), (väärtusloend), (väärtusloend);

Sisestage IGNORE Workbenchi kaudu:

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

Käsualal peate looma nelja veeruga tabeli "Töötaja", kus üks neist peab olema määratud "KORDULE". Selle tabeli loomiseks proovige allolevat päringut navigaatori päringualal. Valige kogu päring ja klõpsake selle täitmiseks välkmärgil.

>> LOE TABEL Töötaja (ID int PÕHIVÕTI EI NULL, Nimi Varchar (50) NOT NULL, Vanus Varchar (50), Palk Varchar (50), UNIQUE (ID));

Selle loomisel leiate tabeli „töötaja” loendist andmebaasi „andmed” alt valiku „Tabelid” alt.

Ruudustikuvaates saate kirjed sisestada ilma ühtegi päringut sisestamata. Niisiis, avage tabeli “töötaja” ruudustikuvaade ja lisage sinna mõned kirjed, nagu allpool näidatud. Oleme sisestanud kõik kordumatud kirjed ilma duplikaatideta. Muudatuste rakendamiseks vajutage nuppu Rakenda.

Avatakse uus aken asjakohaste päringutega, mis on seotud eespool sisestatud kirjetega. Seda ekraani võib nimetada ekraaniks “Review”. Kui soovite midagi muuta, saate seda teha siin. Vastasel juhul vajutage päringute täitmiseks 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 veergu „ID” lisanud duplikaatväärtuse. Puudutage nuppu „Lõpeta“.

See kõik puudutas võrguvaadet. Nüüd sisestame kirjed päringuala kaudu. Vahepeal sisestasime väljundi kontrollimiseks topeltkirjeid. Niisiis, oleme proovinud allpool päringut "INSERT", 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 täitmiseks välkmärki.

Päring ei tööta õigesti ja see tekitab vea käsu INSERT dubleeritud väärtuste tõttu, nagu pildil kuvatakse.

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

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

Värskendage tabeli “Töötaja” ruudustikuvaadet. Päring INSERT IGNORE on töötanud pool. See sisestas tabelisse esimese väärtuste loendi, kuid teist väärtuste loendit on korduva väärtuse „13” tõttu eiratud.

INSERT IGNORE käsurea kesta kaudu:

Selle kontseptsiooni mõistmiseks avame oma süsteemis MySQL-i käsurea kliendi kesta. Küsimisel sisestage oma MySQL-i parool, et sellega töötada.

Nüüd on aeg luua tabel. Selleks proovige allolevat käsku. Oleme loonud tabeli nimega 'minister', samal ajal kui selle ühes veerus on ainulaadne piirang. On selge, et veerus „ID” aktsepteeritakse ainult kordumatuid väärtusi, mitte duplikaatväärtusi.

>> LOE TABELI andmed.minister (keskmine INT PRIMAARSE PÕHIKARIKA, KUI NULL, nimi VARCHAR (45), linn VARCHAR (45));

Päring töötab sobivalt ja tabel on loodud. Klausli INSERT IGNORE mõistmiseks peate kõigepealt nägema lihtsa käsu INSERT toimimist. Kui kasutate tabelisse mitme teabeandme sisestamiseks käsku INSERT, peatab MySQL tehingu ja loob erandi, kui töötlemise ajal juhtub tõrge. Selle tagajärjel pole tabelisse ühtegi rida lisatud. Lisame tabelisse "minister" esimese kirje, kasutades allpool näidatud päringut. Päring töötab edukalt, kuna tabel on praegu tühi ja vaste pole ühtegi kirjet.

Kuna veerg „ID” on KORDumatu, siis kui proovime käsurea kestal allolevat juhist, tekitab see tõrke. Selle põhjuseks on see, et oleme eelmises päringus lisanud väärtuse „11“ ja võtme UNIQUE tõttu ei võimalda see meil korduvat väärtust uuesti lisada.

Seega näeme tabeli kontrollimisel, et esimesele päringule INSERT on lisatud tabelisse ainult üks kirje.

>> SELECT * FROM andmetest.minister;

Ja vastupidi, kui kasutate klauslit INSERT IGNORE, jäävad vea käivitanud valed andmeread tähelepanuta ja sisestatakse ainult õiged. Allolevas käsus oleme kasutanud käsku INSERT IGNORE, et vältida tabelisse korduvate väärtuste lisamist ja tõrke tähelepanuta jätmist. Nagu näete, on esimese väärtuste loendi duplikaatväärtus „11” sama, mis eelmises päringus. Ehkki 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õnumis luuakse 1 hoiatus. Seejärel võite eeldada, et kui kasutame klauslit INSERT IGNORE, annab MySQL hoiatuse.

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

>> SELECT * FROM andmetest.minister;

Järeldus:

Oleme teinud kõik vajalikud näited INSERT IGNORE-st duplikaatväärtuste jaoks MySQL Workbenchi ja MySQL-i käsurea kliendikesta kaudu.

Kasulikud tööriistad Linuxi mängijatele
Kui teile meeldib Linuxis mänge mängida, on tõenäoline, et olete mängukogemuse parandamiseks kasutanud selliseid rakendusi ja utiliite nagu Wine, Lutr...
HD Remastered Games Linuxile, millel pole kunagi varem Linuxi väljalaset olnud
Paljud mängude arendajad ja kirjastajad pakuvad frantsiisi eluea pikendamiseks välja vanade mängude HD-remasteri. Palun fännid, kes soovivad ühilduvus...
Kuidas kasutada AutoKeyt Linuxi mängude automatiseerimiseks
AutoKey on Linuxi ja X11 töölaua automatiseerimise utiliit, mis on programmeeritud Python 3, GTK ja Qt. Selle skriptimise ja MACRO funktsionaalsuse ab...