Le chapitre précédent présente 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. Le présent chapitre couvre 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. Après cela, le chapitre présente l'élimination des
données perdues.
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
conceptuellement 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 de la table,
séparées par des virgules. Souvent, les données sont des libellés
(constantes) 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 sont 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 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 des colonnes particulières ou pour la ligne
complète.
INSERT INTO produits (no_produit, nom, prix) VALUES (1, 'Fromage', DEFAULT);
INSERT INTO produits DEFAULT VALUES;
Plusieurs lignes peuvent être insérées en une seule commande :
INSERT INTO produits (no_produit, nom, prix) VALUES
(1, 'Fromage', 9.99),
(2, 'Pain', 1.99),
(3, 'Lait', 2.99);
Astuce
Lors de l'insertion d'une grande quantité de données en même
temps, il est préférable d'utiliser la commande COPY. Elle n'est pas
aussi flexible que la commande INSERT mais elle est plus
efficace. Se référer à Section 13.4,
« Remplir une base de données » pour plus
d'informations sur l'amélioration des performances lors de gros
chargements de données.