Cómo usar INSERT en MySQL para añadir datos
Aprende a insertar uno o varios registros en MySQL con INSERT, INSERT INTO SELECT y ON DUPLICATE KEY UPDATE.
Actualizado el
INSERT en MySQL sirve para añadir registros nuevos a una tabla.
Sintaxis básica
INSERT INTO nombre_tabla (columna1, columna2)
VALUES (valor1, valor2);Ejemplo:
INSERT INTO clientes (nombre, email, telefono)
VALUES ('Pedro', '[email protected]', '123456789');Es recomendable indicar siempre las columnas. Así evitas errores si cambia el orden o la estructura de la tabla.
Si necesitas definir esa estructura, consulta cómo crear una tabla en MySQL.
Insertar varios registros a la vez
INSERT INTO clientes (nombre, email, telefono)
VALUES
('Pedro', '[email protected]', '123456789'),
('Ana', '[email protected]', '987654321'),
('Luis', '[email protected]', '456789123');Esta forma reduce las sentencias y los viajes al servidor respecto a ejecutar tres INSERT separados.
Insertar datos desde otra tabla
Usa INSERT INTO ... SELECT cuando quieras copiar datos desde otra tabla.
Consulta la guía de SELECT en MySQL para construir la consulta que proporciona las filas.
INSERT INTO clientes_vip (id, nombre, email, telefono)
SELECT id, nombre, email, telefono
FROM clientes
WHERE email LIKE '%.com';El número y el orden de las expresiones del SELECT deben corresponder con las columnas destino, y cada valor debe ser compatible con su tipo y con las restricciones de la tabla.
Insertar o actualizar si ya existe
El comportamiento de insertar o actualizar depende de que la tabla tenga una clave primaria o una restricción UNIQUE que detecte el duplicado. Si necesitas ese caso, consulta la guía de INSERT ... ON DUPLICATE KEY UPDATE.
Errores comunes
- Omitir columnas obligatorias que no tienen valor por defecto.
- Insertar un valor duplicado en una clave primaria o en una restricción única.
- Insertar una clave foránea que no existe en la tabla relacionada.
- Pasar un número de valores distinto al de las columnas indicadas, o en un orden incorrecto.
- Insertar un valor incompatible con el tipo de dato de la columna.
Antes de lanzar un INSERT en producción, comprueba la estructura de la tabla y usa consultas parametrizadas desde tu aplicación para evitar inyección SQL.
Preguntas frecuentes
¿Cómo obtener el ID generado tras un INSERT?
Ejecuta LAST_INSERT_ID() inmediatamente después del INSERT y en la misma conexión o sesión:
INSERT INTO clientes (nombre, email, telefono)
VALUES ('Pedro', '[email protected]', '123456789');
SELECT LAST_INSERT_ID();Devuelve el primer valor AUTO_INCREMENT generado correctamente por la última inserción exitosa. Si el INSERT añade varias filas, devuelve el ID de la primera, no todos los IDs.