CRUD
CRUD est un acronyme pour Create, Read, Update, Delete. Ce sont les quatre opérations de base que vous pouvez effectuer sur des données stockées dans une base de données SQL.

Source image
Create
Contexte : Insertion de données dans la table user
.
create table user (
id int auto_increment primary key,
name varchar(50),
email varchar(254)
);
➡️ MySQL - INSERT Statement
Syntaxe générale
insert into table_name (column1, column2, column3, …)
values (value1, value2, value3, …);
La commande INSERT
en SQL est utilisée pour ajouter de nouvelles lignes à une table.
Dans le contexte de la table user
ci-dessus, cette commande permet d'insérer des données dans les colonnes name
et email
. La colonne id
est une colonne auto-incrémentée et une clé primaire, donc elle générera automatiquement une valeur unique pour chaque nouvelle ligne. Cela signifie qu'il n'est pas nécessaire de spécifier une valeur pour cette colonne lors de l'insertion.
-- Insertion simple
insert into user (name, email)
values ('Alice Dupont', 'alice.dupont@example.com');
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
-- Insertion multiple
insert into user (name, email)
values ('Bob Martin', 'bob.martin@example.com'),
('Claire Lune', 'claire.lune@example.com');
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.martin@example.com |
3 |
Claire Lune |
claire.lune@example.com |
-- Insertion sélective
insert into user (name)
values ('Daniel Morand');
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.martin@example.com |
3 |
Claire Lune |
claire.lune@example.com |
4 |
Daniel Morand |
NULL |
Read
Contexte : Récupération de données dans la table user
.
➡️ MySQL - SELECT Statement
Syntaxe générale
select column1, column2, …
from table_name
where condition;
La commande SELECT
en SQL est utilisée pour lire des données à partir de tables de bases de données. Toujours dans le contexte de la table user
, qui contient les colonnes id
, name
, et email
, on peut utiliser différentes variantes de la commande SELECT
pour extraire des informations spécifiques.
-- Sélectionner toutes les colonnes
select *
from user;
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.martin@example.com |
3 |
Claire Lune |
claire.lune@example.com |
4 |
Daniel Morand |
NULL |
-- Sélectionner certaines colonnes
select name, email
from user;
name |
email |
Alice Dupont |
alice.dupont@example.com |
Bob Martin |
bob.martin@example.com |
Claire Lune |
claire.lune@example.com |
Daniel Morand |
NULL |
-- Utilisation de la clause where
select *
from user
where name = 'Alice Dupont';
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
-- Exclure les valeurs NULL
select *
from user
where email is not null;
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.martin@example.com |
3 |
Claire Lune |
claire.lune@example.com |
-- Tri des résultats
select *
from user
order by name desc;
id |
name |
email |
4 |
Daniel Morand |
NULL |
3 |
Claire Lune |
claire.lune@example.com |
2 |
Bob Martin |
bob.martin@example.com |
1 |
Alice Dupont |
alice.dupont@example.com |
Update
Contexte : Mise à jour de données dans la table user
.
➡️ MySQL - UPDATE Statement
Syntaxe générale
update table_name
set column1 = value1,
column2 = value2,
…
where condition;
La commande UPDATE
en SQL est utilisée pour modifier les données existantes dans une table. Toujours dans le contexte de la table user
, on peut utiliser UPDATE
pour changer les valeurs dans les colonnes name
et email
pour un ou plusieurs utilisateurs.
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.martin@example.com |
3 |
Claire Lune |
claire.lune@example.com |
4 |
Daniel Morand |
NULL |
-- Mise à jour d'un utilisateur spécifique
update user
set email = 'bob.newemail@example.com'
where name = 'Bob Martin';
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.newemail@example.com |
3 |
Claire Lune |
claire.lune@example.com |
4 |
Daniel Morand |
NULL |
-- Mise à jour de plusieurs colonnes
update user
set name = 'Claire Dupond',
email = 'claire.dupond@example.com'
where id = 3;
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.newemail@example.com |
3 |
Claire Dupond |
claire.dupond@example.com |
4 |
Daniel Morand |
NULL |
-- Mise à jour conditionnelle
update user
set email = 'default@example.com'
where email is null;
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.newemail@example.com |
3 |
Claire Dupond |
claire.dupond@example.com |
4 |
Daniel Morand |
default@example.com |
-- 🚨 Attention aux mises à jour sans WHERE
-- Mise à jour de toutes les lignes de la table en même temps
update user
set email = 'updated@example.com';
id |
name |
email |
1 |
Alice Dupont |
updated@example.com |
2 |
Bob Martin |
updated@example.com |
3 |
Claire Dupond |
updated@example.com |
4 |
Daniel Morand |
updated@example.com |
Delete
Contexte : Suppression de données dans la table user
.
➡️ MySQL - DELETE Statement
Syntaxe générale
delete
from table_name
where condition;
La commande DELETE
en SQL est utilisée pour supprimer des enregistrements (lignes) d'une table. C'est une commande puissante et doit être utilisée avec précaution, car une fois qu'un enregistrement est supprimé, il ne peut généralement pas être récupéré.
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.martin@example.com |
3 |
Claire Lune |
claire.lune@example.com |
4 |
Daniel Morand |
NULL |
-- Supprimer un enregistrement spécifique
delete
from user
where name = 'Bob Martin';
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
3 |
Claire Lune |
claire.lune@example.com |
4 |
Daniel Morand |
NULL |
-- Supprimer des enregistrements avec une condition spécifique
delete
from user
where email is null;
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
3 |
Claire Lune |
claire.lune@example.com |
-- 🚨 Attention à la suppression sans WHERE
-- Suppression de tous les enregistrements de la table
delete
from user;
Jointure
➡️ MySQL - JOIN Clause
Les jointures en SQL sont utilisées pour combiner des lignes de deux tables ou plus, basées sur une colonne de relation commune entre ces tables. Pour illustrer les jointures avec la table user
, une autre table à joindre est nécessaire. La table purchase
suivante permettra d'enregistrer les achats réalisés par les utilisateurs de la table user
.
id |
name |
email |
1 |
Alice Dupont |
alice.dupont@example.com |
2 |
Bob Martin |
bob.martin@example.com |
3 |
Claire Lune |
claire.lune@example.com |
4 |
Daniel Morand |
NULL |
create table purchase (
id int auto_increment primary key,
user_id int,
date date,
amount decimal(6,2),
foreign key (user_id) references user (id)
);
insert into purchase (user_id, date, amount)
values (1, '2023-01-15', 150.00),
(2, '2023-01-17', 200.00),
(1, '2023-02-01', 25.00);
id |
user_id |
date |
amount |
1 |
1 |
2023-01-15 |
150.00 |
2 |
2 |
2023-01-17 |
200.00 |
3 |
1 |
2023-02-01 |
25.00 |
Types de jointures
INNER JOIN : Récupère les enregistrements qui ont des valeurs correspondantes dans les deux tables.
select user.name, purchase.amount
from user
inner join purchase on user.id = purchase.user_id;
Cette requête retournera les noms des utilisateurs et les montants pour les utilisateurs qui ont fait des achats.
name |
amount |
Alice Dupont |
150.00 |
Bob Martin |
200.00 |
Alice Dupont |
25.00 |
LEFT JOIN (ou LEFT OUTER JOIN) : Récupère tous les enregistrements de la table de gauche (left), et les enregistrements correspondants de la table de droite. Si aucune correspondance n'est trouvée, les résultats de la table de droite auront des valeurs NULL.
select user.name, purchase.amount
from user
left join purchase on user.id = purchase.user_id;
Cette requête retournera tous les utilisateurs, y compris ceux qui n'ont pas fait d'achats (les champs de la table purchase
seront NULL pour ces utilisateurs).
name |
amount |
Alice Dupont |
150.00 |
Alice Dupont |
25.00 |
Bob Martin |
200.00 |
Claire Lune |
NULL |
Daniel Morand |
NULL |
RIGHT JOIN (ou RIGHT OUTER JOIN) : Récupère tous les enregistrements de la table de droite (right), et les enregistrements correspondants de la table de gauche. Si aucune correspondance n'est trouvée, les résultats de la table de gauche auront des valeurs NULL.
select user.name, purchase.amount
from user
right join purchase on user.id = purchase.user_id;
Dans la pratique, les RIGHT JOINs sont moins courants et peuvent souvent être réécrits en tant que LEFT JOINs pour une meilleure lisibilité.
name |
amount |
Alice Dupont |
150.00 |
Bob Martin |
200.00 |
Alice Dupont |
25.00 |
LEFT JOIN avec Exclusion : Cette jointure est une variante du LEFT JOIN qui permet de récupérer tous les enregistrements de la table de gauche, tout en excluant ceux qui ont une correspondance dans la table de droite. Cela est utile pour trouver des enregistrements présents dans une table mais absents dans l'autre.
Supposons qu'on désire trouver les utilisateurs qui n'ont passé aucune commande. Il est possible d'utiliser un LEFT JOIN combiné avec une condition WHERE pour exclure les utilisateurs ayant des commandes.
select user.name
from user
left join purchase on user.id = purchase.user_id
where purchase.user_id is null;
name |
amount |
Claire Lune |
NULL |
Daniel Morand |
NULL |
Vue d'ensemble des jointures

Source image