Utilisation de IF EXISTS dans la base de données MySQL
-
Utilisation de base de l’opérateur
EXISTS
dans MySQL -
Utilisation de l’opérateur
IF EXISTS
dans MySQL
Dans ce tutoriel, nous visons à explorer l’instruction IF EXISTS
dans MySQL.
Cependant, avant de commencer, nous créons un jeu de données factice avec lequel travailler. Ici, nous créons un tableau, student_details
, avec quelques lignes dedans.
-- 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");
La requête ci-dessus crée un tableau avec des lignes contenant le prénom et le nom de l’étudiant. Pour afficher les entrées dans les données, nous utilisons le code suivant.
SELECT * FROM student_details;
Le code susmentionné 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
Utilisation de base de l’opérateur EXISTS
dans MySQL
La condition EXISTS
dans MySQL est généralement utilisée avec une sous-requête qui consiste en une condition à remplir. Si cette condition est remplie, la sous-requête renvoie au moins une ligne. Cette méthode peut être utilisée pour DELETE
, SELECT
, INSERT
, ou UPDATE
une instruction.
-- Here we select columns from the table based on a certain condition
SELECT column_name
FROM table_name
WHERE EXISTS (
SELECT column_name
FROM table_name
WHERE condition
);
Ici, condition
représente la condition de filtrage lors de la sélection des lignes d’une colonne particulière.
Pour vérifier s’il existe un étudiant dans la colonne stu_firstName
où le stu_id
= 4, on utilisera le code suivant :
-- Here we save the output of the code as RESULT
SELECT EXISTS(SELECT * from student_details WHERE stu_id=4) as RESULT;
Le code susmentionné donnera la sortie suivante :
RESULT
1
1 dans le bloc de code ci-dessus représente une valeur booléenne, ce qui suggère qu’il y a un étudiant avec stu_id
= 4.
Utilisation de l’opérateur IF EXISTS
dans MySQL
Parfois, nous souhaitons vérifier l’existence d’une valeur particulière dans une table et modifier notre sortie en fonction de l’existence de cette condition. La syntaxe de cette opération est la suivante :
SELECT IF( EXISTS(
SELECT column_name
FROM table_name
WHERE condition), 1, 0)
Ici, la sortie de la requête est 1, si l’instruction IF
renvoie True. Sinon, il renvoie 0.
Écrivons une requête qui renvoie Yes, exists
, si un étudiant avec stu_id
=4 existe dans la table. Sinon, on veut retourner No, does not exist
. Pour effectuer cette opération, regardez le code ci-dessous :
SELECT IF( EXISTS(
SELECT stu_firstName
FROM student_details
WHERE stu_id = 4), 'Yes, exists', 'No, does not exist') as RESULT;
Le code susmentionné donnera la sortie suivante :
RESULT
Yes, exists
Essayons maintenant de trouver un étudiant avec stu_id
= 11. Cette opération peut être effectuée avec la requête suivante :
SELECT IF( EXISTS(
SELECT stu_firstName
FROM student_details
WHERE stu_id = 11), 'Yes, exists', 'No, does not exist') as RESULT;
Remarque : Nous utilisons l’ALIAS RESULT
pour afficher notre sortie dans le bloc de code de sortie.
Le code susmentionné donnera la sortie suivante :
RESULT
No, does not exist
Remarque : généralement, les requêtes SQL qui utilisent la méthode EXISTS
dans MySQL sont très lentes car la sous-requête est RE-RUN pour chaque entrée de la table de la requête externe. Il existe des méthodes plus rapides et plus efficaces pour formuler la plupart des requêtes sans utiliser la condition EXISTS
.
Ainsi, nous avons implémenté avec succès IF EXISTS
dans MySQL.