Maison > base de données > tutoriel mysql > le corps du texte

Quelle est la différence entre la jointure interne MySQL et la jointure externe ?

青灯夜游
Libérer: 2022-01-06 14:50:26
original
17934 Les gens l'ont consulté

La différence entre la connexion interne MySQL et la connexion externe : la connexion interne supprimera les données correspondantes dans la table de connexion, et les données sans correspondance ne seront pas conservées ; tandis que la connexion externe supprimera les données correspondantes dans la table de connexion, et les données sans correspondance seront également conservées, leur valeur est NULL.

Quelle est la différence entre la jointure interne MySQL et la jointure externe ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Différence

  • Jointure interne : supprimez les données correspondantes dans la table de connexion et ne conservez pas les données sans correspondance.
  • Jointure externe (jointure externe) : supprimez les données correspondantes dans la table de connexion et ne correspondent pas. les données sans correspondance seront également conservées et sa valeur est NULL

Example table

users table

mysql> select * from users;
+----+-------+
| id | name  |
+----+-------+
|  1 | john  |
|  2 | May   |
|  3 | Lucy  |
|  4 | Jack  |
|  5 | James |
+----+-------+
5 rows in set (0.00 sec)
Copier après la connexion

topics table

mysql> select * from topics;
+----+---------------------------------------+---------+
| id | title                                 | user_id |
+----+---------------------------------------+---------+
|  1 |  Hello world                          |       1 |
|  2 | PHP is the best language in the world |       2 |
|  3 | Laravel artist                        |       6 |
+----+---------------------------------------+---------+
3 rows in set (0.00 sec)
Copier après la connexion

inner join(inner join)

  • Example
mysql> select * from users as u inner join topics as t on u.id=t.user_id;
+----+------+----+---------------------------------------+---------+
| id | name | id | title                                 | user_id |
+----+------+----+---------------------------------------+---------+
|  1 | john |  1 |  Hello world                          |       1 |
|  2 | May  |  2 | PHP is the best language in the world |       2 |
+----+------+----+---------------------------------------+---------+
2 rows in set (0.00 sec)
Copier après la connexion

inner can. être omis, tout comme le nom de la table L'alias peut également être omis

mysql> select * from users u join topics t on u.id=t.user_id;
+----+------+----+---------------------------------------+---------+
| id | name | id | title                                 | user_id |
+----+------+----+---------------------------------------+---------+
|  1 | john |  1 |  Hello world                          |       1 |
|  2 | May  |  2 | PHP is the best language in the world |       2 |
+----+------+----+---------------------------------------+---------+
2 rows in set (0.00 sec)
Copier après la connexion

Les deux phrases ci-dessus sont équivalentes à

mysql> select * from users,topics where users.id=topics.user_id;
+----+------+----+---------------------------------------+---------+
| id | name | id | title                                 | user_id |
+----+------+----+---------------------------------------+---------+
|  1 | john |  1 |  Hello world                          |       1 |
|  2 | May  |  2 | PHP is the best language in the world |       2 |
+----+------+----+---------------------------------------+---------+
2 rows in set (0.00 sec)
Copier après la connexion

outer join

  • left external join (left external join) : utilisez la table de gauche comme principale table
  • jointure externe droite (jointure externe droite) : utilisez la table de droite comme table principale

Utilisez une certaine table comme table principale pour effectuer des requêtes associées, qu'elles soient liées ou non, les données. de la table principale sera conservée. Si elle ne peut pas être liée, elle sera affichée comme NULL

Explication populaire C'est-à-dire : supprimez d'abord toutes les données de la table principale, puis accédez à la table associée pour savoir s'il y en a. toute donnée qui répond aux conditions d'association. S'il y en a, elle sera affichée normalement. Sinon, elle sera affichée comme NULL

Exemple

mysql> select * from users as u left join topics as t on u.id=t.user_id;
+----+-------+------+---------------------------------------+---------+
| id | name  | id   | title                                 | user_id |
+----+-------+------+---------------------------------------+---------+
|  1 | john  |    1 |  Hello world                          |       1 |
|  2 | May   |    2 | PHP is the best language in the world |       2 |
|  3 | Lucy  | NULL | NULL                                  |    NULL |
|  4 | Jack  | NULL | NULL                                  |    NULL |
|  5 | James | NULL | NULL                                  |    NULL |
+----+-------+------+---------------------------------------+---------+
5 rows in set (0.00 sec)
Copier après la connexion

Équivalent à ce qui suit, c'est juste que les positions des champs sont différentes

mysql> select * from topics as t right join users as u on u.id=t.user_id;
+------+---------------------------------------+---------+----+-------+
| id   | title                                 | user_id | id | name  |
+------+---------------------------------------+---------+----+-------+
|    1 |  Hello world                          |       1 |  1 | john  |
|    2 | PHP is the best language in the world |       2 |  2 | May   |
| NULL | NULL                                  |    NULL |  3 | Lucy  |
| NULL | NULL                                  |    NULL |  4 | Jack  |
| NULL | NULL                                  |    NULL |  5 | James |
+------+---------------------------------------+---------+----+-------+
5 rows in set (0.00 sec)
Copier après la connexion
.

La jointure externe gauche et la jointure externe droite sont relatives, l'essentiel est de savoir quelle table est utilisée comme table principale pour faire l'association

[Recommandation associée : Tutoriel vidéo 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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal