L'art du WHERE

Le grand principe du WHERE est : je pose une question par rapport à un besoin, sans connaissance à priori du contenu de mes tables, mais en connaissant leur structure. C'est à dire que si les données changeaient complètement, la question resterait la même (mais pas la réponse, cela va sans dire...)

Important : on se souvient que le WHERE est utilisé pour les mises à jour (UPDATE), les suppressions (DELETE) et les affichages (SELECT)...

Prédicat simple...

Un prédicat simple est le résultat de la comparaison de deux expressions au moyens d’un opérateur de comparaison.

Figure 1 - Moins de soucis avec ces opérateurs qu'avec ceux de téléphonie...
  1. = égal
  2.  
  3. != différent
  4. <> différent
  5.  
  6. > supérieur
  7. >= supérieur ou égal
  8.  
  9. < inférieur
  10. <= inférieur ou égal

L'expression sera :

  • Le nom d'une colonne de notre table
  • Une constante numérique (attention, pas de , mais un . décimal)
  • Une constante alphabétique, entre ' (ou entre ")
  • Une constante date entre ' '1969-09-15 17:21:55'
  • Le résultat d’une fonction (nous y reviendrons), d'un calcul
  • Une valeur nulle (une absence de valeur)
Figure 2 - Quelques exemples
  1. ... WHERE nom = 'Carlier';
  2. ... WHERE salaire >= 3000 ;
  3. ... WHERE naissance <= '1969-09-15';
  4. ... WHERE id_service IS NULL ;
  5. ... WHERE salaire <> (revenus + comission)

D'autres opérateurs sont disponibles, et parfois bien utiles. Ils portent de doux noms... Tiens, je ne sais pas si je l'ai dit, mais une bonne maîtrise de l'anglais est utile pour comprendre le SQL...

Figure 3 - Un intervalle (les bornes sont incluses)...
  1. ... WHERE salaire BETWEEN 1000 AND 2000 ;


Figure 4 - Une énumération - bien utile avec les SOUS SELECT
  1. ... WHERE id_fonction IN (2, 4, 7) ;

Pour les recherches textuelles (principalement), LIKE est assez puissant. Le _ remplace un caractère quelconque, le % une série de caractère.

Figure 5 - Exemles de Like
  1. # Pour trouver Stewart, Scott, mais pas Astrucs
  2. ... WHERE nom LIKE 's%' ;
  3.  
  4. # Pour trouver Martin, Marvin mais pas Marcoin
  5. ... WHERE nom LIKE 'Mar_in' ;

Pour poser la question à l'envers, faites NOT...

Figure 6 - L'art du NOT
  1. ... WHERE id_fonction NOT IN (2, 4, 7)
  2. ... WHERE salaire NOT BETWEEN 1000 AND 2000
  3. ... WHERE nom NOT LIKE 'Mar_in' ;

Prédicat composé...

Un prédicat composé est simplement des prédicats simples reliés par des opérateurs logiques.
Il y en a trois :

  • AND : les deux parties doivent être vraies
  • OR : l'une ou l'autre, ou les deux
  • XOR : l'une ou l'autre, mais pas les deux
Figure 7 - Exemples
  1. # Dans le département 3, et avec un gros salaire
  2. ... WHERE id_dept = 3 AND salaire > 1500;
  3.  
  4. # Dans le département 3, ou avec un gros salaire, ou les deux
  5. ... WHERE id_dept = 3 OR salaire > 1500;
  6.  
  7. # Dans le département 3, ou avec un gros salaire,
  8. # mais pas les gros salaires du département 3
  9. ... emp WHERE id_dept = 3 XOR salaire > 1500;

Les opérateurs peuvent être regroupés au moyen de parenthèses.
Et comme en math, l'ordre et la position d'icelles peuvent changer le résultat...

Figure 8 - Alors donc, quelles différences ?
  1. ... WHERE salaire > 2000 OR (salaire < 1000 AND id_dept = 1);
  2. ... WHERE (salaire > 2000 OR salaire < 1000) AND id_dept = 1;



  © Richard Carlier



Carlier.as création de sites Internet

Tribune de Richard Carlier - Atontour Cocktails - Amour Photo - Cocktails Sans Alcool - Arc2I - Mots d'auteurs - WebRiche.fr - Photos de Belgique - PMPUC - RégalezVous.net - Zone Pingouin - A se rouler par terre - PasswordFinder.fr - Restaurants de Paris - France-SPA.fr - MyPortfolio.fr - RV - pYes - Et aussi : Art Aujourd'hui.info