PostgreSQLLa base de données la plus sophistiquée au monde.

6. Manipulation de données

Ce chapitre est toujours assez incomplet.

Le chapitre précédent présentait la création des tables et des autres structures de stockage des données. Il est temps de remplir ces tables avec des données. Ce chapitre présente l'insertion, la mise à jour et la suppression des données des tables. Il introduit également les outils de modifications automatiques des données en fonction d'évènements précis : les déclencheurs et les règles de réécriture. Le chapitre suivant présente l'élimination des données perdues.

6.1. Insertion de données

Quand une table est créée, elle ne contient aucune donnée. La première chose à faire, c'est d'y insérer des données. Sans quoi la base de données n'est pas d'une grande utilité. Les données sont insérées ligne par ligne. Il est évidemment possible d'insérer plus d'une ligne mais il n'est pas possible d'entrer moins d'une ligne à la fois. Même lorsque seules les valeurs d'une partie des colonnes sont connues, une ligne complète doit être créée.

Pour créer une nouvelle ligne, la commande INSERT est utilisée. La commande a besoin du nom de la table et d'une valeur pour chaque colonne de cette table. Soit la table des produits du Chapitre 5, Définition des données :

CREATE TABLE produits (
    no_produit integer,
    nom text,
    prix numeric
);

Une commande d'insertion d'une ligne peut être :

INSERT INTO produits VALUES (1, 'Fromage', 9.99);

Les données sont listées dans l'ordre des colonnes dans la table, séparées par des virgules. Souvent, les données sont des constantes (litéraux) mais les expressions scalaires sont aussi acceptées.

La syntaxe précédente oblige à connaître l'ordre des colonnes. Pour éviter cela, les colonnes peuvent être explicitement listées. Les deux commandes suivantes ont, ainsi, le même effet que la précédente :

INSERT INTO produits (no_produit, nom, prix) VALUES (1, 'Fromage', 9.99);
INSERT INTO produits (nom, prix, no_produit) VALUES ('Fromage', 9.99, 1);

Beaucoup d'utilisateurs recommandent de toujours lister les noms de colonnes.

Si les valeurs de certaines colonnes ne sont pas connues, elles peuvent être omises. Dans ce cas, elles seront remplies avec leur valeur par défaut. Par exemple,

INSERT INTO produits (no_produit, nom) VALUES (1, 'Fromage');
INSERT INTO produits VALUES (1, 'Fromage');

La seconde instruction est une extension de PostgreSQL™. Elle remplit les colonnes de gauche à droite avec toutes les valeurs données, et les autres prennent leur valeur par défaut.

Il est possible, pour plus de clarté, d'appeler explicitement les valeurs par défaut, pour certaines colonnes ou pour la ligne complète.

INSERT INTO produits (no_produit, nom, prix) VALUES (1, 'Fromage', DEFAULT);
INSERT INTO produits DEFAULT VALUES;
[Astuce]

Astuce

Pour faire des chargements en masse (insertion de grandes quantités de données, « bulk load » en anglais), on s'intéressera à la commande COPY. Elle n'est pas aussi souple que la commande INSERT mais est plus efficace. La Section 13.4, « Remplir une base de données » comporte de plus amples informations sur l'amélioration des performances lors de chargements en masse.