MySQL MariaDB

MySQL Insert Ignorera duplikatnyckel

MySQL Insert Ignorera duplikatnyckel
Det finns ofta motstridiga data i tabeller eller resultatuppsättningar. Det är också tidskrävande att korrigera, och ofta måste upprepade poster undvikas. Det är nödvändigt att identifiera dubbletter och ta bort dem från endera tabellen. Detta avsnitt kommer att utarbeta hur man undviker att duplikatdata visas i en tabell och hur man kan eliminera nuvarande dubbletter. I den här guiden lär du dig hur du använder INSERT IGNORE-klausulen för att undvika felet.

Syntax:

Här är syntaxen för INSERT IGNORE-frågan.

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

INSÄTT IGNORERA via Workbench:

Öppna MySQL Workbench 8.0 från ditt system och anslut den till databasinstansen.

I kommandoområdet måste du skapa en tabell "Anställd" med fyra kolumner där en av dem måste anges som "UNIK". Testa nedanstående fråga i navigeringsområdet för att skapa den här tabellen. Markera hela frågan och klicka på flash-tecknet för att utföra den.

>> SKAPA TABELL Anställd (ID int PRIMÄR KEY INTE NULL, Namn varchar (50) INTE NULL, Ålder Varchar (50), Lön varchar (50), UNIK (ID));

Efter skapandet kan du hitta tabellen "anställd" i listan under alternativet "Tabeller" under databasen "data".

I rutvyn kan du ange posterna utan att skriva någon fråga. Så öppna rutvyn för tabellen "anställd" och lägg till några poster i den som visas nedan. Vi har skrivit in alla unika poster utan några dubbletter. Tryck på knappen 'Använd' för att tillämpa ändringarna.

Ett nytt fönster öppnas med relevanta frågor relaterade till de poster vi har angett ovan. Den här skärmen kan kallas en ”Review” -skärm. Om du vill ändra något kan du göra det här. Annars trycker du på knappen Apply för att utföra frågorna.

Som du kan se har frågan körts framgångsrikt och posterna sparas i databasen och dess tabell "Anställd". Det skulle ha genererat ett fel om vi hade lagt till något dubblettvärde i kolumnen "ID". Tryck på "Slutför" -knappen.

Det här handlade om nätvy. Nu kommer vi att infoga poster via frågeområdet. Under tiden har vi infört dubbla poster den här gången för att kontrollera utdata. Så vi har testat nedanstående "INSERT" -fråga, där vi har två värdelistor. Båda värdelistorna har samma värde i kolumnen "ID". Välj frågan och tryck på flash-tecknet för att utföra frågan.

Frågan fungerar inte korrekt och det genererar ett fel på grund av de dubblerade värdena i INSERT-kommandot som visas i bilden.

Försök nu samma fråga ovan med INSERT IGNORE-klausulen och kör den enligt presentationen.

Du kan se att det inte genererar ett fel i utmatningsområdet, men det varnar att kommandot innehåller dubbla värden.

Uppdatera rutvyn i tabellen "Anställd". INSERT IGNORE-frågan har fungerat hälften. Den infogade den första värdelistan i tabellen, men den andra värdelistan har ignorerats på grund av det upprepade värdet “13”.

INSÄTT IGNORERA via kommandoradsskal:

För att förstå detta koncept, låt oss öppna MySQL-kommandoradsklientskalet i ditt system. När du frågar skriver du ditt MySQL-lösenord för att börja arbeta med det.

Nu är det dags att skapa en tabell. Försök med kommandot nedan för att göra det. Vi har skapat en tabell som heter "minister" medan en av dess kolumner har en UNIK begränsning. Det är tydligt att kolumnen "ID" endast accepterar de unika värdena och inte de dubbla värdena.

>> SKAPA TABELLdata.minister (Mid INT PRIMÄR NYCKEL UNIK INTE NULL, Namn VARCHAR (45), Stad VARCHAR (45));

Frågan fungerar på rätt sätt och tabellen har skapats. För att förstå INSERT IGNORE-satsen måste du först se att det enkla INSERT-kommandot fungerar. Om du använder INSERT-kommandot för att infoga flera informationsdata i en tabell avbryter MySQL transaktionen och genererar ett undantag om ett fel inträffar under hela bearbetningen. Som en konsekvens har tabellen inte lagt till några rader. Låt oss infoga den första posten i tabellen "minister" med hjälp av nedanstående fråga. Frågan fungerar framgångsrikt eftersom tabellen för närvarande är tom och det inte finns någon post att motverka.

Eftersom kolumnen "ID" är UNIK, kommer vi att generera ett fel när vi provar nedanstående instruktion på kommandoradsskalet. Detta beror på att vi har lagt till värdet "11" i föregående fråga, och på grund av UNIQUE-tangenten tillåter det oss inte att lägga till det upprepade värdet igen.

Därför kan vi, när vi kontrollerar tabellen, se att tabellen bara har en post tillagd av den första INSERT-frågan.

>> VÄLJ * FRÅN data.minister;

Omvänt, om du använder INSERT IGNORE-klausulen kommer de felaktiga dataraderna som utlöser felet att förbises och kommer bara att ange de korrekta. I kommandot nedan har vi använt kommandot INSERT IGNORE för att undvika att lägga till upprepade värden i tabellen och förbise felet. Som du kan se har den första värdelistan ett dubblettvärde ”11” som i föregående fråga. Medan den andra värdelistan är unik, kommer den att visa en post införd i tabellen, vilket är den andra värdelistan. MySQL anger också att endast 1 post har infogats och 1 varning genereras i meddelandet. Du kan sedan anta att MySQL ger en varning om vi använder INSERT IGNORE-klausulen.

Som du kan se från nedanstående utdata har vi bara två poster i den här tabellen - den första listan över värden i ovanstående fråga, som förbises.

>> VÄLJ * FRÅN data.minister;

Slutsats:

Vi har gjort alla nödvändiga exempel på INSERT IGNORE på dubbla värden via MySQL Workbench och MySQL kommandoradsklient.

Hur man förbättrar FPS i Linux?
FPS står för Bildrutor per sekund. FPS: s uppgift är att mäta bildfrekvensen i videouppspelningar eller spelprestanda. Med enkla ord betecknas antalet...
De bästa Oculus App Lab-spelen
Om du är Oculus-headsetägare måste du vara förtjust i sidoladdning. Sideladdning är processen för att installera icke-butiksinnehåll på ditt headset. ...
Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...