Utilisation de IF EXISTS dans la base de données MySQL

Preet Sanghavi 30 janvier 2023
  1. Utilisation de base de l’opérateur EXISTS dans MySQL
  2. Utilisation de l’opérateur IF EXISTS dans MySQL
Utilisation de IF EXISTS dans la base de données 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.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Article connexe - MySQL Query