MySQL – kuidas lisada uut rida ainult siis, kui andmeid pole

Mysql Kuidas Lisada Uut Rida Ainult Siis Kui Andmeid Pole



MySQL on kuulus avatud lähtekoodiga RDBMS andmete salvestamiseks andmebaasides. Andmete sisestamine andmebaasi tabelitesse on tavaline ülesanne. Mõnikord ei soovi kasutajad liiasuse kõrvaldamiseks dubleeritud andmeid sisestada. MySQL võimaldab kasutajatel andmeid sisestada ainult siis, kui sarnaseid andmeid veel pole.

Selles postituses käsitletakse uue rea lisamist ainult siis, kui MySQL-i tabelis pole andmeid juba olemas. Enne selle postitusega alustamist veenduge, et olete oma MySQL-i kohalikku serverisse sisse logitud ja valinud andmebaasi, kus soovite töötada.

Sisestage uus rida ainult siis, kui andmeid pole, kasutades avaldust 'INSERT IGNORE'.

Noh, vastus pealkirjas olevale küsimusele on üsna lihtne ja arusaadav. Kasutage lihtsalt ' LISA ' märksõna koos ' Ignoreeri ” Märksõna. See tagab, et uusi andmeid või sisestuspäringut täidetakse ainult siis, kui MySQL-is ei leitud varasemat andmete sisestust. Sellest lühikese ülevaate saamiseks vaadake järgmist süntaksit:







LISA Ignoreeri INTO [ laud - nimi ] ( [ veerg1 - nimi ] , [ veerg2 - nimi ] , [ veerg3 - nimi ] ) VÄÄRTUSED ( [ väärtus1 ] , [ väärtus2 ] , [ väärtus3 ] ) ;

Vaatame näidet, kui kasutaja soovib sisestada rea ​​väärtuse ' 1 ”, „ John ” ja „ Doe ' jaotises ' Klient ' tabel veergude jaoks ' Id ,” “ Eesnimi ” ja „ Perekonnanimi ” vastavalt. Käivitage see päring nende väärtuste lisamiseks, kui neid väärtusi sisaldav rida pole juba olemas:



VALI * FROM Klient;
LISA Ignoreeri INTO Klient ( Id , Eesnimi , Perekonnanimi ) VÄÄRTUSED ( 1 , 'John' , 'Doe' ) ;

Väljund sisaldab kahte tabelit, mis kuvavad tabeli andmeid enne ja pärast päringu täitmist. Võite märgata, et tabelis ei muutu midagi, kuna rida oli juba olemas, nii et MySQL on sisestamisprotsessi edukalt ignoreerinud ilma viga kuvamata:







Sisestage uus rida ainult siis, kui andmeid pole, kasutades klauslit 'KUS EI OLEMAS'

MySQL-is on ' KUS EI OLEMAS ' klausel takistab ridade lisamist, kui need on tabelis juba olemas, kui seda kasutatakse ' INSERT INTO ” lause koos alampäringuga tingimuse määratlemiseks. Kui seda klauslit kasutatakse koos alampäringuga ' (SELECT * FROM [tabeli nimi] [veeru nimi]=[avaldis]); ” kontrollib, kas tabelis on rida, mis vastab tingimusele. Kui rida on olemas, siis ' KUS EI OLEMAS ' klausel tagastab vale väärtuse ja ' VALI ” avaldus ei tagasta ühtegi rida. Selle tulemusena ei lisata rida tabelisse. Süntaks on esitatud allpool:

LISA INTO [ laud - nimi ] ( [ veerg1 - nimi ] , [ veerg2 - nimi ] , [ veerg3 - nimi ] )
VALI [ väärtus1 ] , [ väärtus2 ] , [ väärtus3 ]
KUS MITTE OLEMAS ( VALI * FROM [ laud - nimi ] [ veerg - nimi ] = [ väljendus ] ) ;

Vaatame näidet, kui kasutaja soovib lisada töötajate tabelisse rea, mis sisaldab väärtusi ' 1 ”, „ ameeriklane ” ja „ Henriot ' veergudes ' id ”, „ Ettevõtte nimi ” ja „ Kontaktisiku nimi ” vastavalt. Kuid ainult siis, kui rida, mille ID on ' 1 ” tabelist ei leitud või seda pole olemas. Sel konkreetsel juhul muutub päring järgmiseks:



VALI * FROM töötaja;

LISA INTO töötaja ( id , Ettevõtte nimi , Kontaktisiku nimi )
VALI 1 , 'Ameerika' , 'Henriot'
KUS MITTE OLEMAS ( VALI * FROM töötaja KUS id = 1 ) ;

Väljund kuvab uue rea, mida ei sisestata kui rida, millel on ' id ' võrdne ' 1 ” oli juba olemas.

Sisestage uus rida ainult siis, kui andmeid pole, kasutades klauslit „DUPLIKAAT KÕIGI VÄRSKENDUS”

Teine võimalus on kasutada DUPLIKAATVÕTME UUENDUSEL ” klausel MySQL-is. Kuna seda klauslit kasutatakse päringuga 'INSERT INTO', mis moodustab 'if-else' täitmise. See tähendab, et tabelis olevaid andmeid värskendatakse ainult siis, kui need on kordumatud. Muidu muutust ei toimuks. Selle üldine süntaks on järgmine:

LISA INTO [ laud - nimi ] ( [ veerg1 - nimi ] , [ veerg2 - nimi ] , [ veerg3 - nimi ] ) VÄÄRTUSED ( [ väärtus1 ] , [ väärtus2 ] , [ väärtus3 ] )
PEAL DUPLAAT VÕTI VÄRSKENDA [ veerg1 - nimi ] = [ veerg1 - nimi ] ;

Vaatame näidet väärtuste sisestamiseks jaotisesse ' 2 ”, „ Pascale ”, „ Nixon ”, „ London ”, „ Ühendkuningriik ” ja “(171) 555-7788 ' laual ' Klient ' veergude jaoks ' Id ”, „ Eesnimi ”, „ Perekonnanimi ”, „ linn ”, „ riik ” ja „ telefon ” vastavalt. Kui rida pole veel olemas, lisatakse see. Vastasel juhul värskendab see väärtusi, kus ' Id=Id ” tingimus on täidetud. Käivitage see päring:

VALI * FROM Klient ;
LISA INTO Klient ( Id , Eesnimi , Perekonnanimi , linn , riik , telefon )
VÄÄRTUSED ( 2 , 'Pascale' , 'Nixon' , 'London' , 'UK' , '(171) 555-7788' )
PEAL DUPLAAT VÕTI VÄRSKENDA Id = Id;

See on tabel enne päringu käivitamist, näete ' Id ' võrdne ' 2 ' ei eksisteeri:

Pärast päringu käivitamist lisab see päring tabelisse uued read:

Olete edukalt sisestanud uue rea, kuna andmeid enne päringu käivitamist ei eksisteeri.

Järeldus

Sisestage MySQL-is uus rida ainult siis, kui andmeid pole juba olemas, kasutades ' SISESTAGE IGNOREERI ' avaldus või ' KUS EI OLEMAS ' klausel jaotises ' INSERT INTO ” avaldus. Teine viis seda teha on kasutada ' DUPLIKAATVÕTME UUENDUSEL ' klausel jaotises ' INSERT INTO ” avaldus värskendamiseks, kui rida on juba olemas. Vastasel juhul lisage uus rida. Postituses arutati, kuidas lisada uut rida ainult siis, kui andmeid pole.