INSERT en MySQL: cómo evitar duplicados
Clase 11 de 24 • Curso de SQL y MySQL 2018
Contenido del curso
CREATE
INSERT
Bash y archivos SQL
SELECT
Consultas en MySQL
Contenido Bonus
Aprende a insertar datos de forma eficiente y sin errores en bases de datos relacionales con SQL. Aquí verás cómo usar la sentencia INSERT, aprovechar la clave primaria autoincremental y ejecutar cargas múltiples con buenas prácticas que ahorran tiempo y evitan duplicados.
¿Qué resuelve INSERT en bases de datos relacionales?
La prioridad es evitar duplicar información. Si dos libros comparten autor, no repites el nombre; guardas al autor una sola vez y referencias por ID. Esto ahorra espacio, mejora el rendimiento y habilita más análisis. También clarifica relaciones entre tablas como autores, libros, clientes y operations.
- Usa ID para referenciar entidades. Evita cadenas repetidas.
- Define una clave primaria autoincremental para facilitar inserciones.
- Mantén las tablas “delgadas”: una sola fuente de verdad por entidad.
¿Por qué evitar duplicar información con IDs?
- Evitas inconsistencias al actualizar datos.
- Reduces almacenamiento y CPU en consultas.
- Facilitas relaciones n:1 entre tablas.
¿Qué columnas y valores define la sentencia INSERT?
La forma general es: INSERT INTO tabla (columnas) VALUES (valores). Puedes listar columnas o dejarlas implícitas. Si las omites, los valores deben respetar el orden de las columnas de la tabla.
¿Cómo afecta la clave primaria autoincremental?
Cuando el ID es autoincremental, no necesitas enviarlo. Incluso si envías el ID vacío (''), según la configuración podría aparecer un warning, pero la base asignará el siguiente valor. Esto puede variar por manejador e instalación, así que prueba y observa el comportamiento.
¿Cómo escribir INSERT con ejemplos prácticos en SQL?
A continuación, tres patrones útiles para poblar la tabla authors con columnas típicas: author_id, name, nationality.
¿Cómo insertar una fila especificando columnas?
Especificas solo lo necesario; el ID autoincremental se genera solo.
INSERT INTO authors (name, nationality)
VALUES ('Gabriel García Márquez', 'colombiano');
- Inserta una tupla clara y mínima.
- Reduce errores por desorden de columnas.
¿Cómo insertar sin indicar columnas?
Si omites columnas, debes respetar el orden de la tabla y enviar todos los valores. El ID puede ir vacío para que se autogenere, considerando posibles warnings.
INSERT INTO authors
VALUES ('', 'Juan Gabriel Vázquez', 'colombiano');
- Útil para cargas rápidas.
- Verifica warnings si el ID es cadena vacía.
Para validar:
SELECT * FROM authors;
¿Cómo insertar múltiples filas en una sola sentencia?
Separa cada fila con comas. Ideal para cargas múltiples y menos viajes al servidor.
INSERT INTO authors (name, nationality)
VALUES
('Julio Cortázar', 'argentino'),
('Isabel', 'CHI'),
('Octavio Paz', 'mexicano'),
('Juan Carlos Onetti', 'uruguayo');
Buenas prácticas para lotes: - Usa chunks de 50 inserciones máximo por sentencia. - Si hay fallos de conexión, solo pierdes el último lote. - Configura límites según tu entorno.
¿Qué consideraciones y advertencias debes tener?
La inserción es segura si controlas columnas, tipos y lotes. Aun así, hay matices importantes para evitar errores y entender el comportamiento del motor.
¿Cómo manejar warnings y diferencias entre manejadores?
- Un ID vacío ('') puede provocar warning “no es un entero”, pero asignar el autoincrement funciona según la instalación.
- El comportamiento varía por manejador y configuración.
- Explora: prueba, observa y aprende. Como dijo Steve Jobs: "Stay foolish, stay hungry".
¿Qué pasa con el ID al borrar e insertar?
- El autoincrement no reutiliza IDs eliminados.
- Si borras el 7 y vuelves a insertar, tomará el 8.
- Esto mantiene la unicidad y el historial de crecimiento.
¿Se puede asignar manualmente un ID autoincremental?
Sí, puedes forzarlo si el ID no existe aún. Útil para casos puntuales con control total de la llave.
INSERT INTO authors (author_id, name)
VALUES (16, 'Pablo Neruda');
- Inserta la fila con ID 16 si no está tomado.
- Si existe una llave o índice único repetido, el motor lo marcará; más adelante puedes manejar la colisión con estrategias de actualización.
¿Quieres que revisemos tus sentencias o cargar tus datos en bloques óptimos? Comparte tus dudas y ejemplos en los comentarios.