MySQL - requête de jointure et sous-requête

1. Requête de connexion

Requête à table unique : l'interrogation de données dans une table est appelée requête à table unique.

Requête de jointure, combinant deux (plusieurs) tables, interrogeant des données dans deux (plusieurs) tables, interrogeant une partie d'une table et interrogeant une autre partie de données dans une autre table, cette requête croisée, connectant plusieurs tables La méthode d'interrogation des données de une table s'appelle une requête de jointure !

La requête de connexion est divisée en : syntaxe SQL92, syntaxe SQL99. À l'heure actuelle, le courant dominant utilise la syntaxe SQL99.

La structure grammaticale de SQL92 est plus grossière et la structure grammaticale n'est pas claire.Le jugement sur la connexion aux tables et d'autres conditions est placé après où, ce qui est très déroutant. sélectionner.....à partir de.....où....

La structure grammaticale de SQL99 est claire : une certaine table est connectée à une autre table par jointure, puis la condition de jugement est placée après. select.....from...inner join.....on...inner join...on...where...(inner peut être omis, mais ajouter La structure grammaticale ci-dessus est plus claire)

Phénomène produit cartésien :

Lors de la connexion de deux tables pour une requête, s'il n'y a pas de limite, le nombre de requêtes est le produit de tous les enregistrements des deux tables !

A cette époque, le rôle des contraintes de connexions internes et externes se reflète !

1. Connexion intérieure :

Connexion équivalente : le résultat de la requête est déterminé par le signe égal de la condition Where

Bien que les résultats souhaités aient été interrogés ci-dessus, le nombre de requêtes n'a toujours pas diminué, il a simplement été filtré. En parallèle, on sait aussi que moins il y aura de tables connectées dans le futur, mieux c'est, sinon l'efficacité sera réduite !

Jointure de non-équivalence :

Auto-jointure : une table est traitée comme deux tables.

2. Jointure externe (droite/gauche + externe [l'extérieur peut être omis]) :

La différence entre la jointure interne et la jointure externe : la jointure interne n'a pas de relation primaire et secondaire, deux (plusieurs) tables sont au même niveau, tandis que la jointure externe a une relation primaire et secondaire, principalement pour vérifier quoi, et deuxièmement pour vérifier quoi !

Jointure externe gauche (gauche) : indique que la table à gauche du mot-clé de jointure est la table principale, principalement pour connaître les données du tableau de gauche, et d'ailleurs, également pour connaître les données du tableau de droite.

Jointure externe droite (à droite) : indique que la table à droite du mot-clé de jointure est la table principale, principalement pour connaître les données du tableau de droite, et d'ailleurs, également pour connaître les données du tableau de gauche.

Résumé : le nombre de requêtes pour les jointures externes >= le nombre de requêtes pour les jointures internes.

Requête multi-tables :

使用sélectionner .....à partir de ......rejoindre....sur......rejoindre....sur.....où.....regrouper par ..... ..ayant........commander avant .......

Par exemple, vérifiez : Découvrez le nom du département et le niveau de salaire de chaque employé, ainsi que le supérieur hiérarchique, affichez le nom de l'employé, le nom du leader, le nom du département, le salaire et le niveau de salaire.

sélectionnez e.ename,d.dname,n.ename comme '上级',e.sal,s.grade depuis emp e rejoignez le département d sur e.deptno = d.deptno rejoignez à gauche emp n sur e.mgr = n.empno rejoindre salgrade s sur e.sal entre s.losal et s.hisal ;

3. Connexion complète (rarement utilisée)


Deux, sous-requête

Sous-requête : l'instruction select est imbriquée dans l'instruction select et l'instruction select imbriquée est appelée une sous-requête.

Les instructions de sous-requête peuvent être placées derrière select, from,where.

Une sous-requête apparaît dans la clause Where :

Par exemple : recherchez le nom et le salaire des employés dont le salaire est supérieur à 800 yuans

Une sous-requête apparaît dans la clause from :

Remarque : La sous-requête dans from peut être une table temporaire parmi les éléments trouvés dans la sous-requête.

Exemple : Connaître l'échelle salariale du salaire moyen pour chaque emploi ?

select t.*,s.grade from (select job,avg(sal) as avgsal from emp group by job) t join salgrade s sur t.avgsal entre s.losal et s.hisal ;

select t.*,s.grade from (select ename,avg(sal) as avgsal from emp) t join salgrade s sur t.avgsal entre s.losal et s.hisal ;

Sous-requêtes apparaissant dans la clause select :

Rechercher le nom du service de chaque employé et demander d'afficher le nom du service et le nom de l'employé ?

sélectionnez e.ename, e.deptno, (sélectionnez dname depuis dept join emp sur emp.deptno = dept.deptno) depuis emp e ;

Remarque : Le résultat renvoyé par la sous-requête après la sélection ne peut renvoyer qu'un seul résultat. Lorsqu'il y a plusieurs résultats, une erreur sera signalée ! ! !

Je suppose que tu aimes

Origine blog.csdn.net/m0_73968621/article/details/132678288
conseillé
Classement