Lors de l'interrogation de données à partir d'une base de données, les données de plusieurs tables sont souvent utilisées et certaines données doivent être obtenues à partir de deux tables ou plus.
Par exemple, il y a deux tableaux ici, à savoir le tableau d'information sur les étudiants (tableau A) et le tableau des relevés de notes des élèves (tableau B).
étourdir | étourdir | Majeur | âge |
---|---|---|---|
20200101 | Zhang San | Génie logiciel | 18 |
20200102 | Li Li | informatique et technologie | 19 |
20200103 | Wang Wu | informatique | 20 |
20200104 | Zhang Xiao | Génie logiciel | 20 |
étourdir | nom de famille | math | Anglais | shujujiegou |
---|---|---|---|---|
20200101 | Zhang San | 67 | 80 | 60 |
20200102 | Li Li | 80 | 85 | 89 |
20200103 | Wang Wu | 75 | 75 | 90 |
20200104 | Zhang Xiao | 75 | 75 | 95 |
Exemple 1: Supposons que nous voulions interroger les scores des étudiants dont la majeure est l'ingénierie des transferts. Vous pouvez voir que les informations professionnelles se trouvent dans le tableau A et que les informations sur les scores se trouvent dans le tableau B. Si nous voulons interroger, nous devons utiliser le tableau A comme base, car nous devons d'abord vérifier Pour les étudiants qui se spécialisent en génie logiciel, nous utiliserons le tableau A comme tableau de gauche et utiliserons la jointure gauche pour interroger.
L'instruction de requête est:
select A.stunum,A.stuname,A.major,B.math,B.english,B.shujujiegou #查询A表的学号、A表的姓名、A表的专业、以及B表数学、英语、数据结构成绩。
from A left john B #从A与B的左连接表中
where major="软件工程" and A.stunum=B.stunum #条件是专业为软件工程且学号相等
order by A.stumun asc; 按学号升序排列
Le résultat de la requête est que les champs de gauche à droite sont l'ID de l'étudiant, le nom, la majeure, le score en mathématiques, le score en anglais et le score de la structure de données.
20200101 | Zhang San | Génie logiciel | 67 | 80 | 60 |
---|---|---|---|---|---|
20200104 | Zhang Xiao | Génie logiciel | 75 | 75 | 95 |
Il s'agit de l'utilisation de left john, et la requête est basée sur la table de gauche.
Exemple 2 Supposons que vous souhaitiez interroger l'ID étudiant, le nom, la majeure et l'âge des étudiants dont le score de structure de données est supérieur à 80. À partir du tableau, vous pouvez voir que les résultats sont dans le tableau B, vous devez donc d'abord interroger la table B pour trouver les étudiants dont le score de structure de données est supérieur à 80 points, puis accéder à la table A pour interroger les champs majeur et âge.
L'instruction de requête est:
select A.stunum,A.stuname,A.major,A.age,B.shujujiegou #查询学号、姓名、专业、年龄、数据结构分数
from A right john B #从A与B的右连接表中
where B.shujujiegou >'80'and A.stunum=B.stunum #条件是数据结构分数大于80且A与B的学号相等
order by B.shujujiegou asc;#按数据结构分数升序排列
Le résultat de la requête est que les champs de gauche à droite sont l'ID de l'étudiant, le nom, la majeure, l'âge et le score de la structure de données.
20200102 | Li Li | informatique et technologie | 19 | 89 |
---|---|---|---|---|
20200103 | Wang Wu | informatique | 20 | 90 |
20200104 | Zhang Xiao | Génie logiciel | 20 | 95 |
C'est ainsi que right john est utilisé pour interroger en fonction de la bonne table.