: le nom de la table qui nécessite une connexion croisée. Clause WHERE : utilisée pour définir les conditions de requête pour les connexions croisées.
Remarque : lorsque plusieurs tables sont jointes de manière croisée, utilisez simplement CROSS JOIN ou, en continu après FROM. Les résultats de retour des deux syntaxes ci-dessus sont les mêmes, mais la première syntaxe est la méthode d'écriture standard officiellement recommandée.
Lorsqu'il n'y a pas de relation entre les tables connectées, nous omettrons la clause WHERE. Dans ce cas, le résultat renvoyé est le produit cartésien des deux tables, et le nombre de résultats renvoyés est le produit du. lignes de données des deux tables. Il convient de noter que si chaque table comporte 1 000 lignes, alors le nombre de résultats renvoyés sera de 1 000 × 1 000 = 1 000 000 lignes et la quantité de données est très énorme.
La connexion croisée peut interroger deux tables ou plus Afin de donner aux lecteurs une meilleure compréhension, ce qui suit expliquera d'abord la requête de connexion croisée de deux tables.
Exemple
Interrogez le tableau d'informations sur l'élève et le tableau d'informations sur le sujet, et obtenez un produit cartésien.
Afin de faciliter l'observation des résultats en cours après la connexion croisée entre la table d'informations sur l'étudiant et la table sujet, nous interrogeons d'abord les données de ces deux tables séparément, puis effectuons la requête de connexion croisée.
1) Interrogez les données dans la table tb_students_info. L'instruction SQL et les résultats d'exécution sont les suivants :
mysql> SELECT * FROM tb_students_info;
+----+--------+------+------+--------+-----------+
| id | name | age | sex | height | course_id |
+----+--------+------+------+--------+-----------+
| 1 | Dany | 25 | 男 | 160 | 1 |
| 2 | Green | 23 | 男 | 158 | 2 |
| 3 | Henry | 23 | 女 | 185 | 1 |
| 4 | Jane | 22 | 男 | 162 | 3 |
| 5 | Jim | 24 | 女 | 175 | 2 |
| 6 | John | 21 | 女 | 172 | 4 |
| 7 | Lily | 22 | 男 | 165 | 4 |
| 8 | Susan | 23 | 男 | 170 | 5 |
| 9 | Thomas | 22 | 女 | 178 | 5 |
| 10 | Tom | 23 | 女 | 165 | 5 |
+----+--------+------+------+--------+-----------+
10 rows in set (0.00 sec)
Copier après la connexion
2) Interrogez les données dans la table tb_course. comme suit :
mysql> SELECT * FROM tb_course;
+----+-------------+
| id | course_name |
+----+-------------+
| 1 | Java |
| 2 | MySQL |
| 3 | Python |
| 4 | Go |
| 5 | C++ |
+----+-------------+
5 rows in set (0.00 sec)
Copier après la connexion
3) Utilisez CROSS JOIN pour interroger le produit cartésien des deux tables. L'instruction SQL et les résultats d'exécution sont les suivants :
mysql> SELECT * FROM tb_course CROSS JOIN tb_students_info;
+----+-------------+----+--------+------+------+--------+-----------+
| id | course_name | id | name | age | sex | height | course_id |
+----+-------------+----+--------+------+------+--------+-----------+
| 1 | Java | 1 | Dany | 25 | 男 | 160 | 1 |
| 2 | MySQL | 1 | Dany | 25 | 男 | 160 | 1 |
| 3 | Python | 1 | Dany | 25 | 男 | 160 | 1 |
| 4 | Go | 1 | Dany | 25 | 男 | 160 | 1 |
| 5 | C++ | 1 | Dany | 25 | 男 | 160 | 1 |
| 1 | Java | 2 | Green | 23 | 男 | 158 | 2 |
| 2 | MySQL | 2 | Green | 23 | 男 | 158 | 2 |
| 3 | Python | 2 | Green | 23 | 男 | 158 | 2 |
| 4 | Go | 2 | Green | 23 | 男 | 158 | 2 |
| 5 | C++ | 2 | Green | 23 | 男 | 158 | 2 |
| 1 | Java | 3 | Henry | 23 | 女 | 185 | 1 |
| 2 | MySQL | 3 | Henry | 23 | 女 | 185 | 1 |
| 3 | Python | 3 | Henry | 23 | 女 | 185 | 1 |
| 4 | Go | 3 | Henry | 23 | 女 | 185 | 1 |
| 5 | C++ | 3 | Henry | 23 | 女 | 185 | 1 |
| 1 | Java | 4 | Jane | 22 | 男 | 162 | 3 |
| 2 | MySQL | 4 | Jane | 22 | 男 | 162 | 3 |
| 3 | Python | 4 | Jane | 22 | 男 | 162 | 3 |
| 4 | Go | 4 | Jane | 22 | 男 | 162 | 3 |
| 5 | C++ | 4 | Jane | 22 | 男 | 162 | 3 |
| 1 | Java | 5 | Jim | 24 | 女 | 175 | 2 |
| 2 | MySQL | 5 | Jim | 24 | 女 | 175 | 2 |
| 3 | Python | 5 | Jim | 24 | 女 | 175 | 2 |
| 4 | Go | 5 | Jim | 24 | 女 | 175 | 2 |
| 5 | C++ | 5 | Jim | 24 | 女 | 175 | 2 |
| 1 | Java | 6 | John | 21 | 女 | 172 | 4 |
| 2 | MySQL | 6 | John | 21 | 女 | 172 | 4 |
| 3 | Python | 6 | John | 21 | 女 | 172 | 4 |
| 4 | Go | 6 | John | 21 | 女 | 172 | 4 |
| 5 | C++ | 6 | John | 21 | 女 | 172 | 4 |
| 1 | Java | 7 | Lily | 22 | 男 | 165 | 4 |
| 2 | MySQL | 7 | Lily | 22 | 男 | 165 | 4 |
| 3 | Python | 7 | Lily | 22 | 男 | 165 | 4 |
| 4 | Go | 7 | Lily | 22 | 男 | 165 | 4 |
| 5 | C++ | 7 | Lily | 22 | 男 | 165 | 4 |
| 1 | Java | 8 | Susan | 23 | 男 | 170 | 5 |
| 2 | MySQL | 8 | Susan | 23 | 男 | 170 | 5 |
| 3 | Python | 8 | Susan | 23 | 男 | 170 | 5 |
| 4 | Go | 8 | Susan | 23 | 男 | 170 | 5 |
| 5 | C++ | 8 | Susan | 23 | 男 | 170 | 5 |
| 1 | Java | 9 | Thomas | 22 | 女 | 178 | 5 |
| 2 | MySQL | 9 | Thomas | 22 | 女 | 178 | 5 |
| 3 | Python | 9 | Thomas | 22 | 女 | 178 | 5 |
| 4 | Go | 9 | Thomas | 22 | 女 | 178 | 5 |
| 5 | C++ | 9 | Thomas | 22 | 女 | 178 | 5 |
| 1 | Java | 10 | Tom | 23 | 女 | 165 | 5 |
| 2 | MySQL | 10 | Tom | 23 | 女 | 165 | 5 |
| 3 | Python | 10 | Tom | 23 | 女 | 165 | 5 |
| 4 | Go | 10 | Tom | 23 | 女 | 165 | 5 |
| 5 | C++ | 10 | Tom | 23 | 女 | 165 | 5 |
+----+-------------+----+--------+------+------+--------+-----------+
50 rows in set (0.00 sec)
Copier après la connexion
Comme le montrent les résultats d'exécution. , après la requête de jointure croisée des tables tb_course et tb_students_info, 50 éléments ont été renvoyés Record. Comme vous pouvez l'imaginer, lorsqu'il y a beaucoup de données dans le tableau, les résultats courants obtenus seront très longs et les résultats courants obtenus ne sont pas très significatifs. Par conséquent, cette méthode de requête multi-tables via connexion croisée n’est pas couramment utilisée et nous devrions essayer d’éviter ce type de requête.
Produit cartésien
Le produit cartésien fait référence au produit de deux ensembles X et Y.
Par exemple, il existe deux ensembles A et B, leurs valeurs sont les suivantes :
A = {1,2}
B = {3,4,5}
Copier après la connexion
Les ensembles résultats des ensembles A×B et B×A sont respectivement exprimés comme :
A×B={(1,3), (1,4), (1,5), (2,3), (2,4), (2,5) };
B×A={(3,1), (3,2), (4,1), (4,2), (5,1), (5,2) };
Copier après la connexion
Les résultats ci-dessus de A×B et B×A sont appelés le produit cartésien des deux ensembles.
Et, à partir des résultats ci-dessus, nous pouvons voir :
La multiplication de deux ensembles ne satisfait pas le taux de change, c'est-à-dire A×B≠B× UN.
Le produit cartésien de l'ensemble A et de l'ensemble B est le nombre d'éléments de l'ensemble A × le nombre d'éléments de l'ensemble B.
L'algorithme suivi par la requête multi-tables est le produit cartésien mentionné ci-dessus. La connexion entre les tables peut être considérée comme une opération de multiplication. Dans les applications pratiques, l'utilisation d'un produit cartésien doit être évitée car le produit cartésien contient facilement une grande quantité de données déraisonnables, ce qui signifie simplement que cela peut facilement conduire à des résultats de requête en double et déroutants.
Inner JOIN
INNER JOIN combine les enregistrements dans deux tables et renvoie les champs associés en définissant les conditions de connexion. Enregistrements correspondants, c'est-à-dire l'intersection ( ombré) une partie des deux tableaux est renvoyée.
La jointure interne utilise le mot-clé INNER JOIN pour connecter deux tables et utilise la clause ON pour définir les conditions de connexion. Sans conditions de jointure, INNER JOIN et CROSS JOIN sont syntaxiquement équivalents et interchangeables. Le format de syntaxe de
jointure interne est le suivant :
SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]
Copier après la connexion
La description de la syntaxe est la suivante.