Maison >base de données >tutoriel mysql >Quelle est la différence entre la jointure interne, la jointure externe gauche, la jointure externe droite et la jointure croisée ?

Quelle est la différence entre la jointure interne, la jointure externe gauche, la jointure externe droite et la jointure croisée ?

怪我咯
怪我咯original
2017-06-23 13:39:565437parcourir

La différence entre la jointure interne, la jointure externe gauche, la jointure externe droite et la jointure croisée

Avant, je n'étais pas très clair sur les ensembles de données obtenus par jointure interne et jointure externe dans MSSQL. J'ai revu le livre SQL ces derniers jours, et la réflexion devrait maintenant être très claire. Je vais maintenant partager ma compréhension pour que tout le monde puisse la réviser. J'espère que des amis comme moi qui ne comprennent pas l'instruction de connexion SQL pourront vous aider. (S'il vous plaît, arrêtez de vous moquer de moi pour avoir posté un tutoriel sur un tel plat, haha ​​​​:D) Il y a deux tableaux A et B. La structure du tableau A est la suivante : Aid : int ; graine d'identification, clé primaire, ID d'auto-incrémentation Aname : varchar La situation des données, c'est-à-dire la situation d'enregistrement utilisant select * from A, est illustrée dans la figure 1 ci-dessous :


Figure 1 : Données du tableau A
La structure du tableau B est la suivante : Bid : int ; graine d'identification, clé primaire, ID d'auto-incrémentation Bnameid : int La situation des données, c'est-à-dire la situation d'enregistrement à l'aide de select * from B, est la suivante. Montré dans la figure 2 :


Figure 2 : Données du tableau B
Afin de distinguer Bid et Aid, nous ne permettons pas à tout le monde d'avoir des malentendus, alors fixez la graine de départ de Bid à 100. Toute personne ayant des connaissances de base en SQL sait que pour connecter deux tables, il doit y avoir un champ de connexion. À partir des données du tableau ci-dessus, nous pouvons voir que Aid dans la table A et Bnameid dans la table B sont deux champs de connexion. La figure 3 ci-dessous illustre la relation entre tous les ensembles d'enregistrements connectés :

Figure 3 : Schéma de connexion
Maintenant, nous nous connectons en interne et les jointures externes sont expliquées un par un. 1. Jointure interne : utilisez la jointure interne pour obtenir les enregistrements de la partie commune des deux tables, c'est-à-dire l'ensemble d'enregistrements C de la figure 3. L'instruction est la suivante : Sélectionnez * dans A JOIN B ON A. Aid=B.Bnameid. Le résultat en cours d'exécution est tel qu'illustré dans la figure 4. Comme indiqué : En fait, les résultats de select * from A,B où A.Aid=B.Bnameid et Select * from A JOIN B ON A.Aid. =B.Bnameid sont les mêmes.

Figure 4 : Données de jointure interne

2. Jointure externe : Il existe deux types de jointures externes, l'une est la jointure gauche (Left JOIN) et jointure à droite (Right JOIN)
(1) Jointure à gauche (Left JOIN) : c'est-à-dire l'ensemble d'enregistrements de la partie publique C + la table A, l'ensemble d'enregistrements A1 dans la figure 3.
L'instruction est la suivante : select * from A Left JOIN B ON A.Aid=B.Bnameid
Le résultat de l'exécution est présenté dans la figure 5 ci-dessous :


Figure 5 : Données de jointure gauche

Explication : Dans l'instruction, A est sur le côté gauche de B et est une jointure gauche, donc la méthode d'opération est : A jointure gauche B enregistrements = Figure 3 partie publique jeu d'enregistrements C + table A jeu d'enregistrements A1
Dans la figure 3, c'est-à-dire l'aide qui existe dans le jeu d'enregistrements C est : 2 3 6 7 8
Dans la figure 1, c'est-à-dire l'aide qui existe dans tous les jeux d'enregistrements A du tableau A est : 1 2 3 4 5 6 7 8 9
L'aide existant dans le jeu d'enregistrements A1 du tableau A = (dans la figure 1, toutes les aides dans le tableau A) - (dans la figure 3, c'est-à-dire l'aide existant dans l'ensemble d'enregistrements C), le résultat final est : 1 4 5 9
De là, on peut conclure que les enregistrements de A laissés connectés à B dans la figure 5 = l'ensemble d'enregistrements de la partie publique C dans Figure 3 + le jeu d'enregistrements A1 du tableau A. Le résultat final peut être vu sur la figure 5 : Bnameid et Bid ne sont pas NULL. Les enregistrements sont tous dans le jeu d'enregistrements C dans la partie publique de la figure 3 ; et Bid comme NULL et Aid comme 1 4 5 9 sont les aides qui existent dans l'ensemble d'enregistrements A1 du tableau A.

(2) Right JOIN : c'est-à-dire l'ensemble d'enregistrements de la partie publique C de la figure 3 + l'ensemble d'enregistrements B1 de la table B.

L'instruction est la suivante : select * from A Right JOIN B ON A.Aid=B.Bnameid Le résultat de l'exécution est présenté dans la figure 6 ci-dessous :


Figure 6 : Données de jointure à droite
Description : Dans l'instruction, A est à gauche de B et est une jointure à droite, donc la méthode de fonctionnement est la suivante : Une jointure à droite des enregistrements B = Figure 3, jeu d'enregistrements de la partie publique C + table B jeu d'enregistrements B1
Dans la figure 3, l'aide qui existe dans le jeu d'enregistrements C est : 2 3 6 7 8
Dans la figure 2, le Bnameid qui existe dans tous les jeux d'enregistrements B de la table B est : 2 3 6 7 8 11
Table Le Bnameid qui existe dans le jeu d'enregistrements B B1 = (dans la figure 2, c'est-à-dire tous les Bnameids dans la table B) - (dans la figure 3, c'est-à-dire l'Aid qui existe dans le jeu d'enregistrements C). Le résultat final est : 11
À partir de là, Figure 6 Les enregistrements de la connexion droite de A dans B = le jeu d'enregistrements de la partie publique C dans la figure 3 + le jeu d'enregistrements de la table B B1. On peut voir sur la figure 6 que les enregistrements non NULL de Aid et Aname sont tous dans le jeu d'enregistrements de la partie publique C de la figure 3. L'enregistrement avec Aid et Aname comme NULL et Aid comme 11 est le Bnameid qui existe dans le ensemble d'enregistrements B1 du tableau B.
Connexion croisée : Lorsque deux tableaux sont combinés sans conditions, le nombre d'entrées = Figure 1 * Figure 2

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn