Ce blog explique les clauses SQL telles que WHERE, HAVING, ORDER BY, GROUP BY et d'autres clauses connexes à l'aide d'exemples réels avec les tables des employés et des services.
emp_id | name | age | department_id | hire_date | salary |
---|---|---|---|---|---|
1 | John Smith | 35 | 101 | 2020-01-01 | 5000 |
2 | Jane Doe | 28 | 102 | 2019-03-15 | 6000 |
3 | Alice Johnson | 40 | 103 | 2018-06-20 | 7000 |
4 | Bob Brown | 55 | NULL | 2015-11-10 | 8000 |
5 | Charlie Black | 30 | 102 | 2021-02-01 | 5500 |
dept_id | dept_name |
---|---|
101 | HR |
102 | IT |
103 | Finance |
104 | Marketing |
La clause WHERE est utilisée pour filtrer les enregistrements en fonction de conditions spécifiées.
SELECT name, age, salary FROM employees WHERE age > 30;
name | age | salary |
---|---|---|
John Smith | 35 | 5000 |
Alice Johnson | 40 | 7000 |
Bob Brown | 55 | 8000 |
Explication : La clause WHERE filtre les lignes pour inclure uniquement les employés âgés de plus de 30 ans.
SELECT name, age, salary FROM employees WHERE age > 30 AND salary > 5000;
name | age | salary |
---|---|---|
Alice Johnson | 40 | 7000 |
Bob Brown | 55 | 8000 |
Explication : La clause WHERE filtre les salariés de plus de 30 ans et ayant un salaire supérieur à 5000.
La clause GROUP BY est utilisée pour regrouper les lignes qui ont les mêmes valeurs dans des lignes récapitulatives, comme pour trouver le nombre d'employés dans chaque service.
SELECT name, age, salary FROM employees WHERE age > 30;
department_id | employee_count |
---|---|
101 | 1 |
102 | 2 |
103 | 1 |
Explication : La clause GROUP BY regroupe les employés par Department_id et compte le nombre d'employés dans chaque département.
La clause HAVING est utilisée pour filtrer les groupes créés par la clause GROUP BY. Cela fonctionne comme la clause WHERE mais est utilisé après l'agrégation.
SELECT name, age, salary FROM employees WHERE age > 30 AND salary > 5000;
department_id | avg_salary |
---|---|
102 | 5750 |
103 | 7000 |
Explication : La clause HAVING filtre les groupes en fonction du salaire moyen des employés de chaque département. Seuls les départements dont le salaire moyen est supérieur à 5500 sont inclus.
La clause ORDER BY est utilisée pour trier le résultat défini par une ou plusieurs colonnes. Par défaut, il trie par ordre croissant ; pour trier par ordre décroissant, utilisez DESC.
SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id;
name | salary |
---|---|
John Smith | 5000 |
Charlie Black | 5500 |
Jane Doe | 6000 |
Alice Johnson | 7000 |
Bob Brown | 8000 |
Explication : Le résultat est trié par salaire par ordre croissant.
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 5500;
name | salary |
---|---|
Bob Brown | 8000 |
Alice Johnson | 7000 |
Jane Doe | 6000 |
Charlie Black | 5500 |
John Smith | 5000 |
Explication : Le résultat est trié par salaire par ordre décroissant.
La clause LIMIT est utilisée pour spécifier le nombre d'enregistrements à renvoyer à partir du jeu de résultats. Ceci est particulièrement utile pour la pagination ou la limitation de grands ensembles de résultats.
SELECT name, age, salary FROM employees WHERE age > 30;
name | salary |
---|---|
Bob Brown | 8000 |
Alice Johnson | 7000 |
Jane Doe | 6000 |
Explication : La clause LIMIT limite la sortie aux 3 employés les mieux payés.
La clause DISTINCT est utilisée pour renvoyer uniquement des valeurs distinctes (différentes) dans un jeu de résultats, en supprimant les doublons.
SELECT name, age, salary FROM employees WHERE age > 30 AND salary > 5000;
department_id |
---|
101 |
102 |
103 |
Explication : La clause DISTINCT renvoie des valeurs Department_id uniques, éliminant les doublons.
Les opérateurs AND, OR et NOT sont utilisés pour combiner plusieurs conditions dans la clause WHERE.
L'opérateur AND est utilisé pour combiner deux ou plusieurs conditions. Le résultat inclura uniquement les lignes où toutes les conditions sont vraies.
SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id;
name | age | salary |
---|---|---|
Alice Johnson | 40 | 7000 |
Bob Brown | 55 | 8000 |
Explication : La clause WHERE filtre les lignes où les deux conditions (âge > 30 et salaire > 5500) sont vraies.
L'opérateur OR est utilisé lorsqu'une seule des conditions doit être vraie.
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 5500;
name | age | salary |
---|---|---|
Jane Doe | 28 | 6000 |
Alice Johnson | 40 | 7000 |
Bob Brown | 55 | 8000 |
Explication : La clause WHERE filtre les lignes où l'âge < 30 ou salaire > 7000 c'est vrai.
L'opérateur NOT est utilisé pour exclure les lignes où une condition est vraie.
SELECT name, age, salary FROM employees WHERE age > 30;
name | age | salary |
---|---|---|
John Smith | 35 | 5000 |
Charlie Black | 30 | 5500 |
Jane Doe | 28 | 6000 |
Explication : La clause WHERE filtre les lignes où salaire > 6 000 est faux, ce qui signifie qu'il renvoie les employés gagnant 6 000 ou moins.
Ce blog explique comment filtrer, regrouper et trier les données à l'aide des clauses SQL WHERE, HAVING, ORDER BY, GROUP BY et d'autres clauses avec des exemples concrets tirés des tables des employés et des services. Comprendre ces clauses est fondamental pour écrire des requêtes SQL efficaces, analyser les données et gérer efficacement les bases de donné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!