Leçons du module (1/4)
Insérer des données : INSERT
Jusqu'à présent, vous avez lu des données. Il est temps d'en écrire. INSERT est
la commande qui ajoute de nouvelles lignes à une table.
La syntaxe de base
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);Exemple sur notre jeu de données :
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');Nommer les colonnes est la pratique recommandée : cela rend la requête
robuste face aux futures modifications de schéma (par exemple, une nouvelle colonne phone facultative)
ne casse rien) et auto-documenté.
INSERT multi-lignes
Une seule instruction, plusieurs lignes – beaucoup plus rapide que N INSERT distincts :
INSERT INTO categories (name, parent_id) VALUES
('Gaming', 1),
('Smart Home', 1),
('Cucina vegana', 8);RETURNING : lecture des valeurs que vous venez d'insérer
Une clause caractéristique de PostgreSQL : RETURNING renvoie les lignes qui
viennent d'être créés. Extrêmement pratique pour récupérer le id généré automatiquement :
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;La sortie est un tableau à une ligne avec id (attribué par SERIAL) et
name.
Que se passe-t-il si une colonne est manquante
Si vous omettez une colonne dans le INSERT :
- s'il s'agit de
NOT NULLsans DEFAULT → erreur ; - s'il possède un
DEFAULT(incluantSERIALpour id) → qui est utilisé ; - s'il accepte
NULL→ il devientNULL.
-- 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');A ton tour
Insérez dans la table des clients un nouveau client avec le prénom 'Marco', le nom 'Bianchi', l'e-mail 'marco.bianchi@example.com', la ville 'Vérone', le pays 'Italia' et le signé_up_on '2025-07-15'. Nommez explicitement toutes les colonnes.
Afficher l'indice
L'ordre des valeurs dans VALUES doit correspondre à l'ordre des colonnes que vous avez nommées.
Solution disponible après 3 tentatives
Exercice de révision
Insérez une nouvelle catégorie « Gaming » en tant qu'enfant de « Elettronica » (id = 1). Utilisez la clause RETURNING pour renvoyer l'identifiant et le nom de la catégorie nouvellement créée.
Afficher l'indice
RETURNING accepte une liste de colonnes (ou '*') exactement comme un SELECT.
Solution disponible après 3 tentatives