MySQL – kaip įterpti naują eilutę tik tuo atveju, jei duomenų nėra

Mysql Kaip Iterpti Nauja Eilute Tik Tuo Atveju Jei Duomenu Nera



MySQL yra garsi atvirojo kodo RDBVS, skirta duomenims saugoti duomenų bazėse. Duomenų įterpimas į duomenų bazės lenteles yra įprasta užduotis. Kartais vartotojai nenori įterpti pasikartojančių duomenų, kad pašalintų dubliavimą. MySQL leidžia vartotojams įterpti duomenis tik tuo atveju, jei panašių duomenų dar nėra.

Šiame įraše bus aptariamas naujos eilutės įterpimas tik tuo atveju, jei MySQL lentelėje dar nėra duomenų. Prieš pradėdami rašyti šį įrašą, įsitikinkite, kad esate prisijungę prie vietinio MySQL serverio ir pasirinkote duomenų bazę, kurioje norite dirbti.

Įterpkite naują eilutę tik tuo atveju, jei duomenų nėra, naudodami teiginį „INSERT IGNORE“.

Na, atsakymas į klausimą pavadinime yra gana paprastas ir aiškus. Tiesiog naudokite ' ĮDĖTI “ raktinis žodis kartu su „ Ignoruoti “ Raktažodis. Tai užtikrins, kad nauji duomenys arba įterpimo užklausa būtų vykdoma tik tada, kai MySQL nerasta ankstesnio duomenų įvedimo. Norėdami trumpai apžvelgti tai, pažvelkite į šią sintaksę:







ĮDĖTI Ignoruoti Į [ stalo - vardas ] ( [ 1 stulpelis - vardas ] , [ 2 stulpelis - vardas ] , [ 3 stulpelis - vardas ] ) VERTYBĖS ( [ vertė1 ] , [ vertė2 ] , [ vertė3 ] ) ;

Pažiūrėkime pavyzdį, jei vartotojas nori įvesti eilutės reikšmę ' 1 “, „ Jonas “ ir „ Doe ' viduje ' Klientas ' lentelė stulpeliams ' Id ”, “ Pirmas vardas “ ir „ Pavardė “ atitinkamai. Paleiskite šią užklausą, kad įterptumėte šias reikšmes, jei tokių yra, jei jau nėra eilutės su šiomis reikšmėmis:



PASIRINKTI * NUO Klientas;
ĮDĖTI Ignoruoti Į Klientas ( Id , Pirmas vardas , Pavardė ) VERTYBĖS ( 1 , 'Jonas' , 'oe' ) ;

Išvestyje yra dvi lentelės, kuriose pateikiami lentelės duomenys prieš ir po užklausos vykdymo. Galite pastebėti, kad lentelėje niekas nesikeičia, nes eilutė jau egzistavo, todėl MySQL sėkmingai nepaisė įterpimo proceso neparodydamas klaidos:







Įterpti naują eilutę tik tuo atveju, jei duomenų nėra, naudojant sąlygą „KUR NĖRA“

„MySQL“ sistemoje „ KUR NEEGZISTUOJA ' sąlyga neleidžia įterpti eilučių, jei jos jau yra lentelėje, kai jis naudojamas ' INSERT INTO “ sakinys su antrine užklausa sąlygai apibrėžti. Kai ši sąlyga naudojama su antrine užklausa ' (SELECT * FROM [lentelės pavadinimas] [stulpelio pavadinimas]=[išraiška]); “ patikrina, ar lentelėje yra eilutė, atitinkanti sąlygą. Jei yra eilutė, „ KUR NĖRA ' sąlyga grąžins klaidingą reikšmę, o ' PASIRINKTI “ teiginys nepateiks jokių eilučių. Dėl to eilutė nebus įterpta į lentelę. Sintaksė pateikiama žemiau:

ĮDĖTI Į [ stalo - vardas ] ( [ 1 stulpelis - vardas ] , [ 2 stulpelis - vardas ] , [ 3 stulpelis - vardas ] )
PASIRINKTI [ vertė1 ] , [ vertė2 ] , [ vertė3 ]
KUR NE YRA ( PASIRINKTI * NUO [ stalo - vardas ] [ stulpelyje - vardas ] = [ išraiška ] ) ;

