Saltar al contenido principal
eLearner.app
Módulo 8 · Lección 1 de 429/57 en el curso~10 min
Lecciones del módulo (1/4)

Insertar datos: INSERT

Hasta ahora has estado leyendo datos. Es hora de escribir algunos. CÓDIGOPH0 es el comando que agrega nuevas filas a una tabla.

La sintaxis básica

SQL
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);

Ejemplo en nuestro conjunto de datos:

SQL
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Marco', 'Bianchi', 'marco.bianchi@example.com', 'Verona', 'Italia', '2025-07-15');

Nombrar las columnas es la práctica recomendada: hace que la consulta robusto contra futuros cambios de esquema (por ejemplo, una nueva columna phone opcional no rompe nada) y autodocumentable.

INSERTAR varias filas

Una sola declaración, varias filas, mucho más rápido que N INSERT separados:

SQL
INSERT INTO categories (name, parent_id) VALUES
  ('Gaming',         1),
  ('Smart Home',     1),
  ('Cucina vegana',  8);

REGRESANDO: leyendo los valores que acabas de insertar

Una cláusula característica de PostgreSQL: RETURNING devuelve las filas que acaban de crearse. Extremadamente útil para recuperar el id generado automáticamente:

SQL
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;

La salida es una tabla de una fila con id (asignado por SERIAL) y CÓDIGOPH2.

¿Qué sucede si falta una columna?

Si omite una columna en INSERT:

  • si es NOT NULL sin DEFAULT → error;
  • si tiene un DEFAULT (incluido el SERIAL para id) → que se utiliza;
  • si acepta NULL → se convierte en NULL.
SQL
-- Va bene: id è SERIAL (auto), country ha NOT NULL ma forniamo tutti i campi
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Olivia', 'Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

-- Errore: first_name è NOT NULL e non è fornito
INSERT INTO customers (last_name, email, city, country, signed_up_on)
VALUES ('Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

Tu turno

Ejercicio#sql.m8.l1.e1
Intentos: 0Cargando...

Inserte en la tabla de clientes un nuevo cliente con nombre 'Marco', apellido 'Bianchi', correo electrónico 'marco.bianchi@example.com', ciudad 'Verona', país 'Italia' y firmado el '2025-07-15'. Nombra explícitamente todas las columnas.

Cargando editor...
Mostrar pista

El orden de los valores en VALORES debe coincidir con el orden de las columnas que nombró.

Solución disponible después de 3 intentos

Ejercicio de revisión

Ejercicio#sql.m8.l1.e2
Intentos: 0Cargando...

Inserte una nueva categoría 'Juegos' como hija de 'Elettronica' (id = 1). Utilice la cláusula RETURNING para devolver la identificación y el nombre de la categoría recién creada.

Cargando editor...
Mostrar pista

RETURNING acepta una lista de columnas (o '*') exactamente como un SELECT.

Solución disponible después de 3 intentos