Maison >base de données >tutoriel mysql >Explication détaillée de la requête multi-table de MySQL
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 :
Dans 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.
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.
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
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
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
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
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
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
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
pour trouver le nom, l'emploi, le sal de la personne avec le salaire le plus élevé dans chaque département
Afficher les informations de chaque département (nom du département, numéro, adresse) et le nombre d'employés
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
2 syndicat tout est similaire au syndicat, mais ne supprimera pas automatiquement les doublons
Par exemple. : similaire à ou
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
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!