Maison >base de données >tutoriel mysql >Explication détaillée de la requête multi-table de MySQL

Explication détaillée de la requête multi-table de MySQL

王林
王林avant
2019-08-23 15:48:413725parcourir

Tout d'abord, afin de faciliter l'explication du problème, créez deux tableaux emp (informations sur les employés) et dept (informations sur le service des employés). Les données sont les suivantes :

Explication détaillée de la requête multi-table de MySQLDans l'article précédent. , nous avons partagé une méthode de requête de table unique, mais dans les applications réelles, les données que nous souhaitons interroger ne se trouvent probablement pas dans la même table, mais proviennent de tables différentes. Si une requête multi-tables n’ajoute aucune condition, le résultat obtenu est appelé produit cartésien. Par exemple, recherchez le nom de l'employé, son salaire et le nom du service.

Explication détaillée de la requête multi-table de MySQL

On peut constater que le résultat est comme ceci, sélectionnez le premier enregistrement de la première table, combinez-le avec tous les enregistrements de la deuxième table, puis prenez le deuxième enregistrement de la première table et combinez-le avec tous les enregistrements de la deuxième table. Un tel résultat n'a aucun sens. Ce dont nous avons besoin, c'est de l'enregistrement avec le champ emp.deptno = dept.deptno.

Explication détaillée de la requête multi-table de MySQL

Auto-jointure

L'auto-jointure signifie joindre la requête dans la même table

pour afficher le supérieur de l'employé FORD Nom du leader

Explication détaillée de la requête multi-table de MySQL

Sous-requête

La sous-requête fait référence à une instruction select intégrée dans d'autres instructions SQL, également appelée requête d'imbrication .

Sous-requête à une seule ligne : Le résultat de la requête de la sous-requête n'a qu'une seule ligne

Affiche les employés du même service que SMITH

Explication détaillée de la requête multi-table de MySQL

Sous-requête à plusieurs lignes (dans, tout, n'importe lequel) : sous-requête qui renvoie plusieurs enregistrements

Interrogez les noms, les emplois, les salaires et les services des fonctionnaires qui ont le même emploi que le numéro des 10 meilleurs départements, mais n'inclut pas les propres informations du n° 10

Explication détaillée de la requête multi-table de MySQL

Affiche le nom, le salaire et le numéro de département des employés dont le salaire est supérieur au salaire de tous les employés portant le numéro de département 30

Explication détaillée de la requête multi-table de MySQL

Affiche le nom, le salaire et le numéro de département de l'employé dont le salaire est supérieur au salaire de tout employé portant le numéro de département 30

Explication détaillée de la requête multi-table de MySQL

Sous-requête multi-colonnes : une instruction de sous-requête qui renvoie plusieurs colonnes de données

Interroger les employés ayant le même service et le même poste que SMITH, à l'exclusion de SMITH lui-même

Explication détaillée de la requête multi-table de MySQL

Utilisez la sous-requête dans la clause from

pour afficher les informations sur les employés qui sont supérieures au salaire moyen de votre service

Explication détaillée de la requête multi-table de MySQL pour trouver le nom, l'emploi, le sal de la personne avec le salaire le plus élevé dans chaque département

Explication détaillée de la requête multi-table de MySQLAfficher les informations de chaque département (nom du département, numéro, adresse) et le nombre d'employés

Explication détaillée de la requête multi-table de MySQL

Il existe deux méthodes qui peuvent être utilisées ici, mais il a été vérifié que lorsqu'il y a beaucoup de données, l'efficacité de la sous-requête from est supérieure à celle de la requête multi-tables.

Supprimer les enregistrements en double dans la table

On sait qu'il y a des données en double dans une table tt

Créer une table vide tmp_tt La structure. de la table vide est la même que La structure de la table tt est la même ; créez la table tmp_tt comme tt ;

Distinguez la table tt et importez les données dans la table vide, insérez dans tmp_tt sélectionnez distinct * de tt ; ;

Supprimer la table d'origine ttdrop table tt;

Renommer tmp_tt en ttalter table tmp_tt renommer tt;

Fusionner la requête

Dans les applications pratiques, afin de fusionner plusieurs sélections Pour exécuter les résultats, vous pouvez utiliser les opérateurs union, union all set

1. L'opérateur union est utilisé pour obtenir l'union de deux résultats, puis supprimer automatiquement les doublons lignes pour trouver les personnes avec un salaire supérieur à 2500 et un poste de Manger

Explication détaillée de la requête multi-table de MySQL

2 syndicat tout est similaire au syndicat, mais ne supprimera pas automatiquement les doublons
Par exemple. : similaire à ou

Explication détaillée de la requête multi-table de MySQL

Clé étrangère

La clé étrangère définit la relation entre la table maître et la table esclave. sont principalement définis sur la table esclave. La table maître doit avoir une clé primaire ou une clé unique. Lorsqu'une clé étrangère est définie, les données de la colonne de clé étrangère doivent exister dans la colonne de la table principale ou être NULL.
Par exemple : créer une classe de table principale, à partir de la table stu

Explication détaillée de la requête multi-table de MySQL

Explication détaillée de la requête multi-table de MySQL

D'après la figure ci-dessus, nous pouvons savoir que la la clé primaire ne peut pas être nulle. Cependant, la clé étrangère peut être nulle et les données de la clé étrangère ne peuvent pas exister mais n'existent pas dans la table principale.

Pour plus de questions connexes, veuillez visiter le site Web PHP chinois : Tutoriel vidéo MySQL

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer