MySQL Sett inn Ignorer duplikatnøkkel

Mysql Insert Ignore Duplicate Key



Det er ofte motstridende data i tabeller eller utfallssett. Det er også tidkrevende å korrigere, og ofte må gjentatte poster unngås. Det er nødvendig å identifisere dupliserte poster og slette dem fra begge tabellene. Denne delen vil utdype hvordan du kan unngå at duplikatdata vises i en tabell og hvordan du kan eliminere gjeldende duplikatposter. I denne veiledningen lærer du hvordan du bruker INSERT IGNORE -leddet for å unngå feilen.

Syntaks:

Her er syntaksen for INSERT IGNORE -spørringen.







>>INSERT IGNORE INTO table_name(kol1, kol2, kol3)VERDIER(verdi_liste),(verdi_liste),(verdi_liste);

INSERT IGNORE via Workbench:

Åpne MySQL Workbench 8.0 fra systemet og koble den til databaseinstansen.





I kommandoområdet må du opprette en tabell Ansatt med fire kolonner der en av dem må spesifiseres som UNIK. Prøv spørringen nedenfor i søkeområdet for å opprette denne tabellen. Velg hele spørringen og klikk på flash -tegnet for å utføre det.





>>LAG TABELL Ansatt(ID int PRIMÆR NØKKEL IKKE NULL, Navn varchar(femti)NOT NULL, Age Varchar(femti), Lønn varchar(femti), UNIKT(ID));

Ved opprettelsen kan du finne tabellmedarbeideren i listen under alternativet Tabeller under databasedataene.



I rutenettet kan du skrive inn postene uten å skrive noen forespørsel. Så, åpne rutenettet for bordmedarbeider og legg til noen poster i den som vist nedenfor. Vi har lagt inn alle de unike postene uten duplikater. Trykk på 'Apply' -knappen for å bruke endringene.

Et nytt vindu åpnes med relevante spørsmål knyttet til postene vi har lagt inn ovenfor. Denne skjermen kan kalles en Review -skjerm. Hvis du vil endre noe, kan du gjøre det her. Ellers trykker du på Bruk -knappen for å utføre spørringene.

Som du kan se, har spørringen blitt utført og postene blir lagret i databasen og tabellen Ansatt. Det ville ha generert en feil hvis vi hadde lagt til en duplikatverdi i kolonne -ID -en. Trykk på Fullfør -knappen.

Dette handlet om rutenettet. Nå vil vi sette inn poster via søkeområdet. I mellomtiden har vi satt inn dupliserte poster denne gangen for å kontrollere utgangen. Så vi har prøvd INSERT -spørringen nedenfor, der vi har to verdilister. Begge verdilister har samme verdi i kolonnen ‘ID’. Velg spørringen og trykk på blitsskiltet for å utføre spørringen.

Spørringen vil ikke fungere riktig, og den vil generere en feil på grunn av de dupliserte verdiene i INSERT -kommandoen som vist på bildet.

Prøv nå det samme spørsmålet ovenfor med INSERT IGNORE -leddet og kjør det som presentert.

Du kan se at det ikke genererer en feil i utdataområdet, men det gir en advarsel om at kommandoen inneholder dupliserte verdier.

Oppdater rutenettet for tabellen Ansatt. INSERT IGNORE -spørringen har fungert halvparten. Den satte inn den første listen med verdier i tabellen, men den andre listen over verdier har blitt ignorert på grunn av den gjentatte verdien 13.

INSERT IGNORE via Command-Line Shell:

For å forstå dette konseptet, la oss åpne MySQL-kommandolinjeklientskallet i systemet ditt. Når du spør, skriver du inn MySQL -passordet ditt for å begynne å jobbe med det.

Nå er det på tide å lage et bord. Prøv kommandoen nedenfor for å gjøre det. Vi har laget et bord som heter 'minister' mens en av kolonnene har en unik begrensning. Det er klart at kolonne -ID -en bare godtar de unike verdiene og ikke de dupliserte verdiene.

>>OPPRETT TABELL data. Administrere(Midt PRIMÆR NØKKEL UNIK IKKE NULL, Navn VARCHAR(Fire fem), City VARCHAR(Fire fem));

Spørringen fungerer som den skal, og tabellen er opprettet. For å forstå INSERT IGNORE -klausulen må du først se den enkle INSERT -kommandoen fungerer. Hvis du bruker INSERT -kommandoen til å sette inn flere informasjonsdata i en tabell, suspenderer MySQL transaksjonen og genererer et unntak hvis det skjer en feil under hele behandlingen. Som en konsekvens har tabellen ikke lagt til noen rader. La oss sette inn den første posten i tabellministeren ved å bruke spørringen nedenfor. Spørringen fungerer som den skal, fordi tabellen for øyeblikket er tom, og det ikke er noen post å motstyre med.

Siden kolonne-IDen er UNIK, vil den generere en feil når vi prøver instruksjonene nedenfor på kommandolinjeskallet. Dette er fordi vi har lagt til verdien 11 i den forrige spørringen, og på grunn av den UNIKE nøkkelen tillater det oss ikke å legge til den gjentatte verdien igjen.

Derfor, ved å kontrollere tabellen, kan vi se at tabellen bare har 1 post lagt til av den første INSERT -spørringen.

>>PLUKKE UT*FRA data.minister;

Omvendt, hvis du bruker INSERT IGNORE -leddet, blir de feilaktige dataradene som utløser feilen oversett og bare de nøyaktige. I kommandoen nedenfor har vi brukt INSERT IGNORE -kommandoen for å unngå å legge til gjentatte verdier i tabellen og overse feilen. Som du kan se, har den første listen med verdier en duplikatverdi 11 den samme som i den forrige spørringen. Selv om den andre listen med verdier er unik, vil den vise 1 post satt inn i tabellen, som er den andre listen over verdier. MySQL indikerer også at bare 1 post er satt inn, og 1 advarsel genereres i meldingen. Du kan da anta at hvis vi bruker INSERT IGNORE -klausulen, gir MySQL en advarsel.

Som du kan se fra utdataene nedenfor, har vi bare to poster i denne tabellen - den første listen over verdier som er gitt i spørringen ovenfor, som blir oversett.

>>PLUKKE UT*FRA data.minister;

Konklusjon:

Vi har gjort alle nødvendige eksempler på INSERT IGNORE på dupliserte verdier via MySQL Workbench og MySQL kommandolinjeklientskall.