Aprende SQL · lección gratuita

Lección 35 · Insertar datos: INSERT

Resumen

INSERT agrega filas nuevas a una tabla. Es la primera operación del DML (Data Manipulation Language) que crea datos. En este curso trabajamos siempre sobre tablas temporales para no mutar la semilla, pero la sintaxis es idéntica sobre cualquier tabla.

Sintaxis / Conceptos

El orden de los valores debe coincidir posicionalmente con la lista de columnas, no con la definición de la tabla. Por eso INSERT INTO empleados (nombre, salario) VALUES ('Ana', 5000) funciona aunque salario esté antes o después en la tabla.

Errores comunes:

INSERT ... SELECT no lleva la palabra VALUES. El número y tipo de columnas del SELECT debe casar con la lista de destino. Es la herramienta clave para materializar subconjuntos o agregaciones en tablas nuevas.

SELECT id, empresa, pais, segmento FROM clientes ORDER BY id DESC LIMIT 5

Ejemplos

-- Tabla de trabajo idempotente (NO toca la semilla)
DROP TABLE IF EXISTS clientes_vip;
CREATE TABLE clientes_vip (
  id      INTEGER PRIMARY KEY,
  empresa TEXT NOT NULL,
  pais    TEXT NOT NULL
);

-- INSERT con columnas explícitas, multi-fila
INSERT INTO clientes_vip (id, empresa, pais) VALUES
  (1, 'TechNova', 'Perú'),
  (2, 'DataSphere', 'Colombia'),
  (3, 'BancoDigital', 'México');

-- INSERT ... SELECT: copiar clientes Enterprise reales de la semilla
INSERT INTO clientes_vip (id, empresa, pais)
SELECT id, empresa, pais FROM clientes
WHERE segmento = 'Enterprise' AND id > 10;

SELECT * FROM clientes_vip ORDER BY id;
💡 Siempre nombra las columnas en INSERT. Un INSERT INTO t VALUES (...) sin lista se rompe en silencio el día que alguien añade una columna a la tabla. Para insertar muchas filas, una sola sentencia multi-fila es más rápida que N sentencias.

Cheatsheet

FormaQué hace
INSERT INTO t (a,b) VALUES (1,2);Inserta una fila con columnas explícitas
INSERT INTO t (a,b) VALUES (1,2),(3,4);Inserta varias filas en una sentencia
INSERT INTO t VALUES (...);Inserta valores para TODAS las columnas (frágil)
INSERT INTO t (a,b) SELECT x,y FROM o;Inserta el resultado de una consulta
INSERT INTO t DEFAULT VALUES;Inserta una fila con todos los defaults

---

← Distribución: NTILE y percentilesActualizar datos: UPDATE →

Ver todas las lecciones de Aprende SQL →