MySQL Insert Ignore Duplicate Key

Mysql Insert Ignore Duplicate Key



A táblázatokban vagy eredményhalmazokban gyakran ellentmondó adatok találhatók. A javítás is időigényes, és gyakran kerülni kell az ismétlődő rekordokat. Szükséges az ismétlődő rekordok azonosítása és törlése bármelyik táblázatból. Ez a rész részletesen bemutatja, hogyan kerülheti el az ismétlődő adatok megjelenését a táblázatban, és hogyan szüntetheti meg az ismétlődő rekordokat. Ebben az útmutatóban megtanulja, hogyan kell használni az INSERT IGNORE záradékot a hiba elkerülése érdekében.

Szintaxis:

Itt található az INSERT IGNORE lekérdezés szintaxisa.







>>IGNORE INSERT tábla_névbe(col1, col2, col3)ÉRTÉKEK(értéklista),(értéklista),(értéklista);

IGNORE BEÍRÁSA a munkapadon keresztül:

Nyissa meg a MySQL Workbench 8.0 -t a rendszeréből, és csatlakoztassa az adatbázis -példányhoz.





A parancsterületen létre kell hoznia egy négy oszlopos Employee táblát, ahol az egyiket UNIQUE -ként kell megadni. Próbálja ki az alábbi lekérdezést a navigátor lekérdezési területén a táblázat létrehozásához. Válassza ki a teljes lekérdezést, és kattintson a flash jelre a végrehajtásához.





>>TÁBLÁZAT LÉTREHOZÁSA Alkalmazott(ID int PRIMARY KEY NOT NULL, név varchar(ötven)NEM NULL, Age Varchar(ötven), Fizetés varchar(ötven), EGYEDI(Azonosító));

Létrehozáskor a tábla alkalmazottja megtalálható a listán belül az adatbázis adatai alatt található Táblázatok menüpont alatt.



A rács nézetben megadhatja a rekordokat lekérdezés beírása nélkül. Tehát nyissa meg a táblázat alkalmazottjának rácsnézetét, és adjon hozzá néhány rekordot az alábbiak szerint. Az összes egyedi rekordot duplikáció nélkül adtuk meg. Nyomja meg az „Alkalmaz” gombot a módosítások alkalmazásához.

Megnyílik egy új ablak, amely tartalmazza a fent leírt rekordokkal kapcsolatos releváns lekérdezéseket. Ezt a képernyőt nevezhetjük áttekintő képernyőnek. Ha valamit változtatni szeretne, itt megteheti. Ellenkező esetben nyomja meg az Alkalmaz gombot a lekérdezések végrehajtásához.

Amint láthatja, a lekérdezés sikeresen végrehajtásra került, és a rekordok mentésre kerülnek az adatbázisba és annak táblázatába. Hiba lett volna, ha az ismétlődő értékeket hozzáadtuk az oszlop azonosítójához. Koppintson a Befejezés gombra.

Ez mind a rácsos nézetről szólt. Most rekordokat fogunk beszúrni a lekérdezési területen keresztül. Eközben ezúttal ismétlődő rekordokat helyeztünk be a kimenet ellenőrzésére. Tehát kipróbáltuk az alábbi INSERT lekérdezést, ahol két értéklista van. Mindkét értéklista azonos értékű az „ID” oszlopban. Válassza ki a lekérdezést, és nyomja meg a flash jelet a lekérdezés végrehajtásához.

A lekérdezés nem fog megfelelően működni, és hibát generál a képen látható INSERT parancs ismétlődő értékei miatt.

Most próbálja meg ugyanazt a fenti lekérdezést az INSERT IGNORE záradékkal, és hajtsa végre a bemutatott módon.

Látható, hogy nem generál hibát a kimeneti területen, de figyelmeztet, hogy a parancs ismétlődő értékeket tartalmaz.

Frissítse a táblázat Employee rácsnézetét. Az INSERT IGNORE lekérdezés fele -fele arányban működött. Beszúrta az első értéklistát a táblázatba, de a második értéklistát figyelmen kívül hagyta az ismétlődő 13 érték miatt.

IGNORE INSERT parancssori Shell segítségével:

Ennek megértéséhez nyissuk meg a MySQL parancssori ügyfélhéjat a rendszerben. Amikor rákérdez, írja be a MySQL jelszavát a munka megkezdéséhez.

Most itt az ideje egy táblázat létrehozásának. Ehhez próbálja ki az alábbi parancsot. Létrehoztunk egy „miniszter” nevű táblázatot, míg egyik oszlopa EGYEDI megkötéssel rendelkezik. Nyilvánvaló, hogy az oszlop azonosítója csak az egyedi értékeket fogadja el, az ismétlődő értékeket nem.

>>TÁBLÁZAT LÉTREHOZÁSA data.minister(Középső INT PRIMARY KEY UNIQUE NOT NULL, Név VARCHAR(Négy öt), Város VARCHAR(Négy öt));

A lekérdezés megfelelően működik, és a táblázat létrejött. Az INSERT IGNORE záradék megértéséhez először látnia kell az egyszerű INSERT parancs működését. Ha az INSERT paranccsal több információs adatot szúr be egy táblázatba, a MySQL felfüggeszti a tranzakciót, és kivételt generál, ha a feldolgozás során hiba történik. Következésképpen a táblázathoz nem tartoznak sorok. Illesszük be az első rekordot a miniszter táblázatba az alább látható lekérdezés használatával. A lekérdezés sikeresen fog működni, mert a táblázat jelenleg üres, és nincs rekord, amellyel párosítani lehetne.

Mivel az oszlop azonosítója EGYEDI, amikor a parancssori héjon próbáljuk ki az alábbi utasítást, az hibát generál. Ez azért van, mert az előző lekérdezésben hozzáadtuk a 11 értéket, és az UNIQUE kulcs miatt nem teszi lehetővé, hogy ismét hozzáadjuk az ismételt értéket.

Ezért a tábla ellenőrzésénél láthatjuk, hogy a táblázat csak 1 rekordot tartalmaz az első INSERT lekérdezéssel.

>>SELECT*FROM data.minister;

Ezzel szemben, ha az INSERT IGNORE záradékot használja, a hibát kiváltó helytelen adatsorok figyelmen kívül maradnak, és csak a pontos sorokat adják meg. Az alábbi parancsban az INSERT IGNORE parancsot használtuk, hogy elkerüljük az ismételt értékek hozzáadását a táblázathoz, és figyelmen kívül hagyjuk a hibát. Amint láthatja, az első értéklista ismétlődő értéke 11 ugyanaz, mint az előző lekérdezésben. Míg a második értéklista egyedi, a táblázatba beillesztett 1 rekord jelenik meg, amely a második értéklista. A MySQL azt is jelzi, hogy csak 1 rekord került beillesztésre, és 1 figyelmeztetés generálódik az üzenetben. Feltételezheti, hogy ha az INSERT IGNORE záradékot használjuk, a MySQL figyelmeztetést ad.

Amint az alábbi kimeneten látható, ebben a táblázatban csak két rekord található - a fenti lekérdezésben megadott értékek első listája, amelyet figyelmen kívül hagyunk.

>>SELECT*FROM data.minister;

Következtetés:

Az INSERT IGNORE összes szükséges példáját elvégeztük az ismétlődő értékeken a MySQL Workbench és a MySQL parancssori klienshéjon keresztül.