INSERT IF NOT EXISTS dans MySQL
Dans ce tutoriel, nous visons à comprendre comment utiliser la clause INSERT IF NOT EXISTS
dans une table de la base de données MySQL.
Nous insérons souvent certaines valeurs dans une colonne particulière d’une table sans vérifier leur existence dans la table. Cependant, il est parfois nécessaire d’éviter les valeurs en double lors de leur insertion dans une table particulière.
Prenons l’exemple d’un concessionnaire automobile. Lors de l’insertion de données dans la table cars
, nous ne voulons pas que le car id
d’un type de voiture particulier soit inséré deux fois dans notre table.
MySQL nous fournit la clause INSERT IF NOT EXISTS
qui nous aide à effectuer cette opération efficacement. La syntaxe de base pour INSERT IF NOT EXISTS
est la suivante.
INSERT INTO name_of_the_table (column_name)
SELECT * FROM (SELECT value_name) AS val
WHERE NOT EXISTS (<conditonal expression>);
Dans le name_of_the_table
on insère le value_name
dans le column_name
si conditonal expression
est remplie.
Mais avant de commencer, créons un jeu de données factice.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
INSERT IF NOT EXISTS
dans MySQL
Comprenons comment utiliser le INSERT IF NOT EXISTS
dans MySQL en insérant un nouvel étudiant nommé Preet
avec le stu_id
comme 8
.
Cependant, nous n’insérerons cette valeur que si les prénoms des étudiants existants dans le tableau ne correspondent pas à Preet
. Nous pouvons effectuer cette opération en utilisant la requête suivante.
INSERT INTO student_details(stu_id,stu_firstName, stu_lastName)
SELECT * FROM (SELECT 8 as stu_id, 'Preet' AS customer_name, 'Shah' AS stu_lastName) AS new_value
WHERE NOT EXISTS (
SELECT stu_firstName FROM student_details WHERE stu_firstName = 'Preet'
) LIMIT 1;
Maintenant, vérifiez la table student_details
avec la requête suivante.
SELECT * from student_information;
La requête susmentionnée nous donnera la sortie suivante.
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Comme nous pouvons le voir, aucune nouvelle valeur n’a été ajoutée à la table car le prénom Preet
existe déjà dans la table student_details
.
Essayons d’ajouter un autre étudiant avec stu_id
comme 9
et stu_firstName
comme Dhruv
et stu_lastName
comme Shah
. Nous pouvons effectuer cette opération en utilisant la requête suivante.
INSERT INTO student_details(stu_id,stu_firstName, stu_lastName)
SELECT * FROM (SELECT 9 as stu_id, 'Dhruv' AS customer_name, 'Shah' AS stu_lastName) AS new_value
WHERE NOT EXISTS (
SELECT stu_firstName FROM student_details WHERE stu_firstName = 'Dhruv'
) LIMIT 1;
Comme on le voit dans la requête ci-dessus, nous ajoutons l’étudiant avec stu_firstName
comme Dhruv
s’il n’existe pas déjà dans la table.
La sortie de la requête susmentionnée est la suivante.
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Preet Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
9 Dhruv Shah
Une nouvelle entrée, Dhruv Shah
avec stu_id
comme 9
, a été créée car il n’y a pas de doublons dans le prénom.
Ainsi, à l’aide de l’instruction INSERT IF NOT EXISTS
, nous pouvons entrer efficacement des détails dans une table étant donné que la valeur à insérer répond à la condition requise dans la clause NOT EXISTS
dans MySQL.