More

    SQL EXISTS : Comment vérifier si des données existent déjà dans une table

    SQL est un langage de programmation utilisé pour gérer les données d’un système de gestion de base de données relationnelle (SGBDR). SQL possède de nombreuses fonctionnalités et fonctions utiles pour effectuer diverses opérations sur les données, telles que l’insertion, la mise à jour, la suppression et la récupération de données.

    L’une des opérations qui est souvent effectuée en SQL consiste à vérifier si certaines données sont déjà dans la table ou non. Ceci est utile pour empêcher la duplication des données, valider les entrées ou spécifier des conditions pour d’autres requêtes.

    Il existe plusieurs façons de vérifier si des données se trouvent déjà dans une table, mais l’une des méthodes les plus courantes et les plus efficaces consiste à utiliser la clause EXISTS. Une clause EXISTS est une clause conditionnelle qui renvoie une valeur de TRUE ou de FALSE selon qu’une sous-requête donnée génère au moins une ligne ou non.

    SQL EXISTS

    Dans cet article, Bardimin explique comment utiliser les clauses EXISTS en SQL, quels en sont les avantages et les inconvénients, et comment les comparer à d’autres méthodes, telles que l’utilisation de COUNT ou de JOIN. Bardimin fournira également quelques exemples d’utilisation de EXISTS dans divers scénarios et bases de données, tels que MySQL.

    Syntaxe et exemples SQL EXISTS de base

    La syntaxe de base pour l’utilisation des clauses EXISTS dans SQL est la suivante :

    SELECT column_name(s)
    FROM table_name
    WHERE EXISTS (subquery);

    Ici, subquery s’agit d’une requête qui se trouve entre parenthèses et qui fait généralement référence à la même table ou à une autre table connectée à la table principale. La sous-requête doit renvoyer au moins une colonne, mais la valeur de cette colonne n’est pas pertinente, car EXISTS ne nous soucions que de savoir si des lignes sont générées ou non.

    Prenons un exemple simple d’utilisation de EXISTS en SQL. Supposons que nous disposions d’une table mahasiswa qui contient des données sur les étudiants d’une université, comme suit :

    idnamajurusanangkatan
    1AliMathématiques2019
    2EspritPhysique2020
    3CiciBiologie2019
    4DediChimie2020
    5UnMathématiques2021

    Nous disposons également d’un tableau nilai qui contient des données sur les notes des étudiants dans divers cours, telles que les suivantes :

    id_mahasiswakode_mknilai
    1MA10180
    1MA10285
    2Réf. FI10175
    2FI10270
    3BI10190
    4KI10195
    5MA10160

    Si nous voulons afficher les données de l’étudiant qui ont des valeurs dans la table nilai, nous pouvons utiliser la clause EXISTS comme suit :

    SELECT *
    FROM mahasiswa m
    WHERE EXISTS (
    SELECT 1
    FROM nilai n
    WHERE m.id = n.id_mahasiswa
    );

    Les résultats de la requête ci-dessus sont les suivants :

    idnamajurusanangkatan
    1AliMathématiques2019
    2EspritPhysique2020
    3CiciBiologie2019
    4DediChimie2020
    5UnMathématiques2021

    La requête ci-dessus utilise une sous-requête qui renvoie une valeur de 1 pour chaque ligne qui répond à la condition m.id =n.id_mahasiswa, ce qui signifie que l’étudiant a une valeur dans la table nilai. Étant donné que la sous-requête renvoie au moins une ligne pour chaque étudiant, la clause EXISTS renvoie TRUE et cet étudiant est affiché dans les résultats de la requête.

    Notez que nous pouvons utiliser n’importe quelle valeur dans une sous-requête, même NULL ou *, car cette valeur n’affecte pas EXISTS résultats. Toutefois, pour des raisons de performances, il est recommandé d’utiliser les valeurs constantes les plus simples, telles que 1, 0 ou NULL, car SQL n’a pas besoin de traiter les valeurs de colonne réelles.

    Dernières articles