MySQL – Új sor beszúrása csak akkor, ha nem léteznek adatok

Mysql Uj Sor Beszurasa Csak Akkor Ha Nem Leteznek Adatok



A MySQL egy híres nyílt forráskódú RDBMS az adatok adatbázisokban való tárolására. Az adatok beszúrása az adatbázis tábláiba gyakori feladat. Néha a felhasználók nem akarnak duplikált adatokat beilleszteni a redundancia kiküszöbölése érdekében. A MySQL csak akkor teszi lehetővé a felhasználók számára az adatok beszúrását, ha még nem léteznek hasonló adatok.

Ez a bejegyzés csak akkor tárgyalja az új sor beszúrását, ha még nem léteznek adatok a MySQL táblában. Mielőtt elkezdené ezt a bejegyzést, győződjön meg arról, hogy bejelentkezett a MySQL helyi szerverére, és kiválasztotta azt az adatbázist, ahol dolgozni szeretne.

Csak akkor szúrjon be új sort, ha nem léteznek adatok Az „INSERT IGNORE” utasítás használatával

Nos, a címben szereplő kérdésre a válasz meglehetősen egyszerű és egyértelmű. Egyszerűen használja a „ BESZÁLLÍTÁS ' kulcsszó a ' FIGYELMEN KÍVÜL HAGYNI ” Kulcsszó. Ez biztosítja, hogy az új adatok vagy a beszúrási lekérdezés csak akkor kerüljön végrehajtásra, ha az adatok korábbi bejegyzése nem található a MySQL-ben. Ennek rövid áttekintéséhez vessen egy pillantást a következő szintaxisra:







BESZÁLLÍTÁS FIGYELMEN KÍVÜL HAGYNI BA [ asztal - név ] ( [ oszlop1 - név ] , [ oszlop2 - név ] , [ oszlop3 - név ] ) ÉRTÉKEK ( [ érték1 ] , [ érték2 ] , [ érték3 ] ) ;

Lássunk egy példát, ha a felhasználó egy sorértéket szeretne megadni ' 1 ”, „ János ” és „ Dámvadtehén ' ban,-ben ' Vevő ' táblázat az oszlopokhoz ' Id ',' ' Keresztnév ” és „ Vezetéknév ” ill. Futtassa ezt a lekérdezést az értékek beszúrásához, ha vannak ilyenek, ha már nem létezik ezekkel az értékekkel rendelkező sor:



KIVÁLASZTÁS * TÓL TŐL Vevő;
BESZÁLLÍTÁS FIGYELMEN KÍVÜL HAGYNI BA Vevő ( Id , Keresztnév , Vezetéknév ) ÉRTÉKEK ( 1 , 'János' , 'Dámvadtehén' ) ;

A kimenet két táblát tartalmaz, amelyek a tábla adatait jelenítik meg a lekérdezés végrehajtása előtt és után. Észreveheti, hogy a táblázatban semmi sem változik, mert a sor már létezett, így a MySQL sikeresen figyelmen kívül hagyta a beillesztési folyamatot anélkül, hogy a hibát megjelenítette volna:







Csak akkor szúrjon be új sort, ha az adatok nem léteznek a „WHERE NOT EXISTS” záradék használatával

A MySQL-ben a „ AHOL NEM LÉTEZIK ” záradék megakadályozza a sorok beszúrását, ha azok már léteznek a táblázatban, amikor a „ INSERT INTO ” utasítás egy segédlekérdezéssel egy feltétel meghatározásához. Ha ezt a záradékot a ' segédlekérdezéssel együtt használják (SELECT * FROM [táblanév] [oszlopnév]=[kifejezés]); ” ellenőrzi, hogy létezik-e olyan sor a táblázatban, amely megfelel a feltételnek. Ha létezik egy sor, a „ AHOL NEM LÉTEZIK ” záradék hamis értéket ad vissza, és a „ KIVÁLASZTÁS ” utasítás nem ad vissza sorokat. Ennek eredményeként a sor nem kerül be a táblázatba. A szintaxis az alábbiakban található:

