Jointure interne MySQL

Jointure interne MySQL

  1. Objectifs

    • Découvrez l’instructions MySQL Inner JOIN avec des exemples de syntaxe et de programmation
  2. Présentation

    • Jointure interne MySQL

    • La jointure interne MySQL est utilisée pour renvoyer uniquement les résultats des tables qui correspondent à la condition spécifiée et masque les autres lignes et colonnes.
    • Une jointure interne est une condition qui aboutit aux lignes qui satisfont à la clause ‘where‘ dans ‘toutes les tables’;
    • Une jointure interne peut être effectuée de deux façons différentes :
      • à l’aide du mot-clé WHERE : c’est l’ancienne syntaxe, toujours utilisée aujourd’hui, qu’il faut donc connaître mais que vous devriez éviter d’utiliser si vous avez le choix ;
      • à l’aide du mot-clé JOIN : c’est la nouvelle syntaxe qu’il est recommandé d’utiliser. Elle est plus efficace et plus lisible.
      • Une jointure interne permet de sélectionner les enregistrements ayant des correspondances entre deux fichiers joints.
      • Les jointures internes dépendent de la sélection des conceptions et des caractéristiques de la base de données. En conséquence, ces jointures internes sont utilisées dans les Equi-Joins et Natural Joins. Dans Equi Join, il existe un type spécifique de comparaison utilisé pour égaliser les deux tables données. Par conséquent, cette table utilise le prédicat égal. La jointure naturelle est un type de jointure Equi.

  3. Jointure interne avec WHERE (ancienne syntaxe)

    • Bien que la clause WHERE soit principalement destinée au filtrage, la clause WHERE peut également être utilisée pour exprimer de nombreux types de jointures. Pour des informations conceptuelles sur les jointures, voir Utilisation des jointures (ou jonctions).
    • Une clause WHERE peut spécifier une jointure en incluant des conditions de jointure, qui sont des expressions booléennes définissant quelle(s) ligne(s) d’un côté de la jointure (JOIN) correspond(ent) à une(des) ligne(s) de l’autre côté de la jointure.
    • select t1.c1, t2.c2
          from t1, t2
          where t1.c1 = t2.c2;
      select t1.c1, t2.c2
          from t1 inner join t2
              on t1.c1 = t2.c2;
  4. Jointure interne avec JOIN (nouvelle syntaxe)

    • Bien qu’il soit possible de faire une jointure interne avec un WHERE comme on vient de le voir, c’est une ancienne syntaxe et aujourd’hui on recommande plutôt d’utiliser JOIN. Il faut dire que nous étions habitués à utiliser le WHERE pour filtrer les données, alors que nous l’utilisons ici pour associer des tables et récupérer plus de données.

    • INNER JOIN est la forme la plus courante de JOIN et est très largement utilisée. Presque tous devraient avoir utilisé cela à un moment ou à un autre.
    • Dans MySQL, INNER JOIN sélectionne toutes les lignes des deux tables participantes pour apparaître dans le résultat si et seulement si les deux tables remplissent les conditions spécifiées dans la clause ON



    • Syntaxe de jointure interne MySQL
      • Dans le langage SQL la commande INNER JOIN, est un type de jointure très commune pour lier plusieurs tables entre-elles dans une même requête.
      • Cette commande retourne les enregistrements lorsqu’il y a au moins une ligne dans chaque colonne listé dans la condition.
      • Le mot-clé Inner Join est utilisé avec l’instruction SELECT et doit être écrit après la clause FROM.
        • SELECT colonne1, colonne2, ..., colonne_n
          FROM table_A
          INNER JOIN table_B
          ON table_A.colonneX = table_B.colonneX;
      • Dans cette syntaxe, nous devons d’abord sélectionner la liste des colonnes, puis spécifier le nom de la table qui sera jointe à la table principale, apparaît dans l’Inner Join (table1, table2), et enfin, fournir la condition après le mot-clé ON.
      • La condition Join renvoie les lignes correspondantes entre les tables spécifiées dans la clause Inner.
    • Exemple de jointure interne MySQL
      • Affichez les noms des pays d’Afrique et d’Asie avec le nom de leur continent
        • SELECT nomContinent, nomPays
          FROM pays
          	INNER JOIN continent ON pays.numContinent = continent.numContinent
              WHERE nomContinent IN ('Afrique','Asie');

    • Jointure interne MySQL sur plus de deux tables
      • Nos exemples précédents montrent comment faire une jointure entre deux tables. Il se peut que vous ayez besoin de faire une jointure entre plus de deux tables.
      • La syntaxe est la suivante pour les commandes INNER JOIN. Cette syntaxe peut être répété autant de fois que nécessaire.
      • SELECT *
        FROM table_1
        INNER JOIN table_2 ON table_1.une_colonne = table_2.autre_colonne
        INNER JOIN table_3 ON table_1.une_colonne = table_3.autre_colonne;
  5. Application

    • Avec la base vue dans la leçon (Les jointures en MySQL).
      • 1- utilisez les deux méthodes vues précédemment pour afficher la liste des noms de tous les fleuves d’Europe classés par ordre alphabétique.
        • Jointure interne avec WHERE

          SELECT DISTINCT nomFleuve FROM fleuve, traverser, pays, continent 
          WHERE fleuve.numFleuve = traverser.numFleuve 
          	AND traverser.numPays = pays.numPays 
          	AND pays.numcontinent = continent.numContinent 
          	AND nomContinent = 'Europe' 
          ORDER BY nomFleuve
          Jointure interne avec JOIN

          SELECT DISTINCT nomFleuve
          FROM fleuve
          	INNER JOIN traverser ON fleuve.numFleuve = traverser.numFleuve
          	INNER JOIN pays ON traverser.numPays = pays.numPays 
          	INNER JOIN  continent ON pays.numcontinent = continent.numContinent
          WHERE nomContinent = 'Europe' 
          ORDER BY nomFleuve;
          Résultat

          Jointure interne MySQL

      • 2- Affichez la liste des 4 villes les plus peuplées en Europe.
      • 3- Affichez la liste des pays et les fleuves qui les traversent.
        • SELECT pays.nomPays,fleuve.nomFleuve
          FROM fleuve
          INNER JOIN traverser ON fleuve.numFleuve=traverser.numFleuve
          INNER JOIN pays on pays.numPays=traverser.numPays;