MySQL MariaDB

MySQL Invoegen Negeer dubbele sleutel

MySQL Invoegen Negeer dubbele sleutel
Er zijn vaak tegenstrijdige gegevens in tabellen of uitkomstsets. Het is ook tijdrovend om te corrigeren, en vaak moeten herhaalde records worden vermeden. Het is noodzakelijk om dubbele records te identificeren en ze uit beide tabellen te verwijderen. In deze sectie wordt uitgelegd hoe u kunt voorkomen dat dubbele gegevens in een tabel verschijnen en hoe u huidige dubbele records kunt verwijderen. In deze handleiding leert u hoe u de INSERT IGNORE-component gebruikt om de fout te voorkomen.

Syntaxis:

Hier is de syntaxis voor de INSERT IGNORE-query.

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

INSERT IGNORE via Workbench:

Open uw MySQL Workbench 8.0 van uw systeem en verbind het met de database-instantie.

In het commandogebied moet u een tabel "Werknemer" maken met vier kolommen waarvan een ervan moet worden gespecificeerd als "UNIEK". Probeer de onderstaande query in het zoekgebied van de navigator om deze tabel te maken. Selecteer de hele query en klik op het flash-teken om het uit te voeren.

>> MAAK TABEL Werknemer (ID int PRIMARY KEY NOT NULL, Naam varchar(50) NOT NULL, Leeftijd Varchar(50), Salaris varchar(50), UNIEK (ID));

Na het aanmaken vindt u de tabel "werknemer" in de lijst onder de optie "Tabellen" onder de database "gegevens".

In de rasterweergave kunt u de records invoeren zonder een zoekopdracht te typen. Open dus de rasterweergave van de tabel "werknemer" en voeg er enkele records aan toe, zoals hieronder weergegeven:. We hebben alle unieke records ingevoerd zonder enige duplicaten. Klik op de knop 'Toepassen' om de wijzigingen toe te passen.

Er wordt een nieuw venster geopend met de relevante vragen met betrekking tot de records die we hierboven hebben ingevoerd. Dit scherm kan een "Review"-scherm worden genoemd. Als je iets wilt veranderen, kun je dat hier doen. Druk anders op de knop Toepassen om de zoekopdrachten uit te voeren.

Zoals u kunt zien, is de query met succes uitgevoerd en zijn de records opgeslagen in de database en de tabel "Werknemer". Het zou een fout hebben gegenereerd als we een dubbele waarde hadden toegevoegd in de kolom "ID". Tik op de knop "Voltooien".

Dit ging allemaal over de rasterweergave. Nu gaan we records invoegen via het querygebied. Ondertussen hebben we deze keer dubbele records ingevoegd om de uitvoer te controleren. Dus hebben we de onderstaande "INSERT"-query geprobeerd, waar we twee lijsten met waarden hebben:. Beide zoeklijsten hebben dezelfde waarde bij de kolom 'ID'. Selecteer de zoekopdracht en druk op het flash-teken om de zoekopdracht uit te voeren.

De query werkt niet correct en genereert een fout vanwege de dubbele waarden in de opdracht INSERT zoals weergegeven in de afbeelding.

Probeer nu dezelfde bovenstaande query met de INSERT IGNORE-component en voer deze uit zoals gepresenteerd.

U kunt zien dat het geen fout genereert in het uitvoergebied, maar het geeft een waarschuwing dat het commando dubbele waarden bevat.

Vernieuw de rasterweergave van tabel "Werknemer". De INSERT IGNORE-query heeft de helft gewerkt. Het heeft de eerste lijst met waarden in de tabel ingevoegd, maar de tweede lijst met waarden is genegeerd vanwege de herhaalde waarde "13".

INSERT IGNORE via Command-Line Shell:

Laten we, om dit concept te begrijpen, de MySQL-opdrachtregelclientshell in uw systeem openen. Typ desgevraagd uw MySQL-wachtwoord om eraan te werken.

Nu is het tijd om een ​​tabel te maken. Probeer de onderstaande opdracht om dit te doen. We hebben een tabel gemaakt met de naam 'minister' terwijl een van de kolommen een UNIEKE beperking heeft. Het is duidelijk dat de kolom "ID" alleen de unieke waarden accepteert en niet de dubbele waarden.

>> CRE TER TABEL gegevens.minister (Mid INT PRIMAIRE SLEUTEL UNIEK NIET NULL, Naam VARCHAR(45), Plaats VARCHAR(45));

De query werkt naar behoren en de tabel is gemaakt. Om de INSERT IGNORE-clausule te begrijpen, moet u eerst de werking van het eenvoudige INSERT-commando zien. Als u het INSERT-commando gebruikt om verschillende informatiegegevens in een tabel in te voegen, schort MySQL de transactie op en genereert het een uitzondering als er tijdens de verwerking een fout optreedt. Als gevolg hiervan zijn er geen rijen aan de tabel toegevoegd. Laten we het eerste record in de tabel "minister" invoegen met behulp van de hieronder weergegeven query. De query zal met succes werken omdat de tabel momenteel leeg is en er geen record is om mee samen te werken.

Omdat de kolom "ID" UNIEK is, zal het een fout genereren wanneer we de onderstaande instructie op de opdrachtregelshell proberen. Dit komt omdat we de waarde "11" in de vorige query hebben toegevoegd en vanwege de UNIQUE-sleutel kunnen we de herhaalde waarde niet opnieuw toevoegen.

Daarom kunnen we bij het controleren van de tabel zien dat aan de tabel slechts 1 record is toegevoegd door de eerste INSERT-query.

>> KIES * UIT gegevens.minister;

Omgekeerd, als u de INSERT IGNORE-component gebruikt, worden de onjuiste gegevensrijen die de fout veroorzaken over het hoofd gezien en worden alleen de juiste ingevoerd. In de onderstaande opdracht hebben we de opdracht INSERT IGNORE gebruikt om te voorkomen dat herhaalde waarden aan de tabel worden toegevoegd en de fout over het hoofd te zien. Zoals u kunt zien, heeft de eerste lijst met waarden een dubbele waarde "11" hetzelfde als in de vorige zoekopdracht. Hoewel de tweede lijst met waarden uniek is, toont deze 1 record die in de tabel is ingevoegd, wat de tweede lijst met waarden is. MySQL geeft ook aan dat er slechts 1 record is ingevoegd en dat er 1 waarschuwing in het bericht wordt gegenereerd. Je mag dan aannemen dat als we de INSERT IGNORE-clausule gebruiken, MySQL een waarschuwing geeft.

Zoals u kunt zien aan de hand van de onderstaande uitvoer, hebben we slechts twee records in deze tabel: de eerste lijst met waarden in de bovenstaande query, die over het hoofd wordt gezien.

>> KIES * UIT gegevens.minister;

Conclusie:

We hebben alle noodzakelijke voorbeelden van INSERT IGNORE op dubbele waarden gedaan via MySQL Workbench en MySQL-opdrachtregelclientshell.

Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...
Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...