Maison  >  Article  >  base de données  >  Partage de techniques de requêtes complexes dans MySQL

Partage de techniques de requêtes complexes dans MySQL

WBOY
WBOYoriginal
2023-06-14 13:08:341991parcourir

MySQL est un système de gestion de bases de données relationnelles largement utilisé. Les requêtes complexes sont l'une des exigences les plus courantes lors de l'utilisation de MySQL. Comment effectuer avec élégance des tâches de requêtes complexes est une compétence essentielle pour les utilisateurs de MySQL. Cet article partagera quelques techniques de requêtes complexes dans MySQL pour aider les lecteurs à mieux maîtriser les requêtes MySQL.

1. Utilisez la clause WHERE pour filtrer les données

La clause WHERE est une clause très courante dans MySQL utilisée pour limiter l'ensemble de résultats renvoyés. En utilisant la clause WHERE, nous pouvons facilement filtrer les données inutiles et renvoyer des données qualifiées. Le format syntaxique de la clause WHERE est le suivant :

SELECT column_name(s) FROM table_name WHERE condition;

Parmi elles, la condition est la condition utilisée pour le filtrage, qui peut être les types de conditions suivants : conditions de comparaison, conditions de plage, conditions NULL, opérateurs logiques et caractères génériques, etc.

Par exemple, si nous voulons interroger tous les enregistrements de la table student dont le champ age est supérieur ou égal à 18 ans, nous pouvons écrire comme ceci :

SELECT * FROM student WHERE age>=18;

L'utilisation de la clause WHERE peut grandement améliorer l'efficacité et la limite de la requête les résultats dans la plage dont nous avons besoin. Dans le même temps, nous pouvons également utiliser plusieurs conditions pour filtrer les données, telles que :

SELECT * FROM student WHERE age>=18 AND gender='male';

2. Utilisez JOIN pour interroger plusieurs tables

JOIN est l'une des méthodes de requête les plus utilisées dans MySQL. Plusieurs tables peuvent être interrogées via. JOIN et les ensembles de résultats sont combinés en fonction des champs correspondants dans ces tables. L'opération JOIN peut combiner deux ensembles de données selon certaines conditions pour atteindre l'objectif de « lier » deux tables.

Il existe trois opérations JOIN : INNER JOIN, LEFT JOIN et RIGHT JOIN.

  1. INNER JOIN

INNER JOIN est l'opération JOIN la plus couramment utilisée. Elle sélectionne les enregistrements qui remplissent les conditions de deux tables en même temps, également appelée équijointure. Vous pouvez utiliser la clause ON pour spécifier les conditions de jointure. Par exemple, si l'on souhaite interroger le nom de l'élève et le nom de sa classe, on peut écrire ainsi :

SELECT student.name, class.class_name FROM student 
INNER JOIN class ON student.class_id=class.id;

Ce résultat de requête renverra le nom de l'élève et le nom de sa classe.

  1. LEFT JOIN

L'opération LEFT JOIN renverra tous les enregistrements de la table de gauche, ainsi que les enregistrements correspondant à la table de droite (le cas échéant). S'il n'y a aucun enregistrement correspondant dans la table de droite, NULL est renvoyé. Par exemple, si nous voulons interroger le nom de la classe et le nom des étudiants, nous pouvons écrire comme ceci :

SELECT class.class_name, student.name FROM class 
LEFT JOIN student ON student.class_id=class.id;

Ce résultat de requête renverra les noms de toutes les classes et les noms des étudiants (s'il y a des étudiants) . S'il n'y a aucun étudiant, le champ du nom affichera NULL.

  1. RIGHT JOIN

L'opération RIGHT JOIN est similaire à l'opération LEFT JOIN, sauf qu'elle renvoie tous les enregistrements de la table de droite et renvoie les enregistrements qui remplissent les conditions de la table de gauche (le cas échéant). S'il n'y a aucun enregistrement correspondant dans la table de gauche, NULL est renvoyé. Par exemple, si nous voulons interroger les noms des étudiants et les noms de leurs classes, nous pouvons écrire comme ceci :

SELECT student.name, class.class_name FROM student 
RIGHT JOIN class ON student.class_id=class.id;

Ce résultat de requête renverra les noms de tous les étudiants et les noms de leurs classes (le cas échéant). aucune classe ne remplit les conditions. Le champ du nom de la classe affiche NULL.

3. Utiliser une sous-requête

La sous-requête fait référence à l'imbrication d'une requête dans une autre requête. Dans MySQL, les sous-requêtes peuvent être utilisées dans les clauses WHERE, FROM et SELECT. Les sous-requêtes peuvent être utilisées pour implémenter des exigences de requête très complexes, telles que l'interrogation de la valeur maximale ou minimale d'un certain champ dans une table.

Par exemple, si nous voulons interroger le dossier de l'étudiant avec le troisième score le plus élevé parmi les étudiants, nous pouvons écrire comme ceci :

SELECT * FROM student WHERE score=(
  SELECT DISTINCT(score) FROM student GROUP BY score ORDER BY score DESC LIMIT 2,1);

Ce résultat de requête renverra le dossier de l'étudiant avec le troisième score le plus élevé parmi les étudiants.

4. Utiliser des tables temporaires

Les tables temporaires sont une fonction très utile dans MySQL Vous pouvez créer une table temporaire au moment de l'exécution et enregistrer les résultats de la requête dans cette table temporaire pour effectuer des opérations de données plus complexes. Les tables temporaires peuvent être créées à l'aide de l'instruction CREATE TEMPORARY TABLE ou construites à l'aide de l'instruction SELECT INTO.

Par exemple, si nous voulons interroger le score moyen et le score le plus élevé d'un élève au fil des années, nous pouvons l'écrire comme ceci :

CREATE TEMPORARY TABLE history_score (  
  `stu_id` INT NOT NULL,
  `avg_score` DECIMAL(5,2),
  `max_score` INT,
  PRIMARY KEY (`stu_id`)
);

INSERT INTO history_score(stu_id, avg_score, max_score)
SELECT s.id, AVG(score) AS avg_score, MAX(score) AS max_score FROM score AS sc 
INNER JOIN student AS s ON sc.stu_id = s.id
GROUP BY s.id;

SELECT st.name, sc.avg_score, sc.max_score FROM student AS st 
INNER JOIN history_score AS sc ON st.id = sc.stu_id;

Cette requête créera une table temporaire history_score et stockera le score moyen et le score le plus élevé score de chaque étudiant au fil des années dans la table temporaire, puis utilisez INNER JOIN pour connecter le nom de l'étudiant aux données de cette table temporaire afin d'obtenir le résultat final de la requête.

Résumé

En utilisant les techniques ci-dessus, nous pouvons effectuer des requêtes de données complexes dans MySQL, améliorer l'efficacité des requêtes et rendre les résultats des requêtes plus conformes à nos besoins. Bien entendu, avant d’effectuer des requêtes complexes, nous devons bien comprendre la syntaxe SQL ainsi que la structure des données et les caractéristiques de MySQL, afin de pouvoir mieux utiliser ces techniques de requête avancées.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn