MySQL Insert Ignore Duplicate -tasten

MySQL Insert Ignore Duplicate -tasten
Det er ofte motstridende data i tabeller eller utfallssett. Det er også tidkrevende å rette opp, og ofte må gjentatte poster unngås. Å identifisere dupliserte poster og slette dem fra begge tabellene er nødvendig. Denne delen vil utdype hvordan du kan unngå duplikatdata fra å vises inne i en tabell og hvordan du kan eliminere gjeldende duplikatposter. I denne guiden vil du lære å bruke INSERT IGNORE -leddet for å unngå feilen.

Syntaks:

Her er syntaksen for innsatsen Ignorer Query.

>> Sett inn ignorering i tabell_navn (col1, col2, col3) verdier (verdi_list), (verdi_list), (verdi_list);

Sett inn ignorering via Workbench:

Åpne MySQL Workbench 8.0 fra systemet ditt og koble det til databaseforekomsten.

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 Navigator Query -området for å lage denne tabellen. Velg hele spørringen og klikk på blitsskiltet for å utføre det.

>> Opprett tabellansatt (id int primær nøkkel ikke null, navn varchar (50) ikke null, alder varchar (50), lønn varchar (50), unik (id));

Ved opprettelse kan du finne tabellen "ansatt" i listen under muligheten til "tabeller" under databasen "Data".

I rutenettet kan du oppgi postene uten å skrive noen spørsmål. Så åpne nettet av tabellen "ansatt" og legg til noen poster i den som vist nedenfor. Vi har skrevet inn alle de unike postene uten duplikater. Trykk på 'Bruk' -knappen for å bruke endringene.

Et nytt vindu vil bli åpnet med de relevante spørsmålene relatert til postene vi har skrevet inn ovenfor. Denne skjermen kan kalles en "gjennomgang" -skjerm. Hvis du vil endre noe, kan du gjøre det her. Ellers trykker du på Apply -knappen for å utføre spørsmålene.

Som du kan se, har spørringen blitt utført med hell, og postene lagres i databasen og tabellen "ansatt". Det ville ha generert en feil hvis vi hadde lagt til noen duplikatverdi i kolonnen "ID". Trykk på "Fullfør" -knappen.

Dette handlet om nettvisningen. Nå vil vi sette inn poster via spørringsområdet. I mellomtiden har vi satt inn dupliserte poster denne gangen for å sjekke utdataene. Så vi har prøvd "Sett inn" spørringen, der vi har to lister med verdier. Begge lister med verdier har samme verdi ved kolonnen 'ID'. Velg spørringen og trykk på flash -tegnet for å utføre spørringen.

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

Prøv nå det samme spørringen ovenfor med INSERT IGNORE -leddet og utfør den som presentert.

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

Oppdater nettet av tabellen "ansatt". Innsatsen Ignore Query har fungert halvparten. Den satte inn den første listen over verdier i tabellen, men den andre listen over verdier er blitt ignorert på grunn av den gjentatte verdien “13”.

Sett inn ignorering via kommandolinjeskall:

For å forstå dette konseptet, la oss åpne MySQL-kommandolinjeklientskallet i systemet ditt. Når du spør, skriv 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 en tabell som heter 'Minister' mens en av kolonnene har en unik begrensning. Det er tydelig at kolonnen "ID" bare vil godta de unike verdiene og ikke duplikatverdiene.

>> Opprett tabelldata.Minister (midt primær nøkkel unik ikke null, navn varchar (45), by varchar (45));

Spørringen fungerer på riktig måte, og tabellen er opprettet. For å forstå innsatsen Ignorer -leddet, må du først se den enkle innsatskommandoen som fungerer. Hvis du bruker INSERT -kommandoen for å sette inn flere informasjonsdata i en tabell, suspenderer MySQL transaksjonen og genererer et unntak hvis det skjer en feil gjennom hele behandlingen. Som en konsekvens har ikke tabellen noen rader lagt til det. La oss sette inn den første posten i tabellen "minister" ved hjelp av spørringen nedenfor. Spørringen fungerer vellykket fordi tabellen for tiden er tom, og det er ingen registrering å motparre med.

Ettersom kolonnen "ID" er unik, vil den generere en feil når vi prøver under instruksjonen på kommandolinjeskallet. Dette fordi vi har lagt til verdien “11” i forrige spørring, og på grunn av den unike nøkkelen tillater den oss ikke å legge til den gjentatte verdien igjen.

Når vi sjekker tabellen, kan vi derfor se at tabellen bare har en post lagt til av den første innsatsspørsmålet.

>> Velg * fra data.minister;

Motsatt, hvis du bruker INSERT IGNORE -leddet, vil de uriktige datraene som utløser feilen bli oversett og vil bare legge inn de nøyaktige. I kommandoen nedenfor har vi brukt INSERT IGNORE -kommandoen for å unngå å legge gjentatte verdier i tabellen og overse feilen. Som du ser har den første listen over verdier en duplikatverdi “11” samme som i forrige spørring. Mens den andre listen over 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 -leddet, gir MySQL en advarsel.

Som du kan se fra utdataene nedenfor, har vi bare to poster i denne tabellen -The Fefirst List of Values ​​gitt i spørringen ovenfor, som blir oversett.

>> Velg * fra data.minister;

Konklusjon:

Vi har gjort alle nødvendige eksempler på innsats ignorerer dupliserte verdier via MySQL Workbench og MySQL Command-Line Client Shell.