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.