DML : INSERT INTO, DELETE FROM, (TRUNCATE), UPDATE
Tout ce que nous avons vu précédemment sont des instructions DDL, c’est un peu l’échiquier d’un jeu d’échec. Maintenant, explorons quelques instructions DML, entre autres, plaçons nos pions.
Pour continuer dans le jeu d’échec, visualisons cela :
-Database : salle de compétition d’échec.
-Tables : tables d’échiquier.
-Données : pions.
Insérer des données
Maintenant que vous avons notre table et notre structure, notre table est vide (en données). Il convient d’insérer des données à l’aide de l’instruction DML INSERT INTO
. Il faut sélectionner les variables puis utiliser l’instruction VALUES
afin d’insérer les tuples.
-Avec la méthode graphique :
Vous pouvez insérer directement les données lorsque vous visualisez la table.
-Avec une requête SQL :
INSERT INTO table1 (nom, prenom, email, age, adresse, ville)
VALUES ('Lee', 'Bruce', 'bruce@lee.com', 30, '1 rue de quelque chose', 'Quelque part'),
('Skywalker', 'Anakin', 'anakin@skywalker.com', 25, '2 avenue Tatooin', 'Tatooin'),
('Prince', 'Le petit', 'lepetit@prince.com', 12, '3 boulevard Planete', 'Galaxie');
Supprimer des données
Si après une longue réflexion, vous décidez de supprimer des données de votre table, il faut utiliser l’instruction DML DELETE
. Vous pouvez décider de supprimer une observation, plusieurs ou toutes. Il y a plusieurs façons :
-Avec la méthode graphique :
Vous pouvez supprimer directement les données comme vous les avez insérées grâce à l’icône ‘Supprimer’.
-Avec un script de la plateforme graphique :
Si je veux supprimer les informations sur Bruce Lee :
Cliquer droit sur votre table, ‘Scripts > DELETE Script’. Ensuite vous pouvez remplacer la <condition> par la condition de votre choix.
-Avec une requête SQL :
DELETE FROM public.table1
WHERE nom = 'Lee';
NB : Pour supprimer toutes les données de la table il suffit de rentrer DELETE FROM <table>
sans condition.
Supprimer radicalement des données
Si vous pensez que vous avez trop de données dans votre table et que vous voulez radicalement tout supprimer sans enchainer les instructions DROP COLUMN
ou DELETE FROM
, vous pouvez simplement utiliser l’instruction DDL TRUNCATE TABLE
. Mais attention, c’est radical, alors soyez sûrs de ce que vous faites. De plus, contrairement à DELETE
, TRUNCATE
permet facilement de réinitialiser les identifiants des lignes (oui, DELETE
ne réinitialise pas les identifiants des lignes, si vous insérer de nouvelles lignes la séquence continue). TRUNCATE
permet aussi de supprimer tout le contenu d’une table instantanément, c’est donc plus performant que DELETE
qui va parcourir toute la table, surtout si vous avez de grandes tables.
-Avec la méthode graphique :
Cliquez droit sur votre table, ‘Truncate > Truncate’.
-Avec une requête SQL :
TRUNCATE TABLE public.table1;
Si on réinsère des données, la séquence d’ID continue :
Vous pouvez aussi réinitialiser les ID en ajoutant l’instruction RESTART IDENTITY
:
TRUNCATE TABLE table1 RESTART IDENTITY;
INSERT INTO table1 (nom, prenom, email, age, adresse, ville)
VALUES ('Lee', 'Bruce', 'bruce@lee.com', 30, '1 rue de quelque chose', 'Quelque part'),
('Skywalker', 'Anakin', 'anakin@skywalker.com', 25, '2 avenue Tatooin', 'Tatooin'),
('Prince', 'Le petit', 'lepetit@prince.com', 12, '3 boulevard Planete', 'Galaxie');
NB : Vous vous demandez peut-être pourquoi dans le titre, TRUNCATE est entre parenthèses. C’est parce-que l’instruction TRUNCATE
est généralement incluse dans les instructions DDL et non DML comme DELETE
. Finalement, TRUNCATE
et DELETE
ont les mêmes finalités, mais n’ont pas les mêmes processus, en plus de ce qui est décrit plus haut. TRUNCATE
agit instantanément, radicalement, sans retour en arrière possible (commit implicite) alors que DELETE
est une instruction DML, mise en attente d’un commit, dernier chargement dans la database. Une fois une requête commise, il n’est plus possible de faire un retour en arrière ‘rollback’.
Modifier les données
Une fois que vous avez inséré des données dans votre table, vous pouvez les modifier en utilisant l’instruction DML UPDATE
et l’instruction SET
.
De la même manière que pour insérer ou supprimer des lignes, vous pouvez modifier les données en double cliquant sur les valeurs.
-Avec une requête SQL :
UPDATE table1
SET age = 99
WHERE nom = 'Lee';
Avant ;
Après :
NB : j’ai utilisé ici la condition « nom = ‘Lee’
», mais vous pouvez utiliser n’importe quelle condition, par exemple avec l’ID, ou alors vous pouvez choisir plusieurs conditions comme « nom = ‘Lee’ AND id = 1
».
- Vous pouvez aussi modifier plusieurs lignes en incluant le vecteur
IN
dans une condition.
UPDATE table1
SET age = 99
WHERE nom IN ('Lee', 'Skywalker');
- Si vous voulez modifier des données avec des valeurs différentes, vous pouvez utiliser des conditions avec l’instruction
CASE WHEN
.
UPDATE table1
SET age = CASE
WHEN nom = 'Lee' THEN 99
WHEN nom = 'Skywalker' THEN 1
ELSE age
END