Table des matières
Pourquoi utiliser des jointures externes
Introduction aux jointures externes
Jointure gauche et jointure droite
Exercice de jointure externe①
L'instruction SQL pour cet exercice doit être implémentée à l'aide du Mot-clé "UNION". " combine les ensembles de résultats de plusieurs instructions de requête (à l'exclusion du contenu en double).
Maison base de données tutoriel mysql Comment utiliser les jointures externes des tables de données dans MySQL

Comment utiliser les jointures externes des tables de données dans MySQL

Jun 03, 2023 pm 03:02 PM
mysql

Pourquoi utiliser des jointures externes

Avant d'expliquer pourquoi les "jointures externes" sont utilisées, regardons un enregistrement. (Comme suit :)

Comment utiliser les jointures externes des tables de données dans MySQL

Étant donné que Zhang San dans le tableau n'a pas de numéro de département, nous le classerons temporairement comme « intérimaire » sans établissement de département fixe.

Dans un tel scénario, des problèmes surviennent. Lorsque nous souhaitons interroger le nom de chaque employé et le service auquel il appartient, lors de l'utilisation d'une jointure interne, car notre condition de lien est ` "Numéro de département" de "Table des employés" = "Département du numéro de "Table de département", "Zhang San" nous manquera. Bien que "Zhang San" n'ait pas de "numéro de service", il est également membre de l'entreprise en tant que "travailleur temporaire", donc la syntaxe des jointures externes doit être introduite pour résoudre ce problème, sinon certaines données logiques seront perdues. .

Introduction aux jointures externes

La différence entre les jointures externes et les jointures internes :

Seuls les enregistrements qui remplissent les conditions de connexion apparaîtront dans les résultats de la jointure interne. Les enregistrements qui ne remplissent pas les conditions de connexion n'apparaîtront jamais dans le résultat. ensemble.

Que les conditions de connexion de données soient remplies ou non, les connexions externes seront affichées dans l'ensemble de résultats d'une manière spéciale. (Par exemple, interroger les informations sur le numéro de service de l'employé mentionnées ci-dessus, car « Zhang San » n'a pas de numéro de service, si une jointure interne est utilisée, « Zhang San » ne remplit pas les « conditions de connexion » et n'apparaîtra pas dans le résultat. set. ; Remplacez "jointure externe" et vous ne le manquerez pas.)

L'exemple de phrase de jointure externe est le suivant

SELECT 
	e.empno, e.ename, d.dname
FROM
	t_emp e
LEFT JOIN t_dept d ON e.deptno = d.deptno;

-- 在连接的时候仍然是链接 "员工表" 与 "部门表" ,只不过连接关键字由 "JOIN" 变成了 "LEFT JOIN" (下文再为大家详细解释)
-- 两张表的连接条件还是使用 "ON" 关键字去连接的 , 连接条件依然是 "员工表" 的 "部门编号" = "部门表" 的 "部门编号" 

-- LEFT JOIN 为 "外连接" 的 "左外连接" ;(在 "外连接" 中,是分为 "左外连接" 与 "右外连接" 的)

-- 在该SQL语句中 "LEFT JOIN" 左右各有数据表  "t_emp e" 与 "t_dept d" 
-- 所以这里的 "左连接" 的意思就是:保留 左表 的所有记录,然后与 右表 去连接,如果 右表 有符合条件的记录,则正常连接即可;
-- 如果 右表 没有符合条件的连接记录, 右表 则展示 "NULL" 值与 "左表" 去匹配
Copier après la connexion

Comment utiliser les jointures externes des tables de données dans MySQL

Jointure gauche et jointure droite

"Jointure externe gauche" signifie que pendant l'opération de jointure, tous les éléments du tableau de gauche sont conservés et joignent le tableau de droite. La table de gauche sera connectée à la table de droite. S'il y a des enregistrements qui remplissent les conditions dans la table de droite ; s'il n'y a aucun enregistrement qui remplit les conditions dans la table de droite, "NULL" sera utilisé pour connecter la table de gauche.

La différence avec la « jointure gauche » est la « jointure droite ». La « jointure droite » est l'opposé de la « jointure gauche ». Elle conserve tous les enregistrements dans la table de droite et joint les enregistrements qualifiés dans la table de gauche de la même manière ; la table de gauche Si aucun enregistrement ne remplit les conditions, utilisez "NULL" pour vous connecter à la table de droite.

Exemple d'instruction SQL de jointure à droite :

SELECT 
	e.empno, e.ename, d.dname
FROM
	t_dept d
RIGHT JOIN t_emp e ON e.deptno = d.deptno;

-- 这里有个需要注意的地方,就是相较于上文中的 "左连接" ,这里的 "右连接" 左右两张的表的位置做了调换
Copier après la connexion

Comment utiliser les jointures externes des tables de données dans MySQL

Ici, vous pouvez voir que vous pouvez toujours trouver les enregistrements de "Zhang San" sans "numéro de département". La différence entre « jointure à gauche » et « jointure à droite » n'est donc pas très grande.

Exercice de jointure externe①

Demandez le nom de chaque département et le nombre de personnes dans le département ?

Cette question semble simple, mais elle comporte deux difficultés, et il existe également des domaines dans lesquels des erreurs sont faciles à commettre. Pour plus de détails, consultez les exemples d'instructions SQL et le diagramme schématique ci-dessous.

SELECT 
    d.deptno, d.dname, COUNT(*)
FROM
    t_dept d LEFT JOIN t_emp e 
ON d.deptno = e.deptno
GROUP BY d.deptno;
Copier après la connexion

Comment utiliser les jointures externes des tables de données dans MySQL

OK, c'est là que les problèmes commencent.

Veuillez faire attention au département "40" - "OPÉRATIONS" ici. Il n'y a en fait personne dans ce département, c'est-à-dire que le nombre de personnes est "0", mais étrangement, lorsque les statistiques sont effectuées ici, le nombre est élevé. des personnes comptées est "1", pourquoi est-ce ? le tableau de gauche. (Étant donné que les enregistrements de la table de gauche sont conservés, le regroupement doit également être regroupé en fonction de la table de gauche. La clé suivante est "COUNT(*)", qui comptera le nombre de tous les enregistrements valides. Ainsi, lorsque tous les enregistrements de la table de gauche "t_dept" Lorsque l'enregistrement est connecté à la table de droite "t_emp", la table de droite utilisera la valeur "NULL" pour se connecter à la table de gauche "t_dept". Une fois la connexion terminée, ce sera un enregistrement valide. Puisqu'il s'agit d'un enregistrement valide, alors "COUNT(*)" Le résultat calculé est "1". Il est donc compréhensible que le résultat statistique de 40 départements soit "1", mais ce résultat n'est pas quoi. nous voulons. Comment le résoudre ? L'instruction SQL ci-dessous

SELECT 
    d.deptno, d.dname, COUNT(e.deptno)
FROM
    t_dept d LEFT JOIN t_emp e 
ON d.deptno = e.deptno
GROUP BY d.deptno;
Copier après la connexion

Cette instruction SQL est toujours très bonne. Il y a de nombreux détails et situations non prises en compte. Vous ne pouvez remarquer ces attaques que lorsque vous l'écrivez à nouveau. Exercice sur les jointures externes ②

Comment utiliser les jointures externes des tables de données dans MySQLRécupérez le nom du département et le nombre de personnes. Pour les employés sans département, utilisez "NULL" au lieu du nom du département (cela fait en fait référence à "Zhang San")

Vous pensez peut-être que le "gauche externe" join" qui vient d'être utilisé est réservé. Ne pouvons-nous pas simplement remplacer tous les enregistrements de la table département par des jointures externes "à droite" ? En fait... ce n'est pas si simple.

L'instruction SQL pour cet exercice doit être implémentée à l'aide du Mot-clé "UNION". " combine les ensembles de résultats de plusieurs instructions de requête (à l'exclusion du contenu en double).

"UNION"关键字 在 SQL 语句中的用法如下:

(SQL查询语句) UNION (SQL查询语句) -- 如果存在多条查询语句的话,可以继续使用 UNION 关键字 连接

PS:这里需要注意一下,“UNION” 合并多少个结果集其实无所谓,关键是这些结果集的字段数量和字段的名称必须要相同 。如果说第一个 SQL 查询语句返回的是 10个 字段,第二个返回的是 2个字段 ,这种情况是完全没办法合并的。

(SELECT 
	d.deptno, d.dname, COUNT(e.deptno)
FROM
	t_dept d LEFT JOIN t_emp e 
ON d.deptno = e.deptno
GROUP BY d.deptno)
UNION
(SELECT 
	d.deptno, d.dname, COUNT(*)
FROM
	t_dept d RIGHT JOIN t_emp e 
ON d.deptno = e.deptno
GROUP BY d.deptno);

-- 第一个查询语句,得到的结果集是各个部门的人数。
-- 第二个查询语句,得到的结果集是隶属于各个部门的人数,但是因为 "张三" 是一个没有部门所属的 "临时工"
-- 所以两个查询语句的结果集合并之下没救如下图所示。
Copier après la connexion

Comment utiliser les jointures externes des tables de données dans MySQL

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ouvrir phpmyadmin Comment ouvrir phpmyadmin Apr 10, 2025 pm 10:51 PM

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

MySQL: une introduction à la base de données la plus populaire au monde MySQL: une introduction à la base de données la plus populaire au monde Apr 12, 2025 am 12:18 AM

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

Comment utiliser un seul fileté redis Comment utiliser un seul fileté redis Apr 10, 2025 pm 07:12 PM

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

Place de MySQL: bases de données et programmation Place de MySQL: bases de données et programmation Apr 13, 2025 am 12:18 AM

La position de MySQL dans les bases de données et la programmation est très importante. Il s'agit d'un système de gestion de base de données relationnel open source qui est largement utilisé dans divers scénarios d'application. 1) MySQL fournit des fonctions efficaces de stockage de données, d'organisation et de récupération, en prenant en charge les systèmes Web, mobiles et de niveau d'entreprise. 2) Il utilise une architecture client-serveur, prend en charge plusieurs moteurs de stockage et optimisation d'index. 3) Les usages de base incluent la création de tables et l'insertion de données, et les usages avancés impliquent des jointures multiples et des requêtes complexes. 4) Des questions fréquemment posées telles que les erreurs de syntaxe SQL et les problèmes de performances peuvent être déboguées via la commande Explication et le journal de requête lente. 5) Les méthodes d'optimisation des performances comprennent l'utilisation rationnelle des indices, la requête optimisée et l'utilisation des caches. Les meilleures pratiques incluent l'utilisation des transactions et des acteurs préparés

Pourquoi utiliser MySQL? Avantages et avantages Pourquoi utiliser MySQL? Avantages et avantages Apr 12, 2025 am 12:17 AM

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

Comment se connecter à la base de données d'Apache Comment se connecter à la base de données d'Apache Apr 13, 2025 pm 01:03 PM

Apache se connecte à une base de données nécessite les étapes suivantes: Installez le pilote de base de données. Configurez le fichier web.xml pour créer un pool de connexion. Créez une source de données JDBC et spécifiez les paramètres de connexion. Utilisez l'API JDBC pour accéder à la base de données à partir du code Java, y compris l'obtention de connexions, la création d'instructions, les paramètres de liaison, l'exécution de requêtes ou de mises à jour et de traitement des résultats.

Comment démarrer MySQL par Docker Comment démarrer MySQL par Docker Apr 15, 2025 pm 12:09 PM

Le processus de démarrage de MySQL dans Docker se compose des étapes suivantes: Tirez l'image MySQL pour créer et démarrer le conteneur, définir le mot de passe de l'utilisateur racine et mapper la connexion de vérification du port Créez la base de données et l'utilisateur accorde toutes les autorisations sur la base de données

CentOS installe MySQL CentOS installe MySQL Apr 14, 2025 pm 08:09 PM

L'installation de MySQL sur CENTOS implique les étapes suivantes: Ajout de la source MySQL YUM appropriée. Exécutez la commande YUM Install MySQL-Server pour installer le serveur MySQL. Utilisez la commande mysql_secure_installation pour créer des paramètres de sécurité, tels que la définition du mot de passe de l'utilisateur racine. Personnalisez le fichier de configuration MySQL selon les besoins. Écoutez les paramètres MySQL et optimisez les bases de données pour les performances.

See all articles