MySQL Indsæt Ignorer duplikatnøgle

Mysql Insert Ignore Duplicate Key



Der er ofte modstridende data i tabeller eller udfaldssæt. Det er også tidskrævende at rette, og ofte skal gentagne registreringer undgås. Det er nødvendigt at identificere dublerede poster og slette dem fra begge tabeller. Dette afsnit vil uddybe, hvordan du undgår, at dublerede data vises i en tabel, og hvordan du fjerner aktuelle dubletter. I denne vejledning lærer du, hvordan du bruger INSERT IGNORE -klausulen for at undgå fejlen.

Syntaks:

Her er syntaksen for forespørgslen INSERT IGNORE.







>>INSERT IGNORE INTO table_name(col1, col2, col3)VÆRDIER(værdi_liste),(værdi_liste),(værdi_liste);

INSERT IGNORE via Workbench:

Åbn dit MySQL Workbench 8.0 fra dit system, og tilslut det til databaseinstansen.





I kommandoområdet skal du oprette en tabel Medarbejder med fire kolonner, hvor en af ​​dem skal angives som UNIK. Prøv nedenstående forespørgsel i navigatorforespørgselsområdet for at oprette denne tabel. Vælg hele forespørgslen, og klik på flash -tegnet for at udføre den.





>>OPRET TABEL Medarbejder(ID int PRIMÆR NØGLE IKKE NULL, Navn varchar(halvtreds)NOT NULL, Age Varchar(halvtreds), Løn varchar(halvtreds), UNIKT(ID));

Ved oprettelse kan du finde bordmedarbejderen på listen under indstillingen Tabeller under databasedataene.



I gittervisningen kan du indtaste posterne uden at skrive nogen forespørgsel. Så åbn gittervisningen for bordmedarbejderen og tilføj nogle poster i den som vist nedenfor. Vi har indtastet alle de unikke optegnelser uden dubletter. Tryk på knappen 'Anvend' for at anvende ændringerne.

Et nyt vindue åbnes med de relevante forespørgsler vedrørende de poster, vi har indtastet ovenfor. Denne skærm kan kaldes en Review -skærm. Hvis du vil ændre noget, kan du gøre det her. Ellers skal du trykke på knappen Anvend for at udføre forespørgslerne.

Som du kan se, er forespørgslen udført med succes, og posterne gemmes i databasen og dens tabel Medarbejder. Det ville have genereret en fejl, hvis vi havde tilføjet en dobbeltværdi i kolonne -id'et. Tryk på knappen Afslut.

Det hele handlede om gittervisningen. Nu vil vi indsætte poster via forespørgselsområdet. I mellemtiden har vi indsat dubletter til denne gang for at kontrollere output. Så vi har prøvet nedenstående INSERT -forespørgsel, hvor vi har to værdilister. Begge værdilister har den samme værdi i kolonnen 'ID'. Vælg forespørgslen, og tryk på flash -tegnet for at udføre forespørgslen.

Forespørgslen fungerer ikke korrekt, og den genererer en fejl på grund af de dublerede værdier i kommandoen INSERT som vist på billedet.

Prøv nu den samme forespørgsel ovenfor med INSERT IGNORE -klausulen og udfør den som præsenteret.

Du kan se, at det ikke genererer en fejl i outputområdet, men det giver en advarsel om, at kommandoen indeholder dublerede værdier.

Opdater gittervisningen for tabellen Medarbejder. INSERT IGNORE -forespørgslen har virket halvt. Den indsatte den første værdiliste i tabellen, men den anden liste med værdier er blevet ignoreret på grund af den gentagne værdi 13.

INSERT IGNORE via Command-Line Shell:

For at forstå dette koncept, lad os åbne MySQL-kommandolinjeklientskallen i dit system. Når du spørger, skal du skrive din MySQL -adgangskode for at begynde at arbejde på den.

Nu er det tid til at lave et bord. Prøv nedenstående kommando for at gøre det. Vi har oprettet et bord med navnet 'minister', mens en af ​​dets spalter har en UNIK begrænsning. Det er klart, at kolonne -id'et kun accepterer de unikke værdier og ikke de dobbelte værdier.

>>OPRET TABEL data. Administrere(Midt INT PRIMÆR NØGLE UNIK IKKE NULL, Navn VARCHAR(Fire. Fem), By VARCHAR(Fire. Fem));

Forespørgslen fungerer korrekt, og tabellen er blevet oprettet. For at forstå INSERT IGNORE -klausulen skal du først se den simple INSERT -kommando fungere. Hvis du bruger kommandoen INSERT til at indsætte flere informationsdata i en tabel, suspenderer MySQL transaktionen og genererer en undtagelse, hvis der sker en fejl under hele behandlingen. Som en konsekvens har tabellen ikke tilføjet nogen rækker. Lad os indsætte den første rekord i bordministeren ved hjælp af den nedenfor viste forespørgsel. Forespørgslen vil fungere med succes, fordi tabellen i øjeblikket er tom, og der ikke er nogen registrering at tage imod.

Da kolonne-id'et er UNIKT, genererer det en fejl, når vi prøver nedenstående instruktion på kommandolinjeskallen. Dette er fordi vi har tilføjet værdien 11 i den forrige forespørgsel, og på grund af UNIQUE -nøglen tillader det os ikke at tilføje den gentagne værdi igen.

Derfor kan vi ved at kontrollere tabellen se, at tabellen kun har 1 post tilføjet af den første INSERT -forespørgsel.

>>VÆLG*FRA data.minister;

Omvendt, hvis du bruger INSERT IGNORE -klausulen, overses de forkerte datarækker, der udløser fejlen, og indtaster kun de nøjagtige. I nedenstående kommando har vi brugt kommandoen INSERT IGNORE for at undgå at tilføje gentagne værdier i tabellen og overse fejlen. Som du kan se, har den første liste med værdier en duplikatværdi 11, der er den samme som i den forrige forespørgsel. Mens den anden værdiliste er unik, viser den 1 post indsat i tabellen, som er den anden liste med værdier. MySQL angiver også, at der kun er indsat 1 post, og der genereres 1 advarsel i meddelelsen. Du kan derefter antage, at hvis vi bruger INSERT IGNORE -klausulen, giver MySQL en advarsel.

Som du kan se fra nedenstående output, har vi kun to poster i denne tabel - den første liste over værdier i ovenstående forespørgsel, som overses.

>>VÆLG*FRA data.minister;

Konklusion:

Vi har udført alle de nødvendige eksempler på INSERT IGNORE på dublerede værdier via MySQL Workbench og MySQL kommandolinjeklient shell.