Maison >base de données >tutoriel mysql >Quelles sont les requêtes internes et externes de mysql ?
La requête interne de mysql définit les conditions de connexion et utilise des expressions conditionnelles pour éliminer certaines lignes de données dans les connexions croisées. Les résultats de la requête sont tous les enregistrements qui répondent aux conditions de connexion tandis que la requête externe connectera d'abord la table ; est divisé en une table de base et une table de référence, et les enregistrements qui remplissent ou non les conditions sont renvoyés en fonction de la table de base.
(Tutoriel recommandé : Tutoriel vidéo MySQL )
MySQL INNER JOIN : jointure interne La jointure interne de la requête
(INNER JOIN) supprime principalement les connexions croisées de certaines lignes de données dans les résultats de la requête en définissant des conditions de connexion. Pour faire simple, les expressions conditionnelles sont utilisées pour éliminer certaines lignes de données dans les connexions croisées.
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子句]
La description de la syntaxe est la suivante :
Nom du champ : Le nom du champ à interroger.
05cee8b6ad5efd33489a0be0260a7bbca31a6b5c4a9ac86f75409c3950db0e23 : le nom de la table qui nécessite une jointure interne.
INNER JOIN : Le mot-clé INNER peut être omis dans les jointures internes, et seul le mot-clé JOIN est utilisé.
Clause ON : utilisée pour définir les conditions de connexion des jointures internes.
INNER JOIN peut également utiliser la clause WHERE pour spécifier les conditions de connexion, mais la syntaxe INNER JOIN ... ON est la méthode d'écriture standard officielle, et la clause WHERE affectera la requête à un moment donné, la performance.
Lors de la connexion de plusieurs tables, utilisez simplement INNER JOIN ou JOIN en continu après FROM.
Les jointures internes peuvent interroger deux tables ou plus. Afin de permettre à chacun de mieux comprendre, nous n'expliquerons pour le moment que la requête de connexion entre deux tables.
Exemple
Entre la table tb_students_info et la table tb_course, utilisez les jointures internes pour interroger les noms des étudiants et les noms de cours correspondants. L'instruction SQL et les résultats d'exécution sont les suivants.
mysql> SELECT s.name,c.course_name FROM tb_students_info s INNER JOIN tb_course c -> ON s.course_id = c.id; +--------+-------------+ | name | course_name | +--------+-------------+ | Dany | Java | | Green | MySQL | | Henry | Java | | Jane | Python | | Jim | MySQL | | John | Go | | Lily | Go | | Susan | C++ | | Thomas | C++ | | Tom | C++ | +--------+-------------+ 10 rows in set (0.00 sec)
Dans l'instruction de requête ici, la relation entre les deux tables est spécifiée via INNER JOIN et les conditions de connexion sont données à l'aide de la clause ON.
Remarque : lors de l'interrogation de plusieurs tables, vous devez spécifier de quelle table proviennent les champs après l'instruction SELECT. Par conséquent, lors de l'interrogation de plusieurs tables, la méthode d'écriture après l'instruction SELECT est nom de la table.nom de la colonne. De plus, si le nom de la table est très long, vous pouvez également définir un alias pour la table, afin de pouvoir écrire l'alias de la table et le nom de la colonne directement après l'instruction SELECT.
MySQL LEFT/RIGHT JOIN : Requête de jointure externe
Les résultats de la requête de la jointure interne sont tous les enregistrements qui répondent aux conditions de connexion, et la jointure externe sera d'abord divisée en une table de base et une table de référence, puis les enregistrements qui remplissent et ne remplissent pas les conditions sont renvoyés en fonction de la table de base.
Les jointures externes peuvent être divisées en jointures externes gauches et jointures externes droites. Ce qui suit est une introduction aux jointures externes gauches et aux jointures externes droites basée sur des exemples.
Jointure gauche
Jointure externe gauche, également connue sous le nom de jointure gauche, utilise le mot-clé LEFT OUTER JOIN pour connecter deux tables et utilise le ON sous-phrase pour définir les conditions de connexion. Le format de syntaxe de
jointure gauche est le suivant :
SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>
La description de la syntaxe est la suivante.
Nom du champ : le nom du champ à interroger.
05cee8b6ad5efd33489a0be0260a7bbca31a6b5c4a9ac86f75409c3950db0e23 : le nom de la table qui nécessite une jointure à gauche.
LEFT OUTER JOIN : Le mot-clé OUTER peut être omis dans la jointure gauche et seul le mot-clé LEFT JOIN est utilisé.
Clause ON : utilisée pour définir la condition de connexion de la jointure gauche et ne peut pas être omise.
Dans la syntaxe ci-dessus, "Tableau 1" est la table de base et "Tableau 2" est la table de référence. Lors d'une requête avec une jointure gauche, vous pouvez interroger tous les enregistrements du « Tableau 1 » et les enregistrements correspondant aux conditions de jointure du « Tableau 2 ». Si une ligne du « Tableau 1 » n'a pas de ligne correspondante dans le « Tableau 2 », alors dans le résultat renvoyé, les valeurs des champs du « Tableau 2 » seront nulles (NULL).
Exemple 1
Avant d'effectuer la requête de jointure gauche, nous vérifions d'abord les données dans les tables tb_course et tb_students_info. Les instructions SQL et les résultats d'exécution sont les suivants.
mysql> SELECT * FROM tb_course; +----+-------------+ | id | course_name | +----+-------------+ | 1 | Java | | 2 | MySQL | | 3 | Python | | 4 | Go | | 5 | C++ | | 6 | HTML | +----+-------------+ 6 rows in set (0.00 sec) 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 | | 11 | LiMing | 22 | 男 | 180 | 7 | +----+--------+------+------+--------+-----------+ 11 rows in set (0.00 sec)
Interrogez tous les noms d'étudiants et les noms de cours correspondants dans les tables tb_students_info et tb_course, y compris les étudiants sans cours. L'instruction SQL et les résultats d'exécution sont les suivants.
mysql> SELECT s.name,c.course_name FROM tb_students_info s LEFT OUTER JOIN tb_course c -> ON s.`course_id`=c.`id`; +--------+-------------+ | name | course_name | +--------+-------------+ | Dany | Java | | Henry | Java | | NULL | Java | | Green | MySQL | | Jim | MySQL | | Jane | Python | | John | Go | | Lily | Go | | Susan | C++ | | Thomas | C++ | | Tom | C++ | | LiMing | NULL | +--------+-------------+ 12 rows in set (0.00 sec)
Vous pouvez voir que le résultat en cours affiche 12 enregistrements. L'étudiant nommé LiMing n'a actuellement aucun cours car il n'y a aucune information de cours pour l'étudiant dans la table tb_course correspondante, donc cet enregistrement est uniquement retiré de. la table tb_students_info. La valeur correspondante dans la table tb_course est NULL.
Jointure à droite
La jointure externe droite est également appelée jointure à droite, et la jointure à droite est la jointure inversée de la jointure à gauche. Utilisez le mot-clé RIGHT OUTER JOIN pour joindre les deux tables et utilisez la clause ON pour définir les conditions de jointure. Le format de syntaxe de
jointure à droite est le suivant :
SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>
La description de la syntaxe est la suivante.
Nom du champ : le nom du champ à interroger.
cc850cc925b27bf1d57f25e37031a14d400ebfdb8c111565a1c54094f4979ff6:需要右连接的表名。
RIGHT OUTER JOIN:右连接中可以省略 OUTER 关键字,只使用关键字 RIGHT JOIN。
ON 子句:用来设置右连接的连接条件,不能省略。
与左连接相反,右连接以“表2”为基表,“表1”为参考表。右连接查询时,可以查询出“表2”中的所有记录和“表1”中匹配连接条件的记录。如果“表2”的某行在“表1”中没有匹配行,那么在返回结果中,“表1”的字段值均为空值(NULL)。
例 2
在 tb_students_info 表和 tb_course 表中查询所有课程,包括没有学生的课程,SQL 语句和运行结果如下。
mysql> SELECT s.name,c.course_name FROM tb_students_info s RIGHT OUTER JOIN tb_course c -> ON s.`course_id`=c.`id`; +--------+-------------+ | name | course_name | +--------+-------------+ | Dany | Java | | Green | MySQL | | Henry | Java | | Jane | Python | | Jim | MySQL | | John | Go | | Lily | Go | | Susan | C++ | | Thomas | C++ | | Tom | C++ | | NULL | HTML | +--------+-------------+ 11 rows in set (0.00 sec)
可以看到,结果显示了 11 条记录,名称为 HTML 的课程目前没有学生,因为对应的 tb_students_info 表中并没有该学生的信息,所以该条记录只取出了 tb_course 表中相应的值,而从 tb_students_info 表中取出的值为 NULL。
多个表左/右连接时,在 ON 子句后连续使用 LEFT/RIGHT OUTER JOIN 或 LEFT/RIGHT JOIN 即可。
使用外连接查询时,一定要分清需要查询的结果,是需要显示左表的全部记录还是右表的全部记录,然后选择相应的左连接和右连接。
相关推荐:php培训
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!