BESZÁLLÍTÁS BA [ asztal - név ] ( [ oszlop1 - név ] , [ oszlop2 - név ] , [ oszlop3 - név ] )
KIVÁLASZTÁS [ érték1 ] , [ érték2 ] , [ érték3 ]
AHOL NEM LÉTEZIK ( KIVÁLASZTÁS * TÓL TŐL [ asztal - név ] [ oszlop - név ] = [ kifejezés ] ) ;

Lássunk egy példát, ha a felhasználó be akar szúrni egy sort az alkalmazotti táblába, amely értékeket tartalmaz ' 1 ”, „ Amerikai ” és „ Henriot ' az oszlopokban ' id ”, „ Cégnév ” és „ ContactName ” ill. De csak akkor, ha egy sor azonosítója ' 1 ” nem található a táblázatban, vagy nem létezik. Ebben az esetben a lekérdezés a következő lesz:



KIVÁLASZTÁS * TÓL TŐL munkavállaló;

BESZÁLLÍTÁS BA munkavállaló ( id , Cégnév , ContactName )
KIVÁLASZTÁS 1 , 'Amerikai' , 'Henriot'
AHOL NEM LÉTEZIK ( KIVÁLASZTÁS * TÓL TŐL munkavállaló AHOL id = 1 ) ;

A kimenet egy új sort jelenít meg, amely nincs beszúrva a következő sorként id ' egyenlő ' 1 ” már létezett.

Csak akkor szúrjon be új sort, ha nem léteznek adatok a „DUPLICATE KEY UPDATE” záradék használatával

Nos, egy másik módszer a „ DUPLIKÁLT KULCS FRISSÍTÉSÉRŐL ” záradék a MySQL-ben. Mivel ezt a záradékot az „INSERT INTO” lekérdezéshez használják, amely „if-else” végrehajtást képez. Tehát ez azt jelenti, hogy a táblán belüli adatok csak akkor frissülnek, ha azok egyediek. Ellenkező esetben nem történne változás. Ennek általános szintaxisa a következő:

BESZÁLLÍTÁS BA [ asztal - név ] ( [ oszlop1 - név ] , [ oszlop2 - név ] , [ oszlop3 - név ] ) ÉRTÉKEK ( [ érték1 ] , [ érték2 ] , [ érték3 ] )
TOVÁBB MÁSOLAT KULCS FRISSÍTÉS [ oszlop1 - név ] = [ oszlop1 - név ] ;

Lássunk egy példát értékek beszúrására a „ 2 ”, „ Pascale ”, „ Nixon ”, „ London ”, „ Egyesült Királyság ” és „(171) 555-7788 ' az asztalban ' Vevő ' az oszlopokhoz ' Id ”, „ Keresztnév ”, „ Vezetéknév ”, „ város ”, „ ország ” és „ telefon ” ill. Ha a sor még nem létezik, akkor beszúrásra kerül. Ellenkező esetben frissíti azokat az értékeket, ahol a ' Id=Id ” feltétel teljesül. Futtassa ezt a lekérdezést:

KIVÁLASZTÁS * TÓL TŐL Ügyfél ;
BESZÁLLÍTÁS BA Vevő ( Id , Keresztnév , Vezetéknév , város , ország , telefon )
ÉRTÉKEK ( 2 , 'Pascale' , 'Nixon' , 'London' , 'UK' , „(171) 555-7788” )
TOVÁBB MÁSOLAT KULCS FRISSÍTÉS Id = Id;

Ez a táblázat a lekérdezés futtatása előtt, láthatja ' Id ' egyenlő ' 2 ' nem létezik:

A lekérdezés futtatása után ez a lekérdezés új sorokat szúr be a táblázatba:

Sikeresen beszúrt egy új sort, mivel a lekérdezés futtatása előtt nem léteznek adatok.

Következtetés

A MySQL-ben csak akkor szúrjon be új sort, ha még nem létezik adat a ' INSERT Ignore ' kijelentés vagy ' AHOL NEM LÉTEZIK ' záradék a ' INSERT INTO ' nyilatkozat. Ennek másik módja a „ DUPLIKÁLT KULCS FRISSÍTÉSÉRŐL ' záradék a ' INSERT INTO ” utasítást frissíteni, ha a sor már létezik. Ellenkező esetben adjon hozzá egy új sort. A bejegyzés azt tárgyalta, hogyan lehet új sort beszúrni csak akkor, ha nincs adat.