„MySQL MariaDB“

„MySQL“ įterpti ignoruoti pasikartojantį raktą

„MySQL“ įterpti ignoruoti pasikartojantį raktą
Lentelėse ar rezultatų rinkiniuose dažnai yra prieštaringų duomenų. Pataisyti taip pat užtrunka daug laiko, todėl dažnai reikia vengti pakartotinių įrašų. Būtina nustatyti pasikartojančius įrašus ir ištrinti juos iš bet kurios lentelės. Šiame skyriuje bus išsamiai paaiškinta, kaip išvengti duomenų pasikartojimo rodymo lentelės viduje ir kaip pašalinti esamus pasikartojančius įrašus. Šiame vadove sužinosite, kaip naudoti sąlygą INSERT IGNORE, kad išvengtumėte klaidos.

Sintaksė:

Čia yra užklausos INSERT IGNORE sintaksė.

>> INSERT IGNORE INTO table_name (col1, col2, col3) VALUES (value_list), (value_list), (value_list);

ĮDĖKITE IGNORE per „Workbench“:

Atidarykite „MySQL Workbench 8“.0 iš savo sistemos ir prijunkite jį prie duomenų bazės egzemplioriaus.

Komandų srityje turite sukurti lentelę „Darbuotojas“ su keturiais stulpeliais, kur vienas iš jų turi būti nurodytas kaip „UNIKALUS“. Norėdami sukurti šią lentelę, išbandykite žemiau pateiktą užklausą naršyklės užklausos srityje. Pasirinkite visą užklausą ir spustelėkite „Flash“ ženklą, kad ją įvykdytumėte.

>> SUKURTI LENTEL Em Darbuotojas (ID tarp pirminio rakto NEBŪTINAS, vardas varcharas (50) NE NULL, amžiaus varcharas (50), algos varcharas (50), UNIKALUS (ID));

Sukūrę lentelę „darbuotojas“ galite rasti sąraše esančioje parinktyje „Lentelės“ po duomenų bazės „duomenys“.

Tinklelio rodinyje galite įvesti įrašus neįvesdami jokios užklausos. Taigi atidarykite lentelės „darbuotojas“ tinklelio rodinį ir pridėkite jame keletą įrašų, kaip parodyta žemiau. Įvedėme visus unikalius įrašus be jokių dublikatų. Paspauskite mygtuką „Taikyti“, kad pritaikytumėte pakeitimus.

Bus atidarytas naujas langas su atitinkamomis užklausomis, susijusiomis su įrašais, kuriuos įvedėme aukščiau. Šis ekranas gali būti vadinamas „apžvalgos“ ekranu. Jei norite ką nors pakeisti, galite tai padaryti čia. Kitu atveju paspauskite mygtuką Taikyti, kad įvykdytumėte užklausas.

Kaip matote, užklausa buvo sėkmingai įvykdyta ir įrašai įrašomi į duomenų bazę ir jos lentelę „Darbuotojas“. Būtų sugeneruota klaida, jei stulpelyje „ID“ būtume pridėję kokią nors vertės kopiją. Palieskite mygtuką „Baigti“.

Viskas buvo apie tinklelio vaizdą. Dabar įterpsime įrašus per užklausos sritį. Tuo tarpu šį kartą įterpėme pasikartojančius įrašus, kad patikrintume išvestį. Taigi, mes išbandėme žemiau pateiktą užklausą „INSERT“, kur turime du reikšmių sąrašus. Abu verčių sąrašai turi tą pačią reikšmę stulpelyje „ID“. Pasirinkite užklausą ir paspauskite „Flash“ ženklą, kad įvykdytumėte užklausą.

Užklausa neveiks tinkamai, ir ji sukurs klaidą dėl komandoje INSERT pasikartojančių reikšmių, kaip parodyta paveikslėlyje.

Dabar pabandykite tą pačią aukščiau pateiktą užklausą su sąlyga INSERT IGNORE ir vykdykite ją taip, kaip pateikta.

Galite pamatyti, kad tai nesukuria klaidos išvesties srityje, tačiau įspėja, kad komandoje yra pasikartojančios vertės.

Atnaujinkite lentelės „Darbuotojas“ tinklelio rodinį. Užklausa INSERT IGNORE suveikė perpus. Į lentelę įterptas pirmasis verčių sąrašas, tačiau antrojo reikšmių sąrašo nepaisyta dėl pakartotinės vertės „13“.

ĮDĖTI IGNORE per komandų eilutės apvalkalą:

