MySQL: cómo insertar una nueva fila solo si los datos no existen

Mysql Como Insertar Una Nueva Fila Solo Si Los Datos No Existen



MySQL es un famoso RDBMS de código abierto para almacenar datos en bases de datos. Insertar datos en tablas de su base de datos es una tarea común. A veces, los usuarios no desean insertar datos duplicados para eliminar la redundancia. MySQL permite a los usuarios insertar datos solo si no existen datos similares.

Esta publicación discutirá la inserción de una nueva fila solo si los datos aún no existen en la tabla MySQL. Antes de comenzar con esta publicación, asegúrese de haber iniciado sesión en su servidor local MySQL y haber elegido una base de datos en la que desea trabajar.

Inserte una nueva fila solo si los datos no existen utilizando la instrucción 'INSERT IGNORE'

Bueno, la respuesta a la pregunta en el título es bastante simple y directa. Simplemente use el “ INSERTAR ” palabra clave junto con el “ IGNORAR ” Palabra clave. Esto asegurará que los nuevos datos o la consulta de inserción solo se ejecuten cuando no se encuentre una entrada anterior de los datos en MySQL. Para obtener una breve descripción general de esto, eche un vistazo a la siguiente sintaxis:







INSERTAR IGNORAR EN [ mesa - nombre ] ( [ columna1 - nombre ] , [ columna2 - nombre ] , [ columna3 - nombre ] ) VALORES ( [ valor1 ] , [ valor2 ] , [ valor3 ] ) ;

Veamos un ejemplo si el usuario quiere ingresar un valor de fila “ 1 ”, “ John ' y ' Gama ' en el ' Cliente ” tabla para las columnas “ Identificación ,” “ Nombre de pila ' y ' Apellido ” respectivamente. Ejecute esta consulta para insertar estos valores, si los hay, si ya no existe una fila con estos valores:



SELECCIONAR * DE Cliente;
INSERTAR IGNORAR EN Cliente ( Identificación , Nombre de pila , Apellido ) VALORES ( 1 , 'John' , 'Gama' ) ;

La salida contiene dos tablas que muestran datos de la tabla antes y después de ejecutar la consulta. Puede notar que nada cambia en la tabla porque la fila ya existía, por lo que MySQL ignoró con éxito el proceso de inserción sin mostrar el error:







Inserte una nueva fila solo si los datos no existen usando la cláusula 'DONDE NO EXISTE'

En MySQL, el “ DÓNDE NO EXISTE La cláusula ” evita la inserción de filas si ya existen en la tabla cuando se usa en el “ INSERTAR EN ” declaración con una subconsulta para definir una condición. Cuando esta cláusula se usa con la subconsulta “ (SELECT * FROM [nombre-tabla] [nombre-columna]=[expresión]); ” comprueba si existe una fila en la tabla que cumpla la condición. Si existe una fila, el ' DONDE NO EXISTE ” cláusula devolverá un valor falso, y el “ SELECCIONAR La instrucción ” no devolverá ninguna fila. Como resultado, la fila no se insertará en la tabla. La sintaxis se proporciona a continuación:

INSERTAR EN [ mesa - nombre ] ( [ columna1 - nombre ] , [ columna2 - nombre ] , [ columna3 - nombre ] )
SELECCIONAR [ valor1 ] , [ valor2 ] , [ valor3 ]
DÓNDE NO EXISTE ( SELECCIONAR * DE [ mesa - nombre ] [ columna - nombre ] = [ expresión ] ) ;

Veamos un ejemplo si el usuario quiere insertar una fila en la tabla de empleados que contenga valores “ 1 ”, “ Americanas ' y ' Henriot ” en las columnas “ identificación ”, “ Nombre de empresa ' y ' Nombre de contacto ” respectivamente. Pero solo si una fila con una identificación de ' 1 ” no se encuentra en la tabla o no existe. En ese caso particular, la consulta se convertirá en:



SELECCIONAR * DE empleado;

INSERTAR EN empleado ( identificación , Nombre de empresa , Nombre de contacto )
SELECCIONAR 1 , 'Americanas' , 'Henriot'
DÓNDE NO EXISTE ( SELECCIONAR * DE empleado DÓNDE identificación = 1 ) ;

La salida muestra una nueva fila que no se inserta como la fila con el ' identificación ' igual a ' 1 ” ya existía.

Inserte una nueva fila solo si los datos no existen usando la cláusula 'ON ACTUALIZACIÓN DE CLAVE DUPLICADA'

Bueno, otra forma es usar el ' EN ACTUALIZACIÓN DE CLAVE DUPLICADA Cláusula ” en MySQL. Como esta cláusula se utilizará con la consulta 'INSERT INTO' formando una ejecución 'if-else'. Entonces, esto significa que los datos dentro de la tabla solo se actualizarán si son únicos. De lo contrario, no se produciría ningún cambio. La sintaxis general para esto es la siguiente:

INSERTAR EN [ mesa - nombre ] ( [ columna1 - nombre ] , [ columna2 - nombre ] , [ columna3 - nombre ] ) VALORES ( [ valor1 ] , [ valor2 ] , [ valor3 ] )
EN DUPLICAR LLAVE ACTUALIZAR [ columna1 - nombre ] = [ columna1 - nombre ] ;

Veamos un ejemplo, para insertar valores en “ 2 ”, “ Pascale ”, “ Nixon ”, “ Londres ”, “ Reino Unido ' y “(171) 555-7788 ' en la mesa ' Cliente ” para las columnas “ Identificación ”, “ Nombre de pila ”, “ Apellido ”, “ ciudad ”, “ país ' y ' teléfono ” respectivamente. Si la fila aún no existe, se insertará. De lo contrario, actualizará los valores donde el “ identificación=identificación ” condición cumple. Ejecute esta consulta:

SELECCIONAR * DE Cliente ;
INSERTAR EN Cliente ( Identificación , Nombre de pila , Apellido , ciudad , país , teléfono )
VALORES ( 2 , 'Pascale' , 'Nixon' , 'Londres' , 'REINO UNIDO' , '(171) 555-7788' )
EN DUPLICAR LLAVE ACTUALIZAR Identificación = Identificación;

Esta es la tabla antes de ejecutar la consulta, se puede ver “ Identificación ' igual a ' 2 ' no existe:

Después de ejecutar la consulta, esta consulta insertará nuevas filas en la tabla:

Ha insertado con éxito una nueva fila, ya que los datos no existen antes de ejecutar la consulta.

Conclusión

En MySQL, inserte una nueva fila solo si los datos aún no existen utilizando el ' INSERTAR IGNORAR ” declaración o “ DONDE NO EXISTE ” cláusula en el “ INSERTAR EN ' declaración. Otra forma de hacer esto es usando el “ EN ACTUALIZACIÓN DE CLAVE DUPLICADA ” cláusula en el “ INSERTAR EN ” declaración para actualizar si la fila ya existe. De lo contrario, agregue una nueva fila. La publicación discutió cómo insertar una nueva fila solo si no existen datos.