Maison > base de données > tutoriel mysql > Utilisez la fonction JOIN de MySQL pour joindre des tables

Utilisez la fonction JOIN de MySQL pour joindre des tables

WBOY
Libérer: 2023-07-26 08:37:18
original
1366 Les gens l'ont consulté

Utilisez la fonction JOIN de MySQL pour joindre des tables

Dans MySQL, JOIN est une opération très courante, qui nous permet de joindre deux ou plusieurs tables en fonction des champs associés entre elles. Cela facilite l'interrogation et l'obtention de données pertinentes à partir de plusieurs tables, améliorant ainsi l'efficacité et la flexibilité des requêtes. Cet article utilisera des exemples de code pour montrer comment utiliser la fonction JOIN de MySQL pour joindre des tables.

Créez d'abord deux exemples de tableaux : étudiants et scores. La table étudiants contient des informations de base sur les étudiants, y compris des champs tels que id, nom et âge ; scores contient des informations sur les performances des élèves, y compris des champs tels que id, subject et score. Les deux tables sont liées via le champ id de l'étudiant. studentsscoresstudents表包含学生的基本信息,包括idnameage等字段;scores表包含学生的成绩信息,包括idsubjectscore等字段。两个表之间通过学生的id字段关联。

-- 创建students表
CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

-- 插入示例数据
INSERT INTO students (id, name, age) VALUES
(1, 'Alice', 18),
(2, 'Bob', 20),
(3, 'Charlie', 19);

-- 创建scores表
CREATE TABLE scores (
    id INT,
    subject VARCHAR(50),
    score INT
);

-- 插入示例数据
INSERT INTO scores (id, subject, score) VALUES
(1, 'Math', 90),
(1, 'English', 85),
(2, 'Math', 95),
(2, 'English', 80),
(3, 'Math', 85),
(3, 'English', 90);
Copier après la connexion
  1. 内连接(INNER JOIN)

内连接是最常用的连接方式,它返回两个表中满足连接条件的记录。

SELECT students.name, scores.subject, scores.score
FROM students
INNER JOIN scores ON students.id = scores.id;
Copier après la connexion

以上代码会返回一个结果集,包含学生姓名、科目和成绩。

  1. 左连接(LEFT JOIN)

左连接返回左表中所有记录以及右表中满足连接条件的记录,如果右表中没有匹配的记录,那么结果中右表相关字段的值为NULL。

SELECT students.name, scores.score
FROM students
LEFT JOIN scores ON students.id = scores.id;
Copier après la connexion

以上代码会返回一个结果集,包含学生姓名和成绩。如果某个学生在scores表中没有对应的成绩记录,那么该学生的成绩字段值为NULL。

  1. 右连接(RIGHT JOIN)

右连接返回右表中所有记录以及左表中满足连接条件的记录,如果左表中没有匹配的记录,那么结果中左表相关字段的值为NULL。

SELECT students.name, scores.subject, scores.score
FROM students
RIGHT JOIN scores ON students.id = scores.id;
Copier après la connexion

以上代码会返回一个结果集,包含学生姓名、科目和成绩。如果某个科目在students表中没有对应的学生记录,那么该科目字段值为NULL。

  1. 全连接(FULL JOIN)

全连接返回左表和右表中所有记录,如果某个表中没有匹配的记录,那么结果中相关字段的值为NULL。

SELECT students.name, scores.subject, scores.score
FROM students
FULL JOIN scores ON students.id = scores.id;
Copier après la connexion

以上代码会返回一个结果集,包含学生姓名、科目和成绩。如果某个学生在scores表中没有对应的成绩记录,或者某个科目在studentsrrreee

  1. INNER JOIN (INNER JOIN)
La jointure interne est la méthode de connexion la plus couramment utilisée. Elle renvoie les enregistrements dans deux tables qui répondent aux conditions de jointure.

rrreee

Le code ci-dessus renverra un ensemble de résultats contenant les noms des étudiants, les matières et les notes.

  1. LEFT JOIN
La jointure gauche renvoie tous les enregistrements de la table de gauche et les enregistrements de la table de droite qui remplissent les conditions de jointure. la table de droite Enregistrements correspondants, alors la valeur du champ concerné dans la table de droite dans le résultat est NULL. 🎜rrreee🎜Le code ci-dessus renverra un ensemble de résultats contenant les noms et les notes des étudiants. Si un étudiant n'a pas d'enregistrement de score correspondant dans la table scores, la valeur du champ de score de l'étudiant est NULL. 🎜
  1. RIGHT JOIN
🎜Right JOIN renvoie tous les enregistrements de la table de droite et les enregistrements de la table de gauche qui remplissent les conditions de jointure s'il n'y a aucun enregistrement dans. la table de gauche Enregistrements correspondants, alors la valeur du champ concerné dans la table de gauche dans le résultat est NULL. 🎜rrreee🎜Le code ci-dessus renverra un ensemble de résultats contenant les noms des étudiants, les matières et les notes. Si une matière n'a pas de dossier d'élève correspondant dans la table étudiants, la valeur du champ matière est NULL. 🎜
  1. Full JOIN (FULL JOIN)
🎜La jointure complète renvoie tous les enregistrements de la table de gauche et de la table de droite. S'il n'y a aucun enregistrement correspondant dans une table, alors la valeur du champ concerné dans le résultat est NULL. 🎜rrreee🎜Le code ci-dessus renverra un ensemble de résultats contenant les noms des étudiants, les matières et les notes. Si un étudiant n'a pas d'enregistrement de score correspondant dans la table scores, ou si une certaine matière n'a pas d'enregistrement d'étudiant correspondant dans la table étudiants, alors la valeur du champ correspondant est NULL. 🎜🎜Grâce aux exemples ci-dessus, nous pouvons voir que la fonction JOIN de MySQL peut être utilisée pour joindre des tables de manière flexible, interrogeant et obtenant ainsi facilement des données pertinentes. Ce type d'opération est très courant dans les applications de bases de données réelles, en particulier lorsque la relation entre les données est complexe, il peut grandement améliorer l'efficacité et la flexibilité des requêtes. 🎜🎜Il est à noter que l'opération JOIN peut avoir un certain impact sur les performances de la base de données. Par conséquent, lors de l'utilisation de JOIN, l'optimisation doit être effectuée en fonction de la situation réelle et l'association entre les tables doit être conçue au mieux. 🎜

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