Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

INSERT PostgreSQL

L'instruction `INSERT` de PostgreSQL est utilisée pour ajouter de nouvelles tables dans un tableau spécifique. Il s'agit d'une opération fondamentale pour alimenter et mettre à jour les bases de données avec de nouvelles informations.

Utilisation

La syntaxe de base de l'instruction `INSERT` est utilisée lorsque vous devez ajouter de nouveaux tableaux. Il spécifie le nom du tableau, les tableaux dans lesquels insérer des données et les valeurs correspondantes.

sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

Dans cette syntaxe, `nom_table` est le tableau cible, `column1, column2, ...` sont les tableaux à recevoir les données, et `value1, value2, ...` sont les valeurs réelles des données à insérer.

Exemples

1. Insertion de base

sql
INSERT INTO employees (first_name, last_name, email)
VALUES ('John', 'Doe', 'john.doe@example.com');

Cet exemple insère une seule ligne dans le tableau `employees` avec les valeurs `first_name`, `last_name`, et `email`.

2. Insérer plusieurs lignes

sql
INSERT INTO products (product_name, price)
VALUES 
('Product A', 10.99),
('Product B', 15.49);

Ici, deux tableaux sont insérés dans le tableau `products` en une seule instruction, chacun avec un `nom_du_produit` et un `prix`.

3. Insérer avec une sous-requête

sql
INSERT INTO sales (product_id, quantity)
SELECT product_id, 5
FROM products
WHERE product_name = 'Product C';

Cet exemple insère des données dans le tableau `sales` en sélectionnant `product_id` dans le tableau `products` où le `product_name` est 'Product C', en fixant la `quantity` à 5.

4. Gestion des doublons avec ON CONFLICT

sql
INSERT INTO users (username, email)
VALUES ('jane_doe', 'jane.doe@example.com')
ON CONFLICT (username) DO UPDATE 
SET email = EXCLUDED.email;

Cet exemple montre comment gérer les doublons potentiels en mettant à jour le `email` si le `username` existe déjà dans le tableau `users`.

5. Utilisation de la clause RETURNING

sql
INSERT INTO orders (customer_id, order_date)
VALUES (123, '2023-10-11')
RETURNING order_id;

La clause `RETURNING` est utilisée pour retourner le `order_id` de la ligne nouvellement insérée, ce qui est particulièrement utile avec les champs auto-incrémentés.

Conseils et bonnes pratiques

  • Spécifiez les colonnes de manière explicite. Dressez toujours la liste des tableaux dans une instruction `INSERT` afin d'assurer la clarté et de maintenir la compatibilité en cas de modification de la structure de la table.
  • Validez les types de données. Assurez-vous que les valeurs insérées correspondent aux types de données des colonnes.
  • Utilisez les transactions pour les encarts en vrac. Enveloppez plusieurs opérations `INSERT` dans une transaction pour assurer l'atomicité et améliorer les performances. Par exemple :
    sql
            BEGIN;
            INSERT INTO products (product_name, price) VALUES ('Product C', 12.99);
            INSERT INTO products (product_name, price) VALUES ('Product D', 18.49);
            COMMIT;
            
  • Gérer les doublons. Utilisez `ON CONFLICT` pour traiter les conflits de clés potentiels, et non pas `INSERT ...'. ON DUPLICATE KEY UPDATE`, qui est la syntaxe de MySQL.
  • Exploitez judicieusement les sous-requêtes. Utilisez des sous-requêtes pour l'insertion dynamique de données provenant d'autres tableaux afin de maintenir l'intégrité et la cohérence des données.