0% ont trouvé ce document utile (0 vote)
1 vues3 pages

Cours SQL Select Complet

Ce guide complet sur la commande SELECT en SQL couvre les concepts fondamentaux et avancés du Data Query Language (DQL), en expliquant la structure et l'ordre d'exécution des clauses SQL. Il détaille également les fonctions d'agrégation, les mécanismes de regroupement, et les différences entre les clauses WHERE et HAVING. Enfin, un script SQL intégral est fourni, illustrant diverses requêtes pratiques et leur utilisation dans un environnement de base de données.

Transféré par

Mamadou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
1 vues3 pages

Cours SQL Select Complet

Ce guide complet sur la commande SELECT en SQL couvre les concepts fondamentaux et avancés du Data Query Language (DQL), en expliquant la structure et l'ordre d'exécution des clauses SQL. Il détaille également les fonctions d'agrégation, les mécanismes de regroupement, et les différences entre les clauses WHERE et HAVING. Enfin, un script SQL intégral est fourni, illustrant diverses requêtes pratiques et leur utilisation dans un environnement de base de données.

Transféré par

Mamadou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Cours Complet : Maîtrise de la

Commande SELECT en SQL


Ce guide rassemble l'ensemble des concepts fondamentaux et avancés du Data Query
Language (DQL). Vous y trouverez un script d'apprentissage complet comprenant la
définition des données, leur manipulation et l'intégralité des variations de requêtes
d'extraction.

1. Introduction au DQL et Structure Universelle


Le DQL (Data Query Language) est le composant du SQL dédié exclusivement à
l'interrogation de la base de données. Contrairement au DDL (création) ou au DML
(modification), le DQL ne modifie jamais vos données : il lit et structure l'information pour
l'utilisateur.

L'ordre syntaxique (Écriture) vs L'ordre logique (Exécution)


Il est impératif de comprendre que le Système de Gestion de Base de Données (SGBD)
n'exécute pas les clauses dans l'ordre où elles sont écrites :

Ordre Clause SQL (Syntaxe) Rôle logique lors de


l'exécution
1 FROM Identifie et charge la ou les
tables sources.
2 WHERE Filtre les lignes selon des
critères précis avant tout
regroupement.
3 GROUP BY Rassemble les lignes en
sous-groupes basés sur
des valeurs communes.
4 HAVING Filtre les sous-groupes
créés par le GROUP BY
via des conditions
d'agrégation.
5 SELECT Extrait, calcule les
colonnes finales et
applique les alias.
6 ORDER BY Trie le jeu de résultats final
par ordre croissant ou
décroissant.
7 LIMIT Restreint le nombre
maximal de lignes à
retourner à l'écran.
2. Les Fonctions d'Agrégation Isolées
Une fonction d'agrégation effectue un calcul sur une colonne entière (plusieurs lignes) et
renvoie une unique valeur de résumé. Voici les cinq principales fonctions à maîtriser :

 COUNT() : Compte le nombre d'enregistrements ou de valeurs non nulles.


 SUM() : Calcule la somme totale d'une colonne numérique.
 AVG() : Détermine la moyenne arithmétique (Average).
 MIN() : Extrait la valeur la plus basse (dates, nombres ou chaînes).
 MAX() : Extrait la valeur la plus haute (dates, nombres ou chaînes).

3. Le Mécanisme de Regroupement
La clause GROUP BY scinde virtuellement une table en plusieurs sous-tables
indépendantes.

Règle d'or absolue : Toute colonne présente dans le SELECT qui n'est pas
enveloppée dans une fonction d'agrégation doit obligatoirement figurer dans la clause
GROUP BY. Dans le cas contraire, le SGBD lèvera une erreur de cohérence logique.

4. Différence Fondamentale entre WHERE et HAVING


 WHERE : agit sur les lignes individuelles de la table source. Il intervient avant le
regroupement. Il est formellement interdit d'y placer une fonction d'agrégation (ex:
WHERE SUM(salaire) > 1000 provoquera une erreur).
 HAVING : agit sur les groupes agrégés. Il intervient après la formation des groupes
par le GROUP BY. Il sert exclusivement à filtrer les résultats issus de fonctions
d'agrégation.

5. Script SQL Intégral : DDL, DML et Toutes les


Variantes DQL
Voici le script complet et autonome prêt à être exécuté dans votre environnement de
base de données.

-- ÉTAPE A : INITIALISATION & STRUCTURE DE LA BASE (DDL)


DROP TABLE IF EXISTS employes;

CREATE TABLE employes (


id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) NOT NULL,
departement VARCHAR(50) NOT NULL,
salaire DECIMAL(10, 2) NOT NULL,
date_embauche DATE NOT NULL
);
-- ÉTAPE B : JEU DE DONNÉES DE TEST (DML)
INSERT INTO employes (nom, prenom, departement, salaire, date_embauche)
VALUES
('Dupont', 'Jean', 'IT', 3500.00, '2022-03-15'),
('Martin', 'Sophie', 'RH', 2800.00, '2021-06-01'),
('Durand', 'Thomas', 'IT', 4200.00, '2020-11-20'),
('Lefebvre', 'Marie', 'Marketing', 3100.00, '2023-01-10'),
('Moreau', 'Lucas', 'IT', 2900.00, '2024-02-01'),
('Girard', 'Anna', 'RH', 3200.00, '2019-08-14'),
('Petit', 'Pierre', 'Marketing', 4500.00, '2018-05-25');

-- ÉTAPE C : EXPLOITATION DU COURS EXEMPLES DE REQUÊTES (DQL)

-- VARIANTE 1 : Sélection simple et utilisation d'alias (AS)


SELECT nom AS "Nom de Famille", salaire * 12 AS "Salaire Annuel Brut"
FROM employes;

-- VARIANTE 2 : Les Fonctions d'Agrégation étudiées individuellement


-- A. Compter le nombre d'employés total
SELECT COUNT(*) AS total_salaries FROM employes;

-- B. Calculer la masse salariale totale de l'entreprise


SELECT SUM(salaire) AS masse_salariale_mensuelle FROM employes;

-- C. Obtenir la moyenne exacte des salaires


SELECT AVG(salaire) AS moyenne_remuneration FROM employes;

-- D. Identifier le plus bas et le plus haut salaire


SELECT MIN(salaire) AS salaire_plancher, MAX(salaire) AS salaire_plafond
FROM employes;

-- VARIANTE 3 : Groupement simple (GROUP BY) et tri (ORDER BY)


SELECT departement, COUNT(*) AS effectif_secteur, AVG(salaire) AS
moyenne_salaire_dept
FROM employes
GROUP BY departement
ORDER BY moyenne_salaire_dept DESC;

-- VARIANTE 4 : Le Grand Final Utilisation combinée de TOUTES les clauses


-- Objectif : Analyser le salaire maximum par département.
SELECT departement, MAX(salaire) AS salaire_maximal_historique
FROM employes
WHERE date_embauche <= '2021-12-31'
GROUP BY departement
HAVING MAX(salaire) > 3000.00
ORDER BY salaire_maximal_historique DESC
LIMIT 1;

Vous aimerez peut-être aussi