SQL ET POSTGRE 5.34 Solution 2 : Les requêtes de sélection

Voici les solutions des trois exercices du challenge précédent. Le but était de combiner les opérateurs IN, LIKE et BETWEEN pour filtrer des données dans les tables film, acteur et réalisateur. Chaque requête se termine par un point-virgule et respecte la casse exacte des valeurs stockées en base.

Le premier exercice demandait le titre et le pays des films dont le pays d'origine est les États-Unis, l'Espagne ou la Corée. Le second cherchait les acteurs dont le nom commence par M et qui sont nés entre le 1er janvier 1940 et le 31 décembre 1960. Le troisième demandait les réalisateurs de nationalité chinoise, brésilienne ou anglaise.

Les trois requêtes solutions

-- Exercice 1
SELECT titre, pays FROM film
WHERE pays IN ('États-Unis', 'Espagne', 'Coréen');

-- Exercice 2
SELECT nom, prenom FROM acteur
WHERE nom LIKE 'M%'
  AND date_naissance BETWEEN '1940-01-01' AND '1960-12-31';

-- Exercice 3
SELECT nom, prenom FROM realisateur
WHERE nationalite IN ('Chinois', 'Brésilien', 'Anglais');

Dans le premier exercice, on utilise IN avec la liste des trois pays entre parenthèses, en notant bien que la Corée s'écrit « Coréen » dans cette table. Dans le second, la condition LIKE 'M%' filtre tous les noms commençant par un M majuscule, et le BETWEEN délimite la période de naissance avec les dates au format anglais. Le troisième exercice reprend la même structure que le premier, en prenant soin de respecter la majuscule initiale des nationalités telles qu'elles sont enregistrées dans la table.

Bravo à tous ceux qui ont réussi, et félicitations à ceux qui ont au moins essayé : c'est la pratique qui fait progresser. Rendez-vous dans la prochaine leçon pour de nouvelles notions SQL.

En résumé

Cette leçon présente trois solutions complètes de requêtes SELECT en PostgreSQL. Les exercices couvrent la sélection conditionnelle avec l'opérateur IN (films par pays d'origine), la combinaison de LIKE et BETWEEN pour des conditions composées (acteurs par nom et intervalle de dates), et le filtrage par nationalités multiples. Chaque exemple montre la syntaxe SQL correcte, la gestion des parenthèses et la sensibilité à la casse des données.

Points clés

  • Utiliser SELECT...WHERE...IN pour filtrer par plusieurs valeurs exactes (ex: pays IN ('États-Unis', 'Espagne', 'Corée'))
  • Combiner LIKE avec le motif wildcard (%) et BETWEEN pour sélectionner selon un pattern et une plage (ex: nom LIKE 'M%' AND date BETWEEN dates)
  • Respecter la casse des données stockées dans la table (majuscules/minuscules) pour que les conditions de filtrage fonctionnent correctement
  • Utiliser AND pour chaîner plusieurs conditions dans la clause WHERE d'une même requête
  • Structurer les dates au format correct (AAAA-MM-JJ) avec BETWEEN pour les intervalles temporels
  • Terminer systématiquement les requêtes par un point-virgule pour leur exécution

Questions fréquentes

Quelle est la différence entre IN et LIKE en SQL ?

IN filtre sur des valeurs exactes prédéfinies (ex: WHERE pays IN ('États-Unis', 'Espagne')), tandis que LIKE recherche des motifs avec des wildcard comme % pour les caractères variables (ex: WHERE nom LIKE 'M%' pour les noms commençant par M).

Comment combiner trois conditions (motif, date ET nationalité) dans une seule requête SELECT ?

On utilise l'opérateur AND pour lier les conditions : SELECT nom, prénom FROM acteurs WHERE nom LIKE 'M%' AND date_de_naissance BETWEEN '1940-01-01' AND '1969-12-31'.

Pourquoi mes résultats de WHERE IN ne retournent rien malgré les bonnes valeurs ?

Vérifiez la casse : les chaînes doivent correspondre exactement aux données de la table. Par exemple, 'chinois' avec minuscules ne fonctionnera pas si la table contient 'Chinois' en majuscule.