MySQL - Alleen een nieuwe rij invoegen als er geen gegevens zijn

Mysql Alleen Een Nieuwe Rij Invoegen Als Er Geen Gegevens Zijn



MySQL is een beroemd open-source RDBMS om gegevens op te slaan in databases. Het invoegen van gegevens in tabellen van uw database is een veelvoorkomende taak. Soms willen gebruikers geen dubbele gegevens invoegen om redundantie te elimineren. Met MySQL kunnen gebruikers alleen gegevens invoegen als er nog geen vergelijkbare gegevens bestaan.

Dit bericht bespreekt alleen het invoegen van een nieuwe rij als er nog geen gegevens in de MySQL-tabel staan. Voordat u met dit bericht begint, moet u ervoor zorgen dat u bent aangemeld bij uw lokale MySQL-server en een database hebt gekozen waar u wilt werken.

Voeg alleen een nieuwe rij in als er geen gegevens bestaan ​​met behulp van de instructie 'INSERT IGNORE'.

Welnu, het antwoord op de vraag in de titel is vrij eenvoudig en ongecompliceerd. Gebruik gewoon de ' INVOEGEN ' trefwoord samen met de ' NEGEREN 'Trefwoord. Dit zorgt ervoor dat de nieuwe gegevens of de invoegquery alleen worden uitgevoerd als er geen eerdere invoer van de gegevens in MySQL is gevonden. Bekijk de volgende syntaxis om een ​​kort overzicht hiervan te krijgen:







INVOEGEN NEGEREN NAAR BINNEN [ tafel - naam ] ( [ kolom1 - naam ] , [ kolom2 - naam ] , [ kolom3 - naam ] ) WAARDEN ( [ waarde1 ] , [ waarde2 ] , [ waarde3 ] ) ;

Laten we een voorbeeld bekijken als de gebruiker een rijwaarde wil invoeren ' 1 ”, “ John ' En ' Doe ' in de ' Klant ” tabel voor de kolommen “ ID kaart , '' Voornaam ' En ' Achternaam respectievelijk. Voer deze query uit om deze waarden in te voegen als er al geen rij met deze waarden bestaat:



SELECTEER * VAN Klant;
INVOEGEN NEGEREN NAAR BINNEN Klant ( ID kaart , Voornaam , Achternaam ) WAARDEN ( 1 , 'John' , 'Doe' ) ;

De uitvoer bevat twee tabellen met gegevens van de tabel voor en na het uitvoeren van de query. U kunt zien dat er niets verandert in de tabel omdat de rij al bestond, dus MySQL heeft het invoegproces met succes genegeerd zonder de fout weer te geven:







Voeg alleen een nieuwe rij in als gegevens niet bestaan ​​met behulp van de 'WHERE NOT EXISTS'-clausule

In MySQL is de “ WAAR BESTAAT NIET ”-clausule voorkomt het invoegen van rijen als deze al in de tabel voorkomen wanneer deze wordt gebruikt in de “ INVOEGEN IN ”-instructie met een subquery om een ​​voorwaarde te definiëren. Wanneer deze clausule wordt gebruikt met de subquery ' (SELECTEER * UIT [tabelnaam] [kolomnaam]=[expressie]); ” controleert of er een rij in de tabel bestaat die aan de voorwaarde voldoet. Als er een rij bestaat, wordt de ' WAAR NIET BESTAAT ” clausule zal een valse waarde retourneren, en de “ SELECTEER ”-instructie retourneert geen rijen. Als gevolg hiervan wordt de rij niet in de tabel ingevoegd. De syntaxis wordt hieronder gegeven:

INVOEGEN NAAR BINNEN [ tafel - naam ] ( [ kolom1 - naam ] , [ kolom2 - naam ] , [ kolom3 - naam ] )
SELECTEER [ waarde1 ] , [ waarde2 ] , [ waarde3 ]
WAAR NIET BESTAAT ( SELECTEER * VAN [ tafel - naam ] [ kolom - naam ] = [ uitdrukking ] ) ;

