MySQL: com inserir una fila nova només si les dades no existeixen

Mysql Com Inserir Una Fila Nova Nomes Si Les Dades No Existeixen



MySQL és un famós RDBMS de codi obert per emmagatzemar dades a bases de dades. Inserir dades a les taules de la vostra base de dades és una tasca habitual. De vegades, els usuaris no volen inserir dades duplicades per eliminar la redundància. MySQL permet als usuaris inserir dades només si dades similars encara no existeixen.

Aquesta publicació tractarà sobre la inserció d'una fila nova només si les dades ja no existeixen a la taula MySQL. Abans de començar amb aquesta publicació, assegureu-vos que heu iniciat sessió al vostre servidor local MySQL i que heu triat una base de dades on voleu treballar.

Inseriu una fila nova només si les dades no existeixen mitjançant la instrucció 'INSERT IGNORE'.

Bé, la resposta a la pregunta del títol és bastant senzilla i directa. Simplement utilitzeu el ' INSERT ', juntament amb la paraula clau ' IGNORA ” Paraula clau. Això s'assegurarà que les dades noves o la consulta d'inserció només s'executen quan no es trobi cap entrada anterior de dades a MySQL. Per obtenir una breu visió general d'això, mireu la sintaxi següent:







INSERT IGNORA INTO [ taula - nom ] ( [ columna 1 - nom ] , [ columna 2 - nom ] , [ columna 3 - nom ] ) VALORS ( [ valor 1 ] , [ valor 2 ] , [ valor 3 ] ) ;

Vegem un exemple si l'usuari vol introduir un valor de fila ' 1 ”, “ Joan ' i ' Doe ' a la ' Client 'taula per a les columnes' Id ,” “ Nom ' i ' Cognom ” respectivament. Executeu aquesta consulta per inserir aquests valors si n'hi ha si ja no existeix cap fila amb aquests valors:



SELECCIONA * DE client;
INSERT IGNORA INTO Client ( Id , Nom , Cognom ) VALORS ( 1 , 'Joan' , 'Doe' ) ;

La sortida conté dues taules que mostren les dades de la taula abans i després d'executar la consulta. Podeu notar que no canvia res a la taula perquè la fila ja existia, de manera que MySQL ha ignorat correctament el procés d'inserció sense mostrar l'error:







Inseriu una nova fila només si les dades no existeixen utilitzant la clàusula 'ON NO EXISTIS'.

A MySQL, el ' ON NO EXISTEIX ” la clàusula impedeix la inserció de files si ja existeixen a la taula quan s'utilitza a la “ INSERTAR A ” sentència amb una subconsulta per definir una condició. Quan aquesta clàusula s'utilitza amb la subconsulta “ (SELECT * FROM [nom-taula] [nom-columna]=[expressió]); ” comprova si existeix una fila a la taula que compleixi la condició. Si existeix una fila, el ' ON NO EXISTEIX ” la clàusula retornarà un valor fals, i el “ SELECCIONA ” La declaració no retornarà cap fila. Com a resultat, la fila no s'inserirà a la taula. La sintaxi es proporciona a continuació:

INSERT INTO [ taula - nom ] ( [ columna 1 - nom ] , [ columna 2 - nom ] , [ columna 3 - nom ] )
SELECCIONA [ valor 1 ] , [ valor 2 ] , [ valor 3 ]
ON NO EXISTEIX ( SELECCIONA * DE [ taula - nom ] [ columna - nom ] = [ expressió ] ) ;

Vegem un exemple si l'usuari vol inserir una fila a la taula dels empleats que contingui valors ' 1 ”, “ Americanes ' i ' Henriot 'a les columnes' id ”, “ Nom de la companyia ' i ' Nom de contacte ” respectivament. Però només si una fila amb un identificador de ' 1 ” no es troba a la taula o no existeix. En aquest cas concret, la consulta es convertirà en:



SELECCIONA * DE empleat;

INSERT INTO empleat ( id , Nom de la companyia , Nom de contacte )
SELECCIONA 1 , 'Americanes' , 'Henriot'
ON NO EXISTEIX ( SELECCIONA * DE empleat ON id = 1 ) ;

La sortida mostra una nova fila que no s'insereix com a fila amb el ' id ' igual a ' 1 ” ja existia.

Inseriu una fila nova només si les dades no existeixen utilitzant la clàusula 'ON DUPLICATE KEY UPDATE'

Bé, una altra manera és utilitzar el ' EN ACTUALITZACIÓ DE CLAU DUPLICADA ” clàusula a MySQL. Com que aquesta clàusula s'utilitzarà amb la consulta 'INSERT INTO' formant una execució 'si-else'. Això significa que les dades dins de la taula només s'actualitzaran si són úniques. En cas contrari, no es produiria cap canvi. La sintaxi general per a això és la següent:

INSERT INTO [ taula - nom ] ( [ columna 1 - nom ] , [ columna 2 - nom ] , [ columna 3 - nom ] ) VALORS ( [ valor 1 ] , [ valor 2 ] , [ valor 3 ] )
ON DUPLICAR CLAU ACTUALITZACIÓ [ columna 1 - nom ] = [ columna 1 - nom ] ;

Vegem un exemple, per inserir valors a “ 2 ”, “ Pascale ”, “ Nixon ”, “ Londres ”, “ UK ” i “(171) 555-7788 'a la taula' Client 'per a les columnes' Id ”, “ Nom ”, “ Cognom ”, “ ciutat ”, “ país ' i ' telèfon ” respectivament. Si la fila encara no existeix, s'inserirà. En cas contrari, actualitzarà els valors on el ' Id=Id ” es compleix la condició. Executeu aquesta consulta:

SELECCIONA * DE client;
INSERT INTO Client ( Id , Nom , Cognom , ciutat , país , telèfon )
VALORS ( 2 , 'Pascale' , 'Nixon' , 'Londres' , 'UK' , '(171) 555-7788' )
ON DUPLICAR CLAU ACTUALITZACIÓ Id = Id;

Aquesta és la taula abans d'executar la consulta, podeu veure ' Id ' igual a ' 2 ' no existeix:

Després d'executar la consulta, aquesta consulta inserirà noves files a la taula:

Heu inserit correctament una fila nova, ja que les dades no existeixen abans d'executar la consulta.

Conclusió

A MySQL, inseriu una fila nova només si les dades encara no existeixen utilitzant el ' INSEReix IGNORA ' declaració o ' ON NO EXISTEIX ” clàusula a la “ INSERTAR A ” declaració. Una altra manera de fer-ho és utilitzar el ' EN ACTUALITZACIÓ DE CLAU DUPLICADA ” clàusula a la “ INSERTAR A ” declaració per actualitzar si la fila ja existeix. En cas contrari, afegiu una nova fila. La publicació parlava de com inserir una fila nova només si no existeixen dades.