Norėdami suprasti šią koncepciją, atidarykime „MySQL“ komandinės eilutės kliento apvalkalą savo sistemoje. Kai paprašysite, įveskite „MySQL“ slaptažodį, kad galėtumėte pradėti jį dirbti.

Dabar atėjo laikas sukurti lentelę. Išbandykite žemiau pateiktą komandą. Mes sukūrėme lentelę pavadinimu „ministras“, o vienoje iš jos stulpelių yra UNIKALUS suvaržymas. Aišku, kad stulpelyje „ID“ bus priimamos tik unikalios vertės, o ne pasikartojančios vertės.

>> SUKURTI LENTELĖS duomenis.ministras (vidurinis INT PAGRINDINIS PAGRINDINIS UNIKALUS NENUOL, vardas VARCHAR (45), miestas VARCHAR (45));

Užklausa veikia tinkamai, ir lentelė buvo sukurta. Norėdami suprasti sąlygą INSERT IGNORE, pirmiausia turite pamatyti, kaip veikia paprasta INSERT komanda. Jei naudojate komandą INSERT, norėdami į lentelę įterpti kelis informacijos duomenis, „MySQL“ sustabdo operaciją ir sukuria išimtį, jei apdorojant įvyksta klaida. Todėl lentelėje nėra jokių eilučių. Įterpkime pirmąjį įrašą lentelėje „ministras“ naudodami žemiau pateiktą užklausą. Užklausa veiks sėkmingai, nes lentelė šiuo metu tuščia ir nėra įrašo, su kuriuo būtų galima lyginti.

Kadangi stulpelis „ID“ yra UNIKALUS, bandant žemiau pateiktą komandinės eilutės apvalkalo instrukciją, bus sukurta klaida. Taip yra todėl, kad ankstesnėje užklausoje pridėjome vertę „11“ ir dėl UNIKALUS rakto tai neleidžia vėl pridėti pakartotos vertės.

Taigi, patikrinę lentelę, galime pamatyti, kad lentelėje yra tik 1 įrašas, kurį pridėjo pirmoji INSERT užklausa.

>> PASIRINKTI * IŠ duomenų.ministras;

Ir atvirkščiai, jei naudojate sąlygą INSERT IGNORE, neteisingos duomenų eilutės, sukeliančios klaidą, bus nepastebėtos ir bus įvesti tik tikslūs. Žemiau pateiktoje komandoje mes naudojome komandą INSERT IGNORE, kad išvengtume pakartotinių reikšmių lentelėje ir nepastebėtume klaidos. Kaip matote, pirmojo reikšmių sąrašo reikšmė yra „11“, tokia pati kaip ir ankstesnėje užklausoje. Nors antrasis reikšmių sąrašas yra unikalus, jame bus rodomas 1 įrašas, įterptas į lentelę, o tai yra antrasis verčių sąrašas. „MySQL“ taip pat nurodo, kad įterptas tik 1 įrašas, o pranešime sugeneruojamas 1 įspėjimas. Tada galite manyti, kad jei mes naudojame sąlygą INSERT IGNORE, MySQL pateikia įspėjimą.

Kaip matote iš žemiau pateiktos išvesties, šioje lentelėje turime tik du įrašus - pirmąjį anksčiau pateiktoje užklausoje pateiktą verčių sąrašą, kuris nepastebimas.

>> PASIRINKTI * IŠ duomenų.ministras;

Išvada:

Mes padarėme visus būtinus INSERT IGNORE pavyzdžių pavyzdžius pasikartojančiose reikšmėse per „MySQL Workbench“ ir „MySQL“ komandinės eilutės kliento apvalkalą.

Kaip įdiegti „League of Legends“ „Ubuntu 14“.04
Jei esate „League of Legends“ gerbėjas, tai jums yra galimybė išbandyti „League of Legends“. Atminkite, kad LOL palaikoma „PlayOnLinux“, jei esate „Li...
Įdiekite naujausią „OpenRA“ strategijos žaidimą „Ubuntu Linux“
„OpenRA“ yra „Free / Free Real Time Strategy“ žaidimų variklis, atkuriantis ankstyvuosius „Westwood“ žaidimus, tokius kaip klasikinis „Command & Conqu...
Įdiekite naujausią „Dolecin Emulator“, skirtą „Gamecube“ ir „Wii“, sistemoje „Linux“
„Delfinų emuliatorius“ leidžia žaisti pasirinktus „Gamecube“ ir „Wii“ žaidimus „Linux“ asmeniniuose kompiuteriuose (PC). „Dolphin Emulator“ yra laisv...