Pažiūrėkime pavyzdį, jei vartotojas nori į darbuotojų lentelę įterpti eilutę su reikšmėmis ' 1 “, „ amerikietiškas “ ir „ Henriot “ stulpeliuose “ id “, „ Įmonės pavadinimas “ ir „ Kontaktinis vardas “ atitinkamai. Bet tik jei eilutė su ID ' 1 “ lentelėje nerastas arba jo nėra. Šiuo konkrečiu atveju užklausa taps tokia:



PASIRINKTI * NUO darbuotojas;

ĮDĖTI Į darbuotojas ( id , Įmonės pavadinimas , Kontaktinis vardas )
PASIRINKTI 1 , 'amerikietiškas' , 'Henriot'
KUR NE YRA ( PASIRINKTI * NUO darbuotojas KUR id = 1 ) ;

Išvestyje rodoma nauja eilutė, kuri nėra įterpta kaip eilutė su „ id ' lygus ' 1 “ jau egzistavo.

Įterpkite naują eilutę tik tuo atveju, jei duomenų nėra, naudodami sąlygą „ON DUPLICATE KEY UPDATE“

Na, kitas būdas yra naudoti „ DĖL DUBLIKATO RAKTŲ ATNAUJINIMO “ sąlyga MySQL. Kadangi ši sąlyga bus naudojama su „INSERT INTO“ užklausa, sudarant „if-else“ vykdymą. Taigi tai reiškia, kad duomenys lentelėje bus atnaujinami tik tuo atveju, jei jie yra unikalūs. Priešingu atveju pokyčių nebūtų. Bendra sintaksė yra tokia:

ĮDĖTI Į [ stalo - vardas ] ( [ 1 stulpelis - vardas ] , [ 2 stulpelis - vardas ] , [ 3 stulpelis - vardas ] ) VERTYBĖS ( [ vertė1 ] , [ vertė2 ] , [ vertė3 ] )
ĮJUNGTA DUBLIKATAS RAKTAS ATNAUJINTI [ 1 stulpelis - vardas ] = [ 1 stulpelis - vardas ] ;

Pažiūrėkime pavyzdį, kaip įterpti reikšmes į „ 2 “, „ Pascale “, „ Niksonas “, „ Londonas “, „ JK “ ir „(171) 555-7788 'lentelėje' Klientas “ stulpeliams “ Id “, „ Pirmas vardas “, „ Pavardė “, „ miestas “, „ Šalis “ ir „ telefonas “ atitinkamai. Jei eilutės dar nėra, ji bus įterpta. Priešingu atveju jis atnaujins reikšmes, kuriose Id=Id “ sąlyga atitinka. Vykdykite šią užklausą:

PASIRINKTI * NUO Klientas;
ĮDĖTI Į Klientas ( Id , Pirmas vardas , Pavardė , miestas , Šalis , telefonas )
VERTYBĖS ( 2 , 'Pascale' , 'Nixon' , 'Londonas' , „JK“ , „(171) 555-7788“ )
ĮJUNGTA DUBLIKATAS RAKTAS ATNAUJINTI Id = Id;

Tai yra lentelė prieš paleidžiant užklausą, galite pamatyti „ Id ' lygus ' 2 ' neegzistuoja:

Paleidus užklausą, ši užklausa į lentelę įterps naujas eilutes:

Sėkmingai įterpėte naują eilutę, nes prieš vykdant užklausą duomenų nėra.

Išvada

„MySQL“ įterpkite naują eilutę, tik jei duomenų dar nėra, naudodami „ ĮTERPTI Ignoruoti “ teiginys arba „ KUR NĖRA “ sąlyga „ INSERT INTO “ pareiškimas. Kitas būdas tai padaryti yra naudoti „ DĖL DUBLIKATO RAKTŲ ATNAUJINIMO “ sąlyga „ INSERT INTO “ teiginį atnaujinti, jei eilutė jau yra. Kitu atveju pridėkite naują eilutę. Įraše buvo aptarta, kaip įterpti naują eilutę tik tuo atveju, jei duomenų nėra.