Recherche dans un intervalle
Il est possible de faire une recherche sur un intervalle à l'aide uniquement des opérateurs de comparaison >= et <=. Par exemple,
on peut rechercher les animaux qui sont nés entre le 5 janvier 2008 et le 23 mars 2009 de la manière suivante :
Code : SQL
SELECT *
FROM Animal
WHERE date_naissance <= '2009-03-23'
AND date_naissance >= '2008-01-05';
Ça fonctionne très bien. Cependant, SQL dispose d'un opérateur spécifique pour les intervalles, qui pourrait vous éviter les
erreurs d'inattention classiques (< au lieu de > par exemple) en plus de rendre votre requête plus lisible et plus performante :
BETWEEN minimum AND maximum (between signifie "entre" en anglais). La requête précédente peut donc s'écrire :
Code : SQL
SELECT *
FROM Animal
WHERE date_naissance BETWEEN '2008-01-05' AND '2009-03-23';
BETWEEN peut s'utiliser avec des dates, mais aussi avec des nombres (BETWEEN 0 AND 100) ou avec des chaînes de
caractères (BETWEEN 'a' AND 'd') auquel cas c'est l'ordre alphabétique qui sera utilisé (toujours insensible à la casse sauf
si l'on utilise des chaînes binaires : BETWEEN BINARY 'a' AND BINARY 'd').
Bien évidemment, on peut aussi exclure un intervalle avec NOT BETWEEN.
Set de critères
Le dernier opérateur à utiliser dans la clause WHERE que nous verrons dans ce chapitre est IN. Ce petit mot de deux lettres, bien
souvent méconnu des débutants, va probablement vous permettre d'économiser du temps et des lignes.
Imaginons que vous vouliez récupérer les informations des animaux répondant aux doux noms de Moka, Bilba, Tortilla, Balou,
Dana, Redbul et Gingko. Jusqu'à maintenant, vous auriez sans doute fait quelque chose comme ça :
Code : SQL
SELECT *
FROM Animal
WHERE nom = 'Moka'
OR nom = 'Bilba'
OR nom = 'Tortilla'
OR nom = 'Balou'
OR nom = 'Dana'
OR nom = 'Redbul'
OR nom = 'Gingko';
Un peu fastidieux non
? Eh bien réjouissez-vous, car IN est dans la place ! Cet opérateur vous permet de faire des
recherches parmi une liste de valeurs. Parfait pour nous donc, qui voulons rechercher les animaux correspondant à une liste de
noms. Voici la manière d'utiliser IN :
Code : SQL
SELECT *
FROM Animal
WHERE nom IN ('Moka', 'Bilba', 'Tortilla', 'Balou', 'Dana',
'Redbul', 'Gingko');
C'est quand même plus agréable à écrire !
En résumé
Partie 1 : MySQL et les bases du langage SQL
64/414
www.openclassrooms.com
Il est possible de faire une recherche sur un intervalle à l'aide uniquement des opérateurs de comparaison >= et <=. Par exemple,
on peut rechercher les animaux qui sont nés entre le 5 janvier 2008 et le 23 mars 2009 de la manière suivante :
Code : SQL
SELECT *
FROM Animal
WHERE date_naissance <= '2009-03-23'
AND date_naissance >= '2008-01-05';
Ça fonctionne très bien. Cependant, SQL dispose d'un opérateur spécifique pour les intervalles, qui pourrait vous éviter les
erreurs d'inattention classiques (< au lieu de > par exemple) en plus de rendre votre requête plus lisible et plus performante :
BETWEEN minimum AND maximum (between signifie "entre" en anglais). La requête précédente peut donc s'écrire :
Code : SQL
SELECT *
FROM Animal
WHERE date_naissance BETWEEN '2008-01-05' AND '2009-03-23';
BETWEEN peut s'utiliser avec des dates, mais aussi avec des nombres (BETWEEN 0 AND 100) ou avec des chaînes de
caractères (BETWEEN 'a' AND 'd') auquel cas c'est l'ordre alphabétique qui sera utilisé (toujours insensible à la casse sauf
si l'on utilise des chaînes binaires : BETWEEN BINARY 'a' AND BINARY 'd').
Bien évidemment, on peut aussi exclure un intervalle avec NOT BETWEEN.
Set de critères
Le dernier opérateur à utiliser dans la clause WHERE que nous verrons dans ce chapitre est IN. Ce petit mot de deux lettres, bien
souvent méconnu des débutants, va probablement vous permettre d'économiser du temps et des lignes.
Imaginons que vous vouliez récupérer les informations des animaux répondant aux doux noms de Moka, Bilba, Tortilla, Balou,
Dana, Redbul et Gingko. Jusqu'à maintenant, vous auriez sans doute fait quelque chose comme ça :
Code : SQL
SELECT *
FROM Animal
WHERE nom = 'Moka'
OR nom = 'Bilba'
OR nom = 'Tortilla'
OR nom = 'Balou'
OR nom = 'Dana'
OR nom = 'Redbul'
OR nom = 'Gingko';
Un peu fastidieux non
? Eh bien réjouissez-vous, car IN est dans la place ! Cet opérateur vous permet de faire des
recherches parmi une liste de valeurs. Parfait pour nous donc, qui voulons rechercher les animaux correspondant à une liste de
noms. Voici la manière d'utiliser IN :
Code : SQL
SELECT *
FROM Animal
WHERE nom IN ('Moka', 'Bilba', 'Tortilla', 'Balou', 'Dana',
'Redbul', 'Gingko');
C'est quand même plus agréable à écrire !
En résumé
Partie 1 : MySQL et les bases du langage SQL
64/414
www.openclassrooms.com
