Insérer des données

INSERT INTO nom_table VALUES ('valeur 1', 'valeur 2', ...);

ou, si on veut agir seulement sur certaines colonnes :

INSERT INTO nom_table (nom_colonne_1, nom_colonne_2, ...)
 VALUES ('valeur 1', 'valeur 2', ...);

Insertion du résultat d’un SELECT

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

Modifier des données

UPDATE nom_table
SET nom_colonne_1 = 'valeur_1', colonne_2 = 'valeur_2', ...
WHERE condition;

Détruire des enregistrements :

DELETE FROM nom_table
WHERE conditions ;
Si vous ne mettez pas de condition, cela veut dire que vous effacez toute la table !

Une utilisation de la clause WITH dans une opération de destruction

Ici, on modifie des lignes d’une table, et on garde trace de ces lignes dans une table de logs :

WITH moved_rows AS (
    DELETE FROM products
    WHERE
        "date" >= '2010-10-01' AND
        "date" < '2010-11-01'
    RETURNING *
)
INSERT INTO products_log
SELECT * FROM moved_rows;

On notera l’usage de RETURNING.

Modifier une table (par exemple rajouter une colonne)

ALTER TABLE nom_table
ADD nom_colonne type_donnees ;

On va travailler de nouveau avec la base eleves.db. Mais cette fois-ci, chacun d’entre vous va la modifier. Il faut donc que chacun la recopie dans son répertoire.

  • Rajouter à la classe un nouvel élève avec des données à votre convenance.

  • Devant l’importance grandissante du chinois, la direction a décidé de remplacer d’autorité la LV "anglais" par la LV "chinois". Faites-le.

  • Ajouter une nouvelle colonne, appelée "age", et faire remplir cette colonne par la base à partir de la date de naissance. On pourra noter que c’est une mauvaise idée, car on a ainsi une information redondante, mais on reviendra plus loin sur ces questions.