MySQL MariaDB

MySQL Insert Ignorer duplikatnøkkel

MySQL Insert Ignorer duplikatnøkkel
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 duplikatposter og slette dem fra begge tabeller. Denne delen vil utdype hvordan du kan unngå at duplikatdata vises i en tabell og hvordan du kan eliminere nåværende duplikatposter. I denne veiledningen lærer du hvordan du bruker INSERT IGNORE-klausulen for å unngå feilen.

Syntaks:

Her er syntaksen for INSERT IGNORE-spørringen.

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

INSERT IGNORE via Workbench:

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

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

>> OPPRETT TABELL Ansatt (ID int PRIMÆR NØKKEL IKKE NULL, Navn varchar (50) IKKE NULL, Alder Varchar (50), Lønnsvarchar (50), UNIK (ID));

Ved opprettelsen kan du finne tabellen "ansatt" i listen under alternativet "Tabeller" under databasen "data".

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

Et nytt vindu åpnes med relevante spørsmål knyttet til postene vi har lagt inn ovenfor. Dette skjermbildet kan kalles et “Review” -skjermbilde. Hvis du vil endre noe, kan du gjøre det her. Ellers trykker du på Bruk-knappen for å utføre spørsmålene.

Som du kan se, har spørringen blitt utført vellykket, 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 rutenettet. Nå skal vi sette inn poster via spørringsområdet. I mellomtiden har vi satt inn duplikatposter denne gangen for å sjekke utdataene. Så vi har prøvd "INSERT" spørringen nedenfor, der vi har to lister med verdier. Begge verdilistene har samme verdi i kolonnen "ID". Velg spørringen og trykk på flash-tegnet for å utføre spørringen.

Søket vil ikke fungere 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ørsmålet ovenfor med INSERT IGNORE-klausulen og utfør den 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 i tabellen “Ansatt”. INSERT IGNORE-spørringen har fungert halvparten. Den satte inn den første listen over 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 en tabell. Prøv kommandoen nedenfor for å gjøre det. Vi har opprettet en tabell som heter 'minister' mens en av kolonnene har en UNIK begrensning. Det er klart at kolonnen "ID" bare aksepterer de unike verdiene og ikke duplikatverdiene.

>> OPPRETT TABELLdata.minister (Mid INT PRIMARY KEY UNIK IKKE NULL, Navn VARCHAR (45), By VARCHAR (45));

Søket fungerer riktig, og tabellen er opprettet. For å forstå INSERT IGNORE-klausulen, må du først se at den enkle INSERT-kommandoen fungerer. Hvis du bruker INSERT-kommandoen for å sette inn flere informasjonsdata i en tabell, suspenderer MySQL transaksjonen og genererer et unntak hvis det oppstår en feil under behandlingen. Som en konsekvens har ikke tabellen lagt til noen rader. La oss sette inn den første posten i tabellen "minister" ved hjelp av spørringen nedenfor. Spørringen vil fungere vellykket fordi tabellen for øyeblikket er tom, og det ikke er noen post å motstyre med.

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

Derfor, når vi sjekker tabellen, kan vi se at tabellen bare har 1 post lagt til av det første INSERT-spørringen.

>> VELG * FRA data.minister;

Omvendt, hvis du bruker INSERT IGNORE-setningen, blir de feil dataradene som utløser feilen oversett og vil bare angi 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 verdilisten en duplikatverdi “11” som den forrige spørringen. Mens den andre listen over verdier er unik, vil den vise en 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 gitt i spørringen ovenfor, som er oversett.

>> VELG * FRA data.minister;

Konklusjon:

Vi har gjort alle nødvendige eksempler på INSERT IGNORE på dupliserte verdier via MySQL Workbench og MySQL command-line client shell.

Topp 10 spill å spille på Ubuntu
Windows-plattformen har vært en av de dominerende plattformene for spill på grunn av den enorme andelen spill som utvikles i dag for å støtte Windows ...
5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...