Maison >base de données >tutoriel mysql >Exemple d'analyse des opérations de requête d'agrégation et de requête d'union MySQL
Totaux statistiques communs, calcul des valeurs d'égalité et autres les opérations peuvent être Utilisez des fonctions d'agrégation pour y parvenir. Les fonctions d'agrégation courantes sont : ##🎜 🎜#
Notez que les instructions Where et Order By peuvent être ajoutées à la fin, ces fonctions d'agrégation seront basées sur ces instructions Interrogez l'ensemble de résultats
Il est préférable de ne pas ajouter de limite après, car la limite de MySQL est différente de celle des autres bases de données# 🎜🎜## 🎜🎜#Lorsque vous utilisez des fonctions d'agrégation de colonnes statistiques, évitez d'écrire d'autres colonnes, sinon la première colonne s'affichera sans signification
2.sum , max, min et avg ne peuvent pas être transmis dans *, les champs ou expressions doivent être transmis en utilisant
3.avg peut être combiné avec sum et plusieurs fonctions d'agrégation peuvent être utilisées ensemble#🎜🎜 ## 🎜🎜#2.Clause GROUP BY Utilisez la clause GROUP BY pour effectuer des requêtes de groupe sur des colonnes spécifiques. À respecter : lors de l'utilisation de GROUP BY pour une requête de regroupement, le champ spécifié par SELECT doit être le "regroupement par champ", et les autres champs doivent être inclus dans la fonction d'agrégation s'ils souhaitent apparaître dans SELECT.La fonction d'agrégation derrière Select est effectuée une fois que Group by a terminé le regroupement
Group by The essence de l'instruction est le regroupement, qui est souvent utilisé avec des requêtes globales ## 🎜🎜#
Les champs spécifiés par Select doivent être présents après group by. Ceux qui ne sont pas disponibles ne peuvent apparaître que dans la fonction d'agrégation, sinon des problèmes surviendront
.
GROUP BY Notes1 L'essence de l'instruction Group by est le regroupement, qui est souvent utilisé avec des requêtes globales
3. Dans l'opération de regroupement, la requête permet de regrouper des champs et d'autres fonctions non groupées doivent garantir qu'il n'y a pas plusieurs lignes après. regroupement (comme le regroupement des identifiants d'étudiant, le champ de requête peut avoir des noms d'étudiants, car les étudiants Après le regroupement par identifiant, il n'y a qu'une seule ligne)
#🎜 🎜#
L'exécution commence à partir du premier, donc l'alias est généralement nommé ici. nommez-le également dans select, mais select est exécuté plus tard et les endroits nommés lors de l'exécution précédente ne seront pas utilisés.
La limite est toujours exécutée à la fin
5.---sélectionnez classid, moyenne (score ) de l'élève dont le score>60 est regroupé par classid ayant classidRecherchez d'abord les lignes avec un score >=3, puis regroupez-les par classid
ligne, affichant le score total (montrant le score moyen des élèves dont les scores dans les classes 1, 2 et 3 sont supérieurs à 60 points)
6.group by consiste à fusionner les lignes en double en une seule ligne# 🎜🎜 #
7. Lors d'un regroupement par plusieurs champs, ils ne peuvent pas être fusionnés, mais l'effet de regroupement est obtenu et la fonction d'agrégation peut être utilisée. 3.HAVINGClause GROUP BY Après le regroupement, lorsque vous devez filtrer conditionnellement les résultats regroupés, vous ne pouvez pas utiliser l'instruction WHERE, mais devez utiliser HAVING. HAVING est exécuté après GROUP BYVous ne pourrez peut-être pas faire la différence entre la condition de jointure et la condition d'ensemble de résultats de filtre dans la deuxième méthode. Vous pouvez utiliser l'un ou l'autre, mais donner la priorité à la première, afin de correspondre aux jointures externes qui suivent. La jointure interne équivaut à donner la condition de connexion sur le produit cartésien obtenu
Si group by n'est pas utilisé ici, il ressemblera à ce qui suit Il y a une seule ligne, ce qui équivaut à additionner tous les scores de tous les élèves. Puisque nous avons besoin du score total de chaque élève, nous devons d’abord les regrouper en fonction de la carte d’étudiant.
2. Les jointures externes
Les jointures externes sont divisées en jointures externes gauches et jointures externes droites. La jointure externe gauche est une méthode de connexion lorsque la table de gauche est entièrement affichée lorsqu'une requête conjointe est effectuée ; la jointure externe droite est une méthode de connexion lorsque la table de droite est entièrement affichée lorsqu'une requête conjointe est effectuée. Remarque : Jointure à gauche : Les données du tableau de gauche ne seront pas basées sur la connexionest filtrée et toutes affichées. D'autres conditions peuvent toujours être filtrées, comme l'ajout de où et d'autres conditions plus tard.
S'il y a des données dans le tableau de droite avec des valeurs qui ne remplissent pas les conditions de connexion, les données du tableau de droite afficheront null et le tableau de gauche affichera afficher toutGrammaire : (Remarque : On peut être suivi de où)
#🎜🎜 #La même méthode de requête, cette fois peut afficher les informations du 8ème élève dont le score est vide Toutes les données du tableau de gauche, c'est-à-dire que le tableau des élèves sera affiché, et ne sera pas soumis à la condition de connexion stu.id = sco.student_id L'influence des conditions de connexion, s'il s'agit de la précédente
connexion interne
, alors #🎜 🎜#ne peut pas afficher les informations de l'étranger qui apprend le chinois#🎜 🎜#, car il n'y a pas de carte d'étudiant pour les étrangers qui étudient le chinois dans la table sco. 3. L'auto-adhésionL'auto-adhésion signifie se connecter à la même table pour une requête. Scénario d'utilisation : Comparez plusieurs lignes dans le même tableau.
Remarque : les requêtes d'auto-jointure peuvent également être interrogées à l'aide de l'instruction join on.4. 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 #🎜🎜 #
Requête et camarades de classe des étudiants « ne veulent pas obtenir leur diplôme » : (auto-connexion) Sous-requête à plusieurs lignes : renvoyer la sous-requête pour enregistrements multi-lignes (utilisés fréquemment) Cas : Interroger les informations de note des cours de « chinois » ou « d'anglais » : (connexion interne)#🎜 🎜#
Le groupe par ici ne joue pas un rôle dans la fusion, mais joue un rôle dans le regroupement# 🎜 🎜#5. Requête de fusion
Dans les applications pratiques, afin de fusionner les résultats d'exécution de plusieurs sélections, vous pouvez utiliser les opérateurs d'ensemble union et union all. Lorsque vous utilisez UNION et UNION ALL, les champs dans les ensembles de résultats de
avant et après la requête doivent être cohérents .**Dans certains cas, plusieurs tables ne peuvent pas être liées, mais vous devez interroger les données dans le même champ
union
Cet opérateur est utilisé pour obtenir l'union de deux ensembles de résultats. Cet opérateur éliminera automatiquement les lignes en double dans l'ensemble de résultats et déduquera automatiquement lorsque le contenu des données est exactement le même.
Cas : Requête de cours avec un ID inférieur à 3, ou dont le nom est « Anglais » :
Cet opérateur est utilisé pour obtenir l'union de deux jeux de résultats. Lorsque cet opérateur est utilisé, les lignes en double dans le jeu de résultats ne sont pas supprimées. (Lorsque les données obtenues sont exactement les mêmes, elles seront affichées et aucune duplication ne sera supprimée)
Cas : Requête de cours avec ID inférieur à 3 ou avec le nom "Java"
#🎜🎜 #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!