La maîtrise des requêtes SQL est souvent un défi pour les débutants en gestion de bases de données.
Sans une compréhension claire de la commande SELECT, extraire des données pertinentes devient complexe et frustrant.
Cet article propose une approche pratique avec des exercices ciblés sur la commande SELECT pour surmonter ces difficultés.
Appréhendez les fondamentaux du langage SQL pour savoir assimiler ses fonctions standards.

Commande SELECT SQL : Introduction
Dans le cadre de la gestion des bases de données, la commande SELECT est fondamentale pour interroger et récupérer des données. Ce récapitulatif met l’accent sur l’utilisation de SELECT pour des requêtes monotables, c’est-à-dire des requêtes qui concernent une seule table à la fois. À travers des exemples concrets et des exercices pratiques, vous apprendrez à appliquer la syntaxe générale de SELECT et à formuler des requêtes efficaces pour extraire des informations pertinentes de vos tables.
- Syntaxe Générale de la Commande SELECT
La commande SELECT en SQL est utilisée pour interroger des données à partir d’une ou plusieurs tables.
Voici la syntaxe générale pour une requête SELECT monotable :
SELECT [DISTINCT | ALL] * | liste_de_colonnes
FROM nom_table
[WHERE prédicats]
[GROUP BY ordre_des_groupes]
[HAVING condition]
[ORDER BY liste_de_colonnes];
Éléments de la Syntaxe :
- SELECT :Indique les colonnes que vous souhaitez récupérer. Vous pouvez utiliser * pour sélectionner toutes les colonnes ou spécifier une liste de colonnes.
- DISTINCT / ALL :DISTINCT permet d’éliminer les doublons dans les résultats.ALL (par défaut) inclut toutes les lignes, même les doublons.
- FROM :Spécifie la table à partir de laquelle vous voulez extraire les données.
- WHERE :Permet de filtrer les résultats selon des conditions spécifiques.
- GROUP BY :Regroupe les résultats par une ou plusieurs colonnes, souvent utilisé avec des fonctions d’agrégation.
- HAVING :Filtre les résultats après le regroupement, en utilisant des conditions sur les agrégats.
- ORDER BY :Trie les résultats selon une ou plusieurs colonnes, dans l’ordre croissant (ASC) ou décroissant (DESC).
- Les exercices d’applications
Exercice 1 :
Énoncé de l’exercice
- Listez tous les employés de la société.
- Listez toutes les catégories de produits.
- Affichez le nom, prénom et date de naissance de tous les employés.
- Affichez la liste des fonctions des employés, chaque fonction doit être affichée une seule fois.
- Affichez la liste des villes des clients, chaque ville doit être affichée une seule fois.
- Solutions
- Listez tous les employés de la société.
SELECT *
FROM employes;
Résultat affiché :
Cette requête utilise SELECT * pour récupérer toutes les colonnes de la table employes, affichant ainsi tous les détails de chaque employé.
- Listez toutes les catégories de produits.
SELECT *
FROM categories;
Résultat affiché :
Comme dans la première requête, cette commande permet de sélectionner toutes les colonnes de la table categories, montrant ainsi toutes les catégories de produits disponibles.
- Affichez le nom, prénom et date de naissance de tous les employés.
SELECT nom, prenom, date_naissance
FROM employes;
Résultat affiché :
Cette requête sélectionne spécifiquement les colonnes nom, prenom et date_naissance de la table employes, affichant les informations essentielles de chaque employé.
- Affichez la liste des fonctions des employés, chaque fonction doit être affichée une seule fois.
SELECT DISTINCT fonction
FROM employes;
Résultat affiché :
L’utilisation de SELECT DISTINCT permet d’afficher chaque fonction d’employé une seule fois, éliminant les doublons dans les résultats.
- Affichez la liste des villes des clients, chaque ville doit être affichée une seule fois.Solution :
SELECT DISTINCT ville FROM clients;
Résultat affiché :
Cette requête récupère les villes des clients tout en s’assurant que chaque ville n’apparaît qu’une seule fois grâce à DISTINCT. Cela permet d’obtenir une vue claire des villes sans répétition.
Exercice 2 :
Énoncé de l’exercice
- Listez tous les clients dont le pays est l’Espagne.
- Listez tous les employés qui ne sont pas des représentants.
- Affichez le nom de la société, la ville, le pays et le fax de tous les clients qui ont un numéro de fax renseigné.
- Affichez la liste de tous les employés embauchés en 1993.
- Solutions
- Listez tous les clients dont le pays est l’Espagne.
SELECT *
FROM clients
WHERE pays='Espagne';
Résultat affiché :
Cette requête sélectionne tous les colonnes de la table clients, mais seulement pour les clients dont le pays est spécifiquement l’Espagne. La clause WHERE permet d’appliquer un filtre sur les résultats.
- Listez tous les employés qui ne sont pas des représentants.
SELECT *
FROM employes
WHERE fonction <> 'Représentant(e)';
Résultat affiché :
Cette requête récupère tous les employés dont la fonction n’est pas ‘Représentant(e)’. Le symbole <> est utilisé pour signifier « différent de », permettant ainsi de filtrer les résultats.
- Affichez le nom de la société, la ville, le pays et le fax de tous les clients qui ont un numéro de fax renseigné.
SELECT societe, ville, pays, fax
FROM clients
WHERE fax IS NOT NULL;
Résultat affiché :
Cette requête sélectionne spécifiquement les colonnes societe, ville, pays et fax des clients dont le numéro de fax n’est pas nul (donc renseigné). Cela permet de se concentrer uniquement sur les clients ayant des coordonnées de contact.
- Affichez la liste de tous les employés embauchés en 1993.
SELECT * FROM employes WHERE date_embauche BETWEEN '01/01/1993' AND '31/12/1993';
Résultat affiché :
Cette requête utilise la clause BETWEEN pour filtrer les employés embauchés au cours de l’année 1993. Elle récupère toutes les colonnes de la table employes pour ces enregistrements.
Exercice 3 :
Énoncé de l’exercice
- Affichez le nom, prénom, fonction et salaire des employés qui ont un salaire compris entre 2500 et 3500.
- Affichez le nom de la société, l’adresse, le téléphone et la ville des clients qui habitent à Toulouse, à Strasbourg, à Nantes ou à Marseille.
- Affichez le nom, prénom, fonction et le salaire des représentants qui sont en activité depuis le « 10/10/1993 ».
- Affichez le nom, prénom, fonction et le salaire des employés qui sont âgés de plus de 45 ans ou qui ont une ancienneté de plus de 10 ans.
- Affichez le nom, prénom, fonction et le salaire des employés dont le nom commence par la lettre « D ».
- Solutions
- Affichez le nom, prénom, fonction et salaire des employés qui ont un salaire compris entre 2500 et 3500.
SELECT nom, prenom, fonction, salaire
FROM employes
WHERE salaire BETWEEN 2500 AND 3500;
Résultat affiché :
Cette requête sélectionne les colonnes nom, prenom, fonction et salaire des employés dont le salaire se situe entre 2500 et 3500. L’opérateur BETWEEN permet d’indiquer une plage de valeurs.
- Affichez le nom de la société, l’adresse, le téléphone et la ville des clients qui habitent à Toulouse, à Strasbourg, à Nantes ou à Marseille.
SELECT societe, adresse, telephone, ville
FROM clients
WHERE ville IN ('Toulouse','Strasbourg','Nantes','Marseille');
Résultat affiché :
Cette requête récupère les colonnes societe, adresse, telephone et ville des clients qui résident dans l’une des villes spécifiées grâce à l’opérateur IN, qui permet de vérifier si une valeur se trouve dans une liste.
- Affichez le nom, prénom, fonction et le salaire des représentants qui sont en activité depuis le « 10/10/1993 ».
SELECT nom, prenom, fonction, salaire
FROM employes
WHERE fonction = 'Représentant(e)' AND date_embauche >= '10/10/1993';
Résultat affiché :
Cette requête sélectionne les employés ayant la fonction de ‘Représentant(e)’ et qui ont été embauchés à partir du 10 octobre 1993. L’opérateur AND combine deux conditions.
4 . Affichez le nom, prénom, fonction et le salaire des employés qui sont âgés de plus de 45 ans ou qui ont une ancienneté de plus de 10 ans.
SELECT nom, prenom, fonction, salaire
FROM employes
WHERE (GETDATE() - date_naissance)/365 > 45
AND (GETDATE() - date_embauche)/365 > 10;
Résultat affiché :
Cette requête utilise les dates de naissance et d’embauche pour calculer l’âge et l’ancienneté des employés. L’opérateur OR permet de sélectionner ceux qui satisfont au moins une des deux conditions.
- Affichez le nom, prénom, fonction et le salaire des employés dont le nom commence par la lettre « D ».
SELECT nom, prenom, fonction, salaire
FROM employes
WHERE nom LIKE 'D%';
Résultat affiché :
Cette requête récupère les employés dont le nom commence par ‘D’. L’opérateur LIKE avec le symbole % est utilisé pour faire correspondre tout ce qui suit la lettre ‘D’.
Exercice 4 :
Énoncé de l’exercice
- Affichez le nombre de clients par pays.
- Affichez la masse salariale (SOMME des salaires) pour chaque fonction des employés.
- Affichez les employés par ordre alphabétique de leur nom et du plus grand salaire au plus petit.
- Solutions
- Affichez le nombre de clients par pays.
SELECT pays, COUNT(*)
FROM clients
GROUP BY pays;
Résultat affiché :
Cette requête compte le nombre de clients dans chaque pays. La fonction COUNT(*) est utilisée pour compter toutes les entrées et GROUP BY regroupe les résultats par pays.
- Affichez la masse salariale (SOMME des salaires) pour chaque fonction des employés.
SELECT fonction, SUM(salaire)
FROM employes
GROUP BY fonction;
Résultat affiché :
Cette requête calcule la somme des salaires pour chaque fonction des employés. La fonction SUM(salaire) additionne les salaires, et GROUP BY regroupe les résultats par fonction.
- Affichez les employés par ordre alphabétique de leur nom et du plus grand salaire au plus petit.
SELECT *
FROM employes
ORDER BY nom, salaire DESC;
Résultat affiché :
Cette requête affiche tous les employés, triés d’abord par leur nom en ordre alphabétique, puis par salaire en ordre décroissant. L’opérateur ORDER BY est utilisé pour spécifier les colonnes de tri.
Exercice 5 :
Énoncé de l’exercice
Expression CASE :
- Simulez une augmentation du salaire en fonction de la fonction des employés en affichant le nom, prénom, fonction et salaire :
Si « Vice-président » : augmentation de 10%
Si « Chef des ventes » : augmentation de 20%
Si « Représentant(e) » : augmentation de 10% + commission
Sinon : augmentation de 10%
- Solution
SELECT nom, prenom, salaire,
CASE fonction
WHEN 'Vice-président' THEN salaire * 1.1
WHEN 'Chef des ventes' THEN salaire * 1.2
WHEN 'Représentant(e)' THEN (salaire * 1.1) + commission
ELSE salaire * 1.1
END AS 'Simulation_Salaire'
FROM employes;
Explication de la solution
- SELECT nom, prenom, salaire :On sélectionne les colonnes nom, prenom, et salaire de la table employes.
- CASE fonction :Cette expression évalue la colonne fonction pour déterminer l’augmentation du salaire :WHEN ‘Vice-président’ THEN salaire * 1.1: Si la fonction est « Vice-président », le salaire est augmenté de 10%.WHEN ‘Chef des ventes’ THEN salaire * 1.2: Si la fonction est « Chef des ventes », le salaire est augmenté de 20%.WHEN ‘Représentant(e)’ THEN (salaire * 1.1) + commission: Si la fonction est « Représentant(e) », le salaire est augmenté de 10% et ajoute une commission.ELSE salaire * 1.1: Pour toutes les autres fonctions, le salaire est augmenté de 10%.
- END AS ‘Simulation_Salaire’ :Le résultat de l’expression CASE est renvoyé sous le nom « Simulation_Salaire ».
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment utiliser la commande SELECT pour les requêtes monotables?
Quels sont les éléments clés de la syntaxe SELECT?
Comment formuler des requêtes efficaces avec SELECT?
Pourquoi est-il important de pratiquer des exercices SQL?
Comment aborder la résolution d'exercices SQL avancés?
Conclusion
En explorant ces exercices sur la commande SELECT, vous avez acquis des compétences pratiques essentielles pour manipuler des bases de données efficacement. Quelle sera votre prochaine étape pour approfondir vos connaissances en SQL?