avant-propos
Lorsque j'écris sql
des requêtes, j'utilise where
le 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 :
- 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 JOIN
connecter 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 where
des 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:
- Jointure gauche (externe),
左表
les enregistrements seront全部
affichés et右表
seuls符合搜索条件
les enregistrements seront affichés.右表
Les endroits où les enregistrements sont insuffisants sont tousNULL
, comme le montre la figure ci-dessous :
- grammaire
LEFT JOIN ON
LEFT OUTER JOIN ON
left join
C'est left outer join
une 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:
- Connexion droite (externe),
右表
tous les enregistrements seront affichés, et左表
seuls符合搜索条件
les enregistrements seront affichés.左表
Les endroits où les enregistrements sont insuffisants sont tousNULL
, comme le montre la figure ci-dessous :
- grammaire
RIGHT JOIN ON
RIGHT OUTER JOIN ON
right join
C'est right outer join
une 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
-
内连接
: 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. -
外连接
: 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. -
左外连接
: 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. -
右外连接
: 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. -
全外连接
: jointure externe gauche union jointure externe droite, actuellement non prise en charge dans Mysql.