Laten we een voorbeeld bekijken als de gebruiker een rij wil invoegen in de werknemerstabel met waarden ' 1 ”, “ Amerikaans ' En ' Henriot ” in de kolommen “ ID kaart ”, “ Bedrijfsnaam ' En ' Contactnaam respectievelijk. Maar alleen als een rij met een id van ' 1 ” staat niet in de tabel of bestaat niet. In dat specifieke geval wordt de query:



SELECTEER * VAN medewerker;

INVOEGEN NAAR BINNEN medewerker ( ID kaart , Bedrijfsnaam , Contactnaam )
SELECTEER 1 , 'Amerikaans' , 'Henriot'
WAAR NIET BESTAAT ( SELECTEER * VAN medewerker WAAR ID kaart = 1 ) ;

De uitvoer geeft een nieuwe rij weer die niet is ingevoegd als de rij met de ' ID kaart ' gelijk aan ' 1 ' bestond al.

Voeg alleen een nieuwe rij in als er geen gegevens bestaan ​​met behulp van de 'ON DUPLICATE KEY UPDATE'-clausule

Welnu, een andere manier is om de ' BIJ DUBBELE SLEUTELUPDATE '-clausule in MySQL. Omdat deze clausule wordt gebruikt met de query 'INSERT INTO' die een 'if-else' -uitvoering vormt. Dit betekent dus dat de gegevens in de tabel alleen worden bijgewerkt als deze uniek zijn. Anders zou er geen verandering plaatsvinden. De algemene syntaxis hiervoor is als volgt:

INVOEGEN NAAR BINNEN [ tafel - naam ] ( [ kolom1 - naam ] , [ kolom2 - naam ] , [ kolom3 - naam ] ) WAARDEN ( [ waarde1 ] , [ waarde2 ] , [ waarde3 ] )
OP DUPLICAAT SLEUTEL UPDATE [ kolom1 - naam ] = [ kolom1 - naam ] ;

Laten we een voorbeeld bekijken om waarden in te voegen in ' 2 ”, “ Pascal ”, “ Nixon ”, “ Londen ”, “ VK ' En “(171) 555-7788 ' in de tafel ' Klant ” voor de kolommen “ ID kaart ”, “ Voornaam ”, “ Achternaam ”, “ stad ”, “ land ' En ' telefoon respectievelijk. Als de rij nog niet bestaat, wordt deze ingevoegd. Anders worden de waarden bijgewerkt waar de ' Id=Id ”voorwaarde voldoet. Voer deze query uit:

SELECTEER * VAN Klant ;
INVOEGEN NAAR BINNEN Klant ( ID kaart , Voornaam , Achternaam , stad , land , telefoon )
WAARDEN ( 2 , 'Pascale' , 'Nixon' , 'Londen' , 'VK' , '(171) 555-7788' )
OP DUPLICAAT SLEUTEL UPDATE ID kaart = ID kaart;

Dit is de tabel voordat u de query uitvoert, u kunt zien ' ID kaart ' gelijk aan ' 2 ' bestaat niet:

Na het uitvoeren van de query voegt deze query nieuwe rijen in de tabel in:

U hebt met succes een nieuwe rij ingevoegd, aangezien er geen gegevens bestaan ​​voordat de query wordt uitgevoerd.

Conclusie

Voeg in MySQL alleen een nieuwe rij in als er nog geen gegevens bestaan ​​door de ' INVOEGEN NEGEREN ” verklaring of “ WAAR NIET BESTAAT ” clausule in de “ INVOEGEN IN ' stelling. Een andere manier om dit te doen is met behulp van de ' BIJ DUBBELE SLEUTELUPDATE ” clausule in de “ INVOEGEN IN ”-instructie om bij te werken als de rij al bestaat. Voeg anders een nieuwe rij toe. Het bericht besprak alleen hoe een nieuwe rij kan worden ingevoegd als er geen gegevens zijn.