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
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);Ejemplo en nuestro conjunto de datos:
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:
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:
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 NULLsin DEFAULT → error; - si tiene un
DEFAULT(incluido elSERIALpara id) → que se utiliza; - si acepta
NULL→ se convierte enNULL.
-- 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
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.
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
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.
Mostrar pista
RETURNING acepta una lista de columnas (o '*') exactamente como un SELECT.
Solución disponible después de 3 intentos