Au cours de votre analyse de données en SQL, vous devrez souvent consulter plusieurs tableaux et les joindre pour obtenir les résultats souhaités. Joindre des tableaux pour analyser des données est une compétence requise pour un data scientist également. Dans ce tutoriel, vous apprendrez les différents types de jointures que vous pouvez effectuer dans PostgreSQL. Vous étudierez d'abord les concepts préliminaires des jointures en SQL, puis les différents types de jointures et leurs syntaxes dans PostgreSQL. Vous terminerez ce tutoriel en exécutant différents types de requêtes de jointure à l'aide de deux tableaux. Pour pouvoir suivre le cours, vous devez connaître les bases du langage SQL et savoir comment écrire des requêtes simples dans PostgreSQL. Si vous cherchez des ressources pour les apprendre, les suivantes peuvent vous être utiles.
Configurer l'environnement de la base de données dans PostgreSQL
Avant d'étudier les bases des jointures SQL, il serait bon de créer quelques tableaux pour vos analyses. Vous aurez besoin d'au moins deux tableaux ayant au moins une colonne en commun. Bien que vous puissiez exécuter des requêtes auto-jointes sur le même tableau, ignorons ce fait pour l'instant.
Vous pouvez effectuer toutes les opérations SQL à l'aide d'un outil appelé pgAdmin qui est généralement fourni avec l'installation de PostgreSQL. Ouvrons pgAdmin et créons une base de données (donnez-lui un nom de votre choix) pour créer les tableaux si vous n'avez pas de base de données existante avec laquelle procéder. Vous pouvez ensuite créer les deux tableaux suivants avec les spécifications données -
nom_étudiant (id, nom)
student_stream (id, stream)
Notez que les deux tableaux ont en commun la colonne id. Vous pouvez utiliser les instructions suivantes CREATE pour créer les tableaux -
Pour nom_étudiant -
CREATETABLE student_name
(
id smallint,
name "char"[]);Propulsé par
Pour student_stream -
CREATETABLE student_stream
(
id smallint,
stream "char"[]);Propulsé par
Insérons maintenant quelques enregistrements dans les tableaux.
Pour nom_étudiant -
INSERTINTO student_name(id, name)VALUES(1,'Sayak');INSERTINTO student_name(id, name)VALUES(2,'Alex');INSERTINTO student_name(id, name)VALUES(3,'Sameer');INSERTINTO student_name(id, name)VALUES(4,'Rick');Propulsé par
Pour student_stream -
INSERTINTO student_stream(id, stream)VALUES(1,'CS');INSERTINTO student_stream(id, stream)VALUES(1,'IT');INSERTINTO student_stream(id, stream)VALUES(2,'ECE');INSERTINTO student_stream(id, stream)VALUES(9,'ECE');Propulsé par
Les entrées du tableau devraient ressembler à ce qui suit si vous avez exécuté les requêtes ci-dessus sans rien changer -
Vous disposez à présent de deux tableaux simples. Passons maintenant à l'étude des bases des jointures SQL.
Joints SQL - Notions de base
Les jointures SQL vous permettent de rassembler deux tableaux ou plus (parfois un seul) à l'aide d'identifiants communs. Prenons l'exemple des deux tableaux ci-dessus que vous avez créés - les deux tableaux ont en commun la colonne id. Vous pouvez vous interroger sur la nécessité de la jointure en SQL. Discutons-en brièvement.
En raison des contraintes de normalisation, il se peut que vous ne disposiez pas de toutes les informations requises dans un seul tableau. La normalisation est non seulement souhaitée mais aussi nécessaire pour maintenir la cohérence, réduire la redondance et prévenir plusieurs insertions et anomalies de mise à jour. Reprenez les deux tableaux ci-dessus. Supposons que vous souhaitiez connaître les filières dans lesquelles Sayak s'est inscrit. Pour obtenir la réponse à cette question, vous devrez joindre les deux tableaux (des sous-requêtes peuvent également être utilisées, mais n'y pensons pas pour l'instant) et procéder ensuite en conséquence.
Pour que deux tableaux puissent être reliés, il faut qu'il y ait quelque chose de commun entre eux. Cela signifie-t-il que les deux tableaux doivent avoir au moins une colonne portant le même nom ? Ou qu'est-ce que cette maladie exactement ?
Les tableaux que vous souhaitez joindre peuvent ne pas avoir de colonne portant le même nom, mais ils devraient logiquement être identiques, c'est-à-dire que leurs types de données devraient être les mêmes. Vous ne pouvez pas joindre deux tableaux dont la colonne porte le même nom mais dont les types de données sont différents. Étudions maintenant les différents types de jointures SQL.
Différents types de jointures SQL
Dans cette section, vous étudierez plusieurs types de jointures SQL -
INNER JOIN
Auto-jonction
OUTER JOIN
JOINT A LA GAUCHE
JOINTE À DROITE
JOINT COMPLET
JOINT CROISÉ
Semi-jonction et anti-jonction
PostgreSQL fournit des mots-clés distincts pour les types de jointures mentionnés en majuscules. Examinons-les une à une. Pour cela, vous allez d'abord étudier les jointures visuellement, puis vous exécuterez les requêtes de jointure correspondantes dans PostgreSQL.
INNER JOIN
Pour comprendre visuellement INNER JOIN, regardez le diagramme suivant -
Dans l'exemple ci-dessus, la colonne considérée est la colonne id. INNER JOIN ignorera les autres colonnes pour lesquelles les valeurs ne sont pas communes aux deux tableaux. Exécutons maintenant une requête dans PostgreSQL qui effectuera INNER JOIN entre les deux tableaux - nom_étudiant et flux_étudiant.
En exécutant la requête suivante, vous obtenez le résultat présenté dans la figure ci-dessus -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
INNERJOIN student_stream AS s2
ON s1.id = s2.id;Propulsé par
s1 et s2 sont les alias des deux tableaux. Vous avez utilisé le mot-clé ON avec INNER JOIN. La requête peut également être exécutée à l'aide du mot-clé USING -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
INNERJOIN student_stream AS s2
USING(id);Propulsé par
La jointure automatique vous permet d'effectuer des jointures sur le même tableau. Mais où cette option peut-elle s'avérer judicieuse ? Supposons que vous disposiez d'un tableau composé des colonnes suivantes -
Pays
Continent
Vous voulez maintenant inscrire deux pays de manière à ce que leurs continents soient identiques. La figure suivante devrait vous donner une idée des résultats escomptés.
OUTER JOIN
OUTER JOIN peuvent être divisés en trois types -
LEFT JOIN ou Left Outer JOIN: Le diagramme suivant vous donne une bonne idée de LEFT JOIN en SQL -
Notez que, contrairement à INNER JOIN, LEFT JOIN vous permet de récupérer les tableaux de gauche (dans l'ordre que vous avez spécifié dans votre requête) pour lesquels il n'y a pas d'entrée correspondante dans le tableau de droite. Cela signifie que Sameer et Rick ne sont inscrits dans aucune filière. La requête correspondante sera -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
LEFTJOIN student_stream AS s2
ON s1.id = s2.id;Propulsé par
RIGHT JOIN ou Right Outer JOIN : RIGHT JOIN est exactement le contraire de LEFT JOIN -
RIGHT JOIN peut vous aider à trouver la ou les filières pour lesquelles aucun étudiant ne s'est inscrit. La requête pour cela serait -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
RIGHTJOIN student_stream AS s2
ON s1.id = s2.id;Propulsé par
FULL JOIN ou Full Outer JOIN: FULL JOIN vous permet de combiner LEFT JOIN et RIGHT JOIN en une seule compilation -
La requête correspondante serait -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
FULLJOIN student_stream AS s2
ON s1.id = s2.id;Propulsé par
Notez que vous pouvez exécuter toutes les requêtes OUTER JOIN ci-dessus en utilisant le mot-clé USING. Étudions maintenant CROSS JOIN.
JOINT CROISÉ
CROSS JOIN est essentiellement le produit cartésien entre deux éléments exprimés à l'aide de SQL. Supposons que vous ayez besoin de toutes les combinaisons possibles entre deux tableaux ou même dans un seul tableau. Pour ce faire, vous aurez besoin de CROSS JOIN. La figure suivante présente ce concept de manière visuelle -
Vous disposez déjà de deux tableaux pour tester cette méthode. Afin d'obtenir toutes les combinaisons possibles entre les colonnes id des tableaux student_name et student_stream, vous pouvez exécuter la requête suivante -
SELECT s1.id, s2.id
FROM student_name AS s1
CROSSJOIN student_stream AS s2;Propulsé par
Et vous obtenez le résultat suivant -
Voyons maintenant les deux autres types de jointure pour lesquels PostgreSQL ne fournit pas de mots-clés directs.
Semi-jonction et anti-jonction
Considérons les tableaux que vous avez créés plus tôt dans le didacticiel :
Semi Join Les requêtes sont généralement exécutées sous la forme de sous-requêtes dans lesquelles les lignes sont extraites du premier tableau en fonction d'une condition (ou d'un ensemble de conditions) qui est remplie dans le second tableau. Supposons que le tableau de gauche soit le premier tableau et que le tableau de droite soit le deuxième tableau.
Anti Join Les requêtes sont tout le contraire. Dans Anti Join, les lignes sont extraites du premier tableau en fonction d'une condition (ou d'un ensemble de conditions) qui n' est pas remplie dans le second tableau. Voici un diagramme pour vous permettre de comprendre visuellement -
La demande de réalisation du site Semi Join serait -
select id, name
from student_name
where id IN(select id from student_stream where stream
IN('CS','IT','ECE'));Propulsé par
De même, la requête qui réalise Anti Join, dans ce cas, serait -
select id, name
from student_name
where id NOTIN(select id from student_stream where stream
IN('CS','IT','ECE'));Propulsé par
Notez l'utilisation de NOT dans la requête ci-dessus.
Passer à la vitesse supérieure dans l'utilisation des jointures SQL
C'est tout pour ce tutoriel. Vous avez étudié plusieurs types de jointures SQL dans ce tutoriel et vous vous êtes familiarisé avec leur syntaxe PostgreSQL. Si vous souhaitez vous entraîner à des exercices stimulants de jointure SQL, nous vous conseillons de suivre la formation Joining Data in SQL de DataCamp. En fait, le matériel du cours a été utilisé comme référence pour réaliser ce tutoriel.
Faites-moi part de vos questions dans la section Comments.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Initiez-vous aux structures de données de Python : apprenez-en plus sur les types de données et les structures de données primitives et non primitives, telles que les chaînes de caractères, les listes, les piles, etc.
Découvrez le match-case de Python : un guide sur sa syntaxe, ses applications en data science, ML, et une analyse comparative avec le switch-case traditionnel.
Débloquez tout le potentiel de vos données grâce à des requêtes SQL avancées et préparez des jeux de données robustes avec PostgreSQL pour la data science.
Au cours de votre analyse de données en SQL, vous devrez souvent consulter plusieurs tableaux et les joindre pour obtenir les résultats souhaités. Joindre des tableaux pour analyser des données est une compétence requise pour un data scientist également. Dans ce tutoriel, vous apprendrez les différents types de jointures que vous pouvez effectuer dans PostgreSQL. Vous étudierez d'abord les concepts préliminaires des jointures en SQL, puis les différents types de jointures et leurs syntaxes dans PostgreSQL. Vous terminerez ce tutoriel en exécutant différents types de requêtes de jointure à l'aide de deux tableaux. Pour pouvoir suivre le cours, vous devez connaître les bases du langage SQL et savoir comment écrire des requêtes simples dans PostgreSQL. Si vous cherchez des ressources pour les apprendre, les suivantes peuvent vous être utiles.
Commençons.
Configurer l'environnement de la base de données dans PostgreSQL
Avant d'étudier les bases des jointures SQL, il serait bon de créer quelques tableaux pour vos analyses. Vous aurez besoin d'au moins deux tableaux ayant au moins une colonne en commun. Bien que vous puissiez exécuter des requêtes auto-jointes sur le même tableau, ignorons ce fait pour l'instant.
Vous pouvez effectuer toutes les opérations SQL à l'aide d'un outil appelé
pgAdminqui est généralement fourni avec l'installation de PostgreSQL. OuvronspgAdminet créons une base de données (donnez-lui un nom de votre choix) pour créer les tableaux si vous n'avez pas de base de données existante avec laquelle procéder. Vous pouvez ensuite créer les deux tableaux suivants avec les spécifications données -Notez que les deux tableaux ont en commun la colonne
id. Vous pouvez utiliser les instructions suivantesCREATEpour créer les tableaux -Insérons maintenant quelques enregistrements dans les tableaux.
Les entrées du tableau devraient ressembler à ce qui suit si vous avez exécuté les requêtes ci-dessus sans rien changer -
Vous disposez à présent de deux tableaux simples. Passons maintenant à l'étude des bases des jointures SQL.
Joints SQL - Notions de base
Les jointures SQL vous permettent de rassembler deux tableaux ou plus (parfois un seul) à l'aide d'identifiants communs. Prenons l'exemple des deux tableaux ci-dessus que vous avez créés - les deux tableaux ont en commun la colonne
id. Vous pouvez vous interroger sur la nécessité de la jointure en SQL. Discutons-en brièvement.En raison des contraintes de normalisation, il se peut que vous ne disposiez pas de toutes les informations requises dans un seul tableau. La normalisation est non seulement souhaitée mais aussi nécessaire pour maintenir la cohérence, réduire la redondance et prévenir plusieurs insertions et anomalies de mise à jour. Reprenez les deux tableaux ci-dessus. Supposons que vous souhaitiez connaître les filières dans lesquelles
Sayaks'est inscrit. Pour obtenir la réponse à cette question, vous devrez joindre les deux tableaux (des sous-requêtes peuvent également être utilisées, mais n'y pensons pas pour l'instant) et procéder ensuite en conséquence.Pour que deux tableaux puissent être reliés, il faut qu'il y ait quelque chose de commun entre eux. Cela signifie-t-il que les deux tableaux doivent avoir au moins une colonne portant le même nom ? Ou qu'est-ce que cette maladie exactement ?
Les tableaux que vous souhaitez joindre peuvent ne pas avoir de colonne portant le même nom, mais ils devraient logiquement être identiques, c'est-à-dire que leurs types de données devraient être les mêmes. Vous ne pouvez pas joindre deux tableaux dont la colonne porte le même nom mais dont les types de données sont différents. Étudions maintenant les différents types de jointures SQL.
Différents types de jointures SQL
Dans cette section, vous étudierez plusieurs types de jointures SQL -
PostgreSQL fournit des mots-clés distincts pour les types de jointures mentionnés en majuscules. Examinons-les une à une. Pour cela, vous allez d'abord étudier les jointures visuellement, puis vous exécuterez les requêtes de jointure correspondantes dans PostgreSQL.
INNER JOIN
Pour comprendre visuellement
INNER JOIN, regardez le diagramme suivant -Dans l'exemple ci-dessus, la colonne considérée est la colonne
id.INNER JOINignorera les autres colonnes pour lesquelles les valeurs ne sont pas communes aux deux tableaux. Exécutons maintenant une requête dans PostgreSQL qui effectueraINNER JOINentre les deux tableaux - nom_étudiant et flux_étudiant.En exécutant la requête suivante, vous obtenez le résultat présenté dans la figure ci-dessus -
s1ets2sont les alias des deux tableaux. Vous avez utilisé le mot-cléONavecINNER JOIN. La requête peut également être exécutée à l'aide du mot-cléUSING-La jointure automatique vous permet d'effectuer des jointures sur le même tableau. Mais où cette option peut-elle s'avérer judicieuse ? Supposons que vous disposiez d'un tableau composé des colonnes suivantes -
Vous voulez maintenant inscrire deux pays de manière à ce que leurs continents soient identiques. La figure suivante devrait vous donner une idée des résultats escomptés.
OUTER JOIN
OUTER JOINpeuvent être divisés en trois types -LEFT JOIN ou Left Outer JOIN: Le diagramme suivant vous donne une bonne idée de
LEFT JOINen SQL -Notez que, contrairement à
INNER JOIN,LEFT JOINvous permet de récupérer les tableaux de gauche (dans l'ordre que vous avez spécifié dans votre requête) pour lesquels il n'y a pas d'entrée correspondante dans le tableau de droite. Cela signifie queSameeretRickne sont inscrits dans aucune filière. La requête correspondante sera -RIGHT JOIN ou Right Outer JOIN :
RIGHT JOINest exactement le contraire deLEFT JOIN-RIGHT JOINpeut vous aider à trouver la ou les filières pour lesquelles aucun étudiant ne s'est inscrit. La requête pour cela serait -FULL JOIN ou Full Outer JOIN:
FULL JOINvous permet de combinerLEFT JOINetRIGHT JOINen une seule compilation -La requête correspondante serait -
Notez que vous pouvez exécuter toutes les requêtes
OUTER JOINci-dessus en utilisant le mot-cléUSING. Étudions maintenantCROSS JOIN.JOINT CROISÉ
CROSS JOINest essentiellement le produit cartésien entre deux éléments exprimés à l'aide de SQL. Supposons que vous ayez besoin de toutes les combinaisons possibles entre deux tableaux ou même dans un seul tableau. Pour ce faire, vous aurez besoin deCROSS JOIN. La figure suivante présente ce concept de manière visuelle -Vous disposez déjà de deux tableaux pour tester cette méthode. Afin d'obtenir toutes les combinaisons possibles entre les colonnes
iddes tableauxstudent_nameetstudent_stream, vous pouvez exécuter la requête suivante -Et vous obtenez le résultat suivant -
Voyons maintenant les deux autres types de jointure pour lesquels PostgreSQL ne fournit pas de mots-clés directs.
Semi-jonction et anti-jonction
Considérons les tableaux que vous avez créés plus tôt dans le didacticiel :
Semi JoinLes requêtes sont généralement exécutées sous la forme de sous-requêtes dans lesquelles les lignes sont extraites du premier tableau en fonction d'une condition (ou d'un ensemble de conditions) qui est remplie dans le second tableau. Supposons que le tableau de gauche soit le premier tableau et que le tableau de droite soit le deuxième tableau.Anti JoinLes requêtes sont tout le contraire. DansAnti Join, les lignes sont extraites du premier tableau en fonction d'une condition (ou d'un ensemble de conditions) qui n' est pas remplie dans le second tableau. Voici un diagramme pour vous permettre de comprendre visuellement -La demande de réalisation du site
Semi Joinserait -De même, la requête qui réalise
Anti Join, dans ce cas, serait -Notez l'utilisation de
NOTdans la requête ci-dessus.Passer à la vitesse supérieure dans l'utilisation des jointures SQL
C'est tout pour ce tutoriel. Vous avez étudié plusieurs types de jointures SQL dans ce tutoriel et vous vous êtes familiarisé avec leur syntaxe PostgreSQL. Si vous souhaitez vous entraîner à des exercices stimulants de jointure SQL, nous vous conseillons de suivre la formation Joining Data in SQL de DataCamp. En fait, le matériel du cours a été utilisé comme référence pour réaliser ce tutoriel.
Faites-moi part de vos questions dans la section
Comments.