SQL ET POSTGRE 5.32 : Restriction et sortie de donnée avec BETWEEN
Dans cette leçon nous apprenons à sélectionner des données dont la valeur est comprise dans un intervalle donné, par exemple les films sortis pendant une période précise. L'opérateur SQL qui permet cela est BETWEEN, associé au mot-clé AND pour délimiter les deux bornes de l'intervalle.
Imaginons une table film avec une colonne date_sortie. Pour récupérer tous les films sortis entre le 1er janvier 1995 et le 31 décembre 1999, on écrit la requête suivante. Les dates sont au format anglais (année-mois-jour) dans la base, comme c'est l'usage en SQL standard.
Exemples avec BETWEEN
SELECT titre, date_sortie FROM film
WHERE date_sortie BETWEEN '1995-01-01' AND '1999-12-31';
SELECT titre, duree FROM film
WHERE duree BETWEEN 90 AND 120;
SELECT titre, pays FROM film
WHERE pays BETWEEN 'E' AND 'P';
L'opérateur BETWEEN ne se limite pas aux dates. Il fonctionne aussi avec des intervalles numériques. Si notre table contient une colonne duree exprimée en minutes (entier), la requête ci-dessus retourne tous les films qui durent entre 90 et 120 minutes. Avec des entiers, on n'utilise pas de guillemets autour des valeurs.
- BETWEEN ... AND ... : sélectionne les valeurs incluses dans l'intervalle, bornes comprises.
- Fonctionne pour les dates, les entiers et les chaînes de caractères (VARCHAR).
- Avec des chaînes, l'ordre alphabétique sert de référence.
Enfin, BETWEEN s'applique aussi aux chaînes de caractères, comme la colonne pays de type VARCHAR. La requête WHERE pays BETWEEN 'E' AND 'P' retourne tous les pays dont le nom commence par une lettre comprise entre E et P dans l'ordre alphabétique, par exemple les États-Unis, le Japon, l'Espagne ou la Corée (écrite avec un K). En allongeant la borne (par exemple 'Eu' au lieu de 'E'), on peut affiner l'intervalle et exclure certains éléments comme les États-Unis.
En résumé
Cette leçon explique comment utiliser l'opérateur BETWEEN en SQL/PostgreSQL pour restreindre les données à un intervalle donné. L'opérateur BETWEEN s'applique à de nombreux types de données : les dates (pour sélectionner des films sortis dans une période spécifique), les nombres entiers (pour filtrer par durée de film en minutes), et les chaînes de caractères (pour classer par ordre alphabétique). La syntaxe reste identique pour tous les types de données, facilitant la filtration d'intervalles complexes.
Points clés
- L'opérateur BETWEEN sert à sélectionner des données comprises dans un intervalle donné avec la syntaxe : WHERE colonne BETWEEN valeur1 AND valeur2
- BETWEEN fonctionne sur les dates (ex: films sortis entre 1995 et 1999), les nombres entiers (ex: durée entre 90 et 120 minutes), et les chaînes de caractères (ex: pays entre E et P alphabétiquement)
- Pour exclure certaines valeurs, on peut combiner BETWEEN avec d'autres conditions (ex: WHERE pays BETWEEN 'E' AND 'P' AND titre != 'États-Unis')
- L'intervalle BETWEEN est inclusif à ses deux bornes : les valeurs exactes des limites sont incluses dans le résultat
Questions fréquentes
BETWEEN fonctionne-t-il uniquement avec les dates ?
Non, BETWEEN s'utilise avec tous les types de données : dates, nombres entiers et chaînes de caractères. Dans tous les cas, la syntaxe reste identique avec les mots-clés BETWEEN et AND.
Comment exclure une valeur spécifique d'une requête BETWEEN ?
On ajoute une condition NOT EQUAL (!=) supplémentaire. Par exemple, pour sélectionner les pays entre E et P sans les États-Unis, on écrit : WHERE pays BETWEEN 'E' AND 'P' AND titre != 'États-Unis'.
Les valeurs limites d'un intervalle BETWEEN sont-elles incluses ?
Oui, BETWEEN est inclusif aux deux bornes. Si on écrit WHERE durée BETWEEN 90 AND 120, les films de exactement 90 minutes et 120 minutes seront inclus dans le résultat.