Différences et différences entre les scénarios de requête de jointure interne et de requête de jointure externe MySQL

avant-propos

Lorsque j'écris sqldes requêtes, j'utilise wherele plus souvent des requêtes conditionnelles. Ce type de requête est également appelé requête de connexion interne inner join. Bien sûr, il existe également des requêtes de connexion externe outer join. 左外连接,右外连接Les requêtes sont souvent utilisées dans des relations plusieurs-à-plusieurs. Quelles sont leurs différences et Connexions?

Jointure interne jointure interne

Les définitions les plus couramment utilisées des jointures internes sont :

  1. Seules 符合连接条件les lignes contenues dans le résultat de la connexion sont combinées en un ensemble de résultats, et 两个表tous ceux qui participent à la connexion doivent remplir les conditions de connexion Utilisez des mots-clés : INNER JOINconnecter plusieurs tables

Cela revient à renvoyer la partie d'intersection (ombrée) des deux tables, comme illustré dans la figure suivante :

L'instruction de requête sql suivante

Interroger toutes les informations utilisateur affectées aux informations du service

Autrement dit, l'ID de service se trouve dans la table des utilisateurs et la table de service contient des lignes qui remplissent les conditions avant d'afficher les données

select u.USERNAME, u.MOBILE, u.EMAIL, d.DEPT_NAME
from t_user u inner join
     t_dept d
on u.DEPT_ID = d.DEPT_ID

Il existe également une manière implicite d'écrire des jointures internes, c'est-à-dire qu'il n'est pas nécessaire de spécifier explicitement le mot-clé INNER JOIN

Équivalent à

select u.USERNAME, u.MOBILE, u.EMAIL, d.DEPT_NAME
from t_user u,
     t_dept d
where u.DEPT_ID = d.DEPT_ID

Généralement, nous utilisons souvent wheredes mots-clés pour interroger directement les conditions de connexion, ce qui est plus pratique et simple

jointure externe

connexion gauche (externe) jointure gauche

définition:

  1. Jointure gauche (externe), 左表les enregistrements seront 全部affichés et 右表seuls 符合搜索条件les enregistrements seront affichés. 右表Les endroits où les enregistrements sont insuffisants sont tous NULL, comme le montre la figure ci-dessous :

  1. grammaire
LEFT JOIN ON
LEFT OUTER JOIN ON

left joinC'est left outer joinune abréviation de , et son nom complet est connexion externe gauche, qui est une sorte de connexion externe.

L'instruction de requête sql suivante

Interroger toutes les informations sur les employés (y compris les informations sur le service)

select u.USERNAME, u.MOBILE, u.EMAIL,u.DEPT_ID, d.DEPT_NAME
from t_user u left outer join
     t_dept d
on u.DEPT_ID = d.DEPT_ID

Équivalent à

select u.USERNAME, u.MOBILE, u.EMAIL,u.DEPT_ID, d.DEPT_NAME
from t_user u left  join
     t_dept d
on u.DEPT_ID = d.DEPT_ID

Comme le montre la figure ci-dessous, nous pouvons voir que l'enregistrement dont le USERNAME est kenx dans la table t_user de jointure externe gauche a un DEPT_ID de 15, mais l'enregistrement avec un DEPT_ID de 15 n'existe pas dans la table t_dept. nous utilisons la jointure externe gauche, par conséquent, l'enregistrement peut être trouvé, mais les valeurs des champs de la table t_dept sont toutes NULL.

Connexion droite (externe) jointure droite

définition:

  1. Connexion droite (externe), 右表tous les enregistrements seront affichés, et 左表seuls 符合搜索条件les enregistrements seront affichés. 左表Les endroits où les enregistrements sont insuffisants sont tous NULL, comme le montre la figure ci-dessous :

  1. grammaire
RIGHT JOIN ON
RIGHT OUTER JOIN ON

right joinC'est right outer joinune abréviation de , et son nom complet est jointure externe droite, qui est une sorte de jointure externe.

Interrogez l'instruction sql comme suit

select u.USERNAME, u.MOBILE, u.EMAIL,u.DEPT_ID, d.DEPT_NAME
from t_user u right join
     t_dept d
on u.DEPT_ID = d.DEPT_ID

Équivalent à

select u.USERNAME, u.MOBILE, u.EMAIL,u.DEPT_ID, d.DEPT_NAME
from t_user u right outer join
     t_dept d
on u.DEPT_ID = d.DEPT_ID

Contrairement à la figure ci-dessous, 左外连接toutes les informations du service sont interrogées, et les champs d'informations utilisateur qui ne remplissent pas les conditions sont tousNULL

Résumer

  1. 内连接: indique que le résultat de la jointure ne contient que des lignes qui remplissent la condition de jointure et que les deux tables impliquées dans la jointure doivent remplir la condition de jointure.

  2. 外连接: Le résultat de la connexion inclut non seulement les lignes qui remplissent les conditions de connexion, mais également les lignes qui ne remplissent pas les conditions elles-mêmes. Y compris la jointure externe gauche, la jointure externe droite et la jointure externe complète.

  3. 左外连接: toutes les lignes de données de la table de gauche sont réservées et la table de droite conserve les lignes qui remplissent les conditions de connexion.

  4. 右外连接: Toutes les lignes de données de la table de droite sont réservées et la table de gauche conserve les lignes qui remplissent les conditions de connexion.

  5. 全外连接: jointure externe gauche union jointure externe droite, actuellement non prise en charge dans Mysql.

Supongo que te gusta

Origin blog.csdn.net/u011738045/article/details/120316954
Recomendado
Clasificación