Articles

6.1. Insertion de données

Lorsqu’une table est créée, elle ne contient aucune donnée. La première chose à faire avant qu’une base de données puisse être d’une grande utilité est d’insérer des données. Les données sont conceptuellement insérées une ligne à la fois. Bien entendu, vous pouvez également insérer plus d’une ligne, mais il est impossible d’en insérer moins d’une. Même si vous ne connaissez que certaines valeurs de colonnes, une ligne complète doit être créée.

Pour créer une nouvelle ligne, utilisez la commande INSERT. Cette commande nécessite le nom de la table et les valeurs des colonnes. Par exemple, considérez le tableau des produits du chapitre 5:

CREATE TABLE products ( product_no integer, name text, price numeric);

Un exemple de commande pour insérer une ligne serait:

INSERT INTO products VALUES (1, 'Cheese', 9.99);

Les valeurs des données sont listées dans l’ordre dans lequel les colonnes apparaissent dans le tableau, séparées par des virgules. Habituellement, les valeurs de données seront des littéraux (constantes), mais les expressions scalaires sont également autorisées.

La syntaxe ci-dessus présente l’inconvénient de devoir connaître l’ordre des colonnes dans le tableau. Pour éviter cela, vous pouvez également lister les colonnes de manière explicite. Par exemple, les deux commandes suivantes ont le même effet que celle ci-dessus :

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);

De nombreux utilisateurs considèrent comme une bonne pratique de toujours lister les noms des colonnes.

Si vous n’avez pas de valeurs pour toutes les colonnes, vous pouvez en omettre certaines. Dans ce cas, les colonnes seront remplies avec leurs valeurs par défaut. Par exemple :

INSERT INTO products (product_no, name) VALUES (1, 'Cheese');INSERT INTO products VALUES (1, 'Cheese');

Le deuxième formulaire est une extension PostgreSQL. Elle remplit les colonnes de gauche avec autant de valeurs que celles qui sont données, et le reste sera par défaut.

Pour plus de clarté, vous pouvez également demander des valeurs par défaut de manière explicite, pour des colonnes individuelles ou pour la ligne entière :

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT);INSERT INTO products DEFAULT VALUES;

Vous pouvez insérer plusieurs lignes dans une seule commande :

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);

Il est également possible d’insérer le résultat d’une requête (qui peut ne comporter aucune ligne, une ligne ou plusieurs lignes) :

INSERT INTO products (product_no, name, price) SELECT product_no, name, price FROM new_products WHERE release_date = 'today';

Cela permet de bénéficier de toute la puissance du mécanisme de requête SQL (chapitre 7) pour calculer les lignes à insérer.

Conseil : lorsque vous insérez beaucoup de données en même temps, pensez à utiliser la commande COPY. Elle n’est pas aussi souple que la commande INSERT, mais elle est plus efficace. Consultez la section 14.4 pour plus d’informations sur l’amélioration des performances de chargement en masse.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *