Skip to main content

1. Mots

Query Tableaux multiples, également appelés requêtes de connexion multi-table; En tant que mode de requête le plus important de bases de données relationnelles, il est largement utilisé dans le travail quotidien

Les activités de requête de table commune comprennent: Connexions internes Connexion externe, connexion externe, connexion complète, connexion croisée


. L'article utilisera une instance pour introduire chacune de ces opérations






# 学生表:studentcreate table student( id int not null primary key, name varchar(255) null, age int null) comment '学生表';# 选课记录表:recordcreate table record( id int not null primary key, name varchar(255) not null, student_id int not null, time datetime null) comment '选课记录';
# 学生表数据1,张三,182,李四,233,王五,304,马六,355,孙七,406,朱八,197,黄九,53# 记录表数据2021001,语文,1,2021-01-18 15:32:472021002,数学,2,2021-01-18 15:33:412021003,英语,3,2021-01-18 15:34:012021004,物理,4,2021-01-18 15:34:332021005,体育,5,2021-01-18 15:34:472021006,化学,8,2021-01-18 15:35:122021007,生物,9,2021-01-18 15:35:392021008,音乐,10,2021-01-18 15:36:00



# 子查询select * from student where id in (select student_id from record where student_id<=3)
# 子查询的结果1,张三,182,李四,233,王五,30)



# 内连接select * from student s inner join record r on s.id=r.student_id;
# 内连接查询结果1,张三,18,2021001,语文,1,2021-01-18 15:32:472,李四,23,2021002,数学,2,2021-01-18 15:33:413,王五,30,2021003,英语,3,2021-01-18 15:34:014,马六,35,2021004,物理,4,2021-01-18 15:34:335,孙七,40,2021005,体育,5,2021-01-18 15:34:47
] 2. Préparation


Obtenez la base de données MySQL à titre d'exemple, créant deux tables de données:

Étudiants - Table étudiante Ecrire - Choisissez des enregistrements
Parmi eux, le champ ID de la table étudiante correspond à l'étudiant School_ID dans la table d'enregistrement sélectionné
SQL comme suit:

Insérer des données dans 2 Tableau
3.1 Subquéries
# 左外连接select * from student s left join record r on s.id=r.student_id; ANTI-Extra, également appelée requise, est une requête dans la nichée où des clauses dans d'autres requêtes SQL

couramment utilisésDes restrictions en douceur sur les résultats de la requête pour renvoyer les données nécessaires; Les requêtes pour enfants peuvent être utilisées dans certaines instructions, sélectionner, mettre à jour et supprimer

# 左外连接结果1,张三,18,2021001,语文,1,2021-01-18 15:32:472,李四,23,2021002,数学,2,2021-01-18 15:33:413,王五,30,2021003,英语,3,2021-01-18 15:34:014,马六,35,2021004,物理,4,2021-01-18 15:34:335,孙七,40,2021005,体育,5,2021-01-18 15:34:476,朱八,19,NULL,NULL,NULL,NULL7,黄九,53,NULL,NULL,NULL,NULL ici, l'instruction SELECT est utilisée comme exemple, dans deux tables, en utilisant des avantages, filtrer les conditions satisfaites
# 右外连接select * from student s right join record r on s.id=r.student_id;
# 右外连接结果1,张三,18,2021001,语文,1,2021-01-18 15:32:472,李四,23,2021002,数学,2,2021-01-18 15:33:413,王五,30,2021003,英语,3,2021-01-18 15:34:014,马六,35,2021004,物理,4,2021-01-18 15:34:335,孙七,40,2021005,体育,5,2021-01-18 15:34:47NULL,NULL,NULL,2021006,化学,8,2021-01-18 15:35:12NULL,NULL,NULL,2021007,生物,9,2021-01-18 15:35:39NULL,NULL,NULL,2021008,音乐,10,2021-01-18 15:36:00



Les résultats sont les suivants:
Il faut noter que les requêtes pour enfants doivent être incluses entre parenthèses et ne peuvent pas être organisées de l'ordre de # 完全连接select * from student s full join record r on s.id = r.student_id;
3.2 Connexion à l'intérieur select * from student left join record on student.id = record.student_idunionselect * from student right join record on student.id = record.student_id;
. La connexion interne est connectée à deux tables via la participation des mots-clés interne, ne renvoie que sur les conditions ci-dessus, la fiche technique intersecte # 完全连接结果1,张三,18,2021001,语文,1,2021-01-18 15:32:472,李四,23,2021002,数学,2,2021-01-18 15:33:413,王五,30,2021003,英语,3,2021-01-18 15:34:014,马六,35,2021004,物理,4,2021-01-18 15:34:335,孙七,40,2021005,体育,5,2021-01-18 15:34:476,朱八,19,NULL,NULL,NULL,NULL7,黄九,53,NULL,NULL,NULL,NULLNULL,NULL,NULL,2021006,化学,8,2021-01-18 15:35:12NULL,NULL,NULL,2021007,生物,9,2021-01-18 15:35:39NULL,NULL,NULL,2021008,音乐,10,2021-01-18 15:36:00


Le résultat est le suivant:

doit noter que si la connexion interne Ne transmet pas la condition spécifiée sur le mot-clé, les résultats des mêmes résultats de requête croisée de la requête, mais les performances sont supérieures à la croix. Connexion


3.3 Connexion externe

La connexion externe comprend: Connexion externe à gauche Connecter le pH , Connexion externe: Utilisez le mot-clé Le congé, avec la table de gauche, revenez à la table de gauche toutes les données, les données rencontrées par la condition ci-dessus seront affichées, sinon la valeur NULL est remplie avec le bon externe Connexion : et la connexion gauche est inversée. Utilisez la touche droite pour vérifier toutes les données du panneau de droite, renvoyer toutes les données du panneau de droite, le panneau de gauche répond à toutes les conditions ci-dessus à afficher, sinon à l'aide du traitement NULL pour remplir Avant, voir Exemple de la connexion gauche , voyons la connexion droite renvoie le résultat est le suivant. : 3.4 Connexion complète Entièrement connectée, connectée à deux la table adopte des mots-clés à pleine participation, renvoie toutes les données de la table de gauche et le panneau droit et remplissage La valeur manquante à l'aide de valeurs null, il est important de noter que MySQL ne prend pas en charge les connexions complètes, NENNG Nous pouvons utiliser la connexion gauche + la connexion pour simuler la connexion complète Résultats comme indiqué dans: 3.5 Cross-connexion Cross-connexion, également connu sous le nom de cartésien, utilisant des mots-clés croisés pour connecter deux tables de requête Si vous n'utilisez pas où ajouter des conditions limitées, renvoyez le produit de deux tables; Si vous ajoutez une condition limitée, renvoyez les données pour respecter l'expression conditionnelle et l'agrégation d'une ligne pour rejoindre les restrictions croisées de connexion qui sont un portefeuille Les résultats sont les suivants. : Il convient de noter que si une requête de connexion croisée appartient à des conditions limitées, il s'agira de deux tables. Le nombre de lignes produit le jeu de résultats de la requête, puis filtré en limitant les conditions; Par conséquent, lorsque les données sont grandes, la vitesse de requête sera lente 4. Enfin par rapport à la requête de la table unique, les requêtes multi-table peuvent sur l'écriture.Plus de scènes d'affaires, améliorant considérablement notre efficacité de travail!En réel, vous pouvez l'utiliser en cas de besoin!

Sujets

Catégories