Lolokai – Supervision, systèmes, réseaux, base de données…

3

L’instruction SELECT et la clause WHERE

Said ASSOUMANI 6 septembre 2012

Introduction

Dans cet article nous allons voir ensemble dans un premier temps l’instruction SELECT, cette instruction va nous permettre de requêter les données de notre base de données. Puis enfin voir la clause « where » cette clause va nous permettre d’extraire une partie de nos données.

L’instruction SELECT

Cette instruction va nous permettre de retrouver les données de notre base. L’instruction SELECT s’utilise principalement de trois façons :

  • Par projection : on va choisir la ou les colonne(s) qu’on veut retourner.
  • Par selection : on va choisir la ou les lignes qu’on veut retourner (voir partie clause WHERE).
  • Par jointure : retourner des données se trouvant sur deux tables distinctes en spécifiant le lien entres les deux tables (voir l’article sur les jointures prochainement).

Structure de l’instruction

SELECT * | { [ DISTINCT ] column_name | expression [ alias ], ….} FROM table_name ;

Où :

  • * : toutes les colonnes seront retournées
  • alias : permet d’afficher un alias et non le nom de la colonne
  • FROM : permet de spécifier la table contenant les colonnes.

Exécutez le script suivant dans sqlplus ou un outil de votre choix :

CREATE TABLE C1 ( lastname varchar2(25) , firstname varchar2(25), age number(3) ) ;

INSERT INTO C1 values ('Assoumani' , 'Said', 20) ;

INSERT INTO C1 values ('Fontaine' , 'Loic', 22) ;

INSERT INTO C1 values ('Robert' , 'Cedric' , 20);

INSERT INTO C1 values ('Tartanpion', 'Marc', 68);

Exemple :

Retournez toutes les données de la table C1 :

SELECT * FROM C1 ;

Exemple :

Retournez le nom de famille de la table C1 , en affichant l’alias « Lastname_Alias » à la place du nom de colonne :

SELECT lastname Lastname_Alias FROM C1 ;

Remarque : La requête précédente est un SELECT de type « projection »

La clause WHERE

La clause WHERE est une partie facultative de l’instruction SELECT. Nous avons vu précédemment comment extraire les données d’une table avec l’instruction SELECT. Dans les exemples vus avant, nous avons sélectionné à chaque fois tous les enregistrements (toutes les lignes) qui existent dans notre table.

Si on souhaite extraire que quelques lignes, on doit utiliser la clause WHERE.

Remarque : Les requêtes suivantes sont des SELECT de type « selection »

Exemple :

Retournez le nom , prénom des personnes ayant plus de 20 ans :

SELECT lastname , firstname FROM C1 WHERE age > 20 ;

Exemple :

Retournez les informations des personnes , ayant un ‘a’ dans leur nom

SELECT * FROM C1 WHERE lastname LIKE '%a%' ;

Vous l’aurez remarquer la clause WHERE est puissante, on peut extraire des enregistrements en utilisant pas mal de combinaisons.

On peut aussi utiliser les operateurs suivants :

  • = | ! =: égalité | négation
  • > | >= : plus grand que / plus grand ou égal
  • < | >= : plus petit que / plus petit ou égal
  • IN (liste de valeurs) / NOT IN(liste de valeurs) : pour spécifier une liste de valeur à prendre en compte
  • BETWEEN… AND : pour spécifier un intervalle de valeur à prendre en compte
  • IS NULL / IS NOT NULL : pour spécifier si une colonnes est null ou pas
  • LIKE | NOT LIKE : utilisé pour la comparaison avec des chaines de caractères

Dans le cadre de la comparaison d’une chaine de caractères :

  • _ : remplace une lettre
  • % : remplace une voire plusieurs lettre(s).

Voici quelques exemples :

— Retournez les personnes n’ayant pas 68 ans —

SELECT * FROM C1 WHERE age != 68

— Retournez les personnes ayant 20 ou 22 ans —

SELECT * FROM C1 WHERE age IN (20 , 22);

— Retournez les personnes dont le nom de famille contient un ’s’ en deuxième position —

SELECT * FROM C1 WHERE lastname LIKE '_s%' ;

Les conditions logiques

En plus des operateurs vue précédemment, il existe ce qu’on appelle des conditions logiques.

  • AND : Retourne vraie si les deux conditions sont vraies
  • OR : Return Vraie si au moins une condition est vraie
  • NOT : Return Vraie si la condition est fausse.

Pour comprendre le coté pratique voyant cela tout de suite avec trois exemples , un pour chaque cas :

Exemple avec AND :

SELECT * FROM C1 WHERE AGE < 68 AND lastname LIKE 'A%' ;

Ici, la requête va retourner toutes les personnes ayant moins de 68 ans et avec un nom de Famille commençant par un ‘A’ majuscule.

Exemple avec OR :

SELECT * FROM C1 WHERE AGE < 68 OR lastname LIKE 'A%' ;

Ici, la requête va retourner toutes les personnes ayant moins de 68 ans OU avec un nom de Famille commençant par un ‘A’ majuscule.

Concrètement voilà le résultat que l’on pourrait obtenir de la table C1 :

Remarque : Si la personne à plus de 68 ans et que son nom de Famille commence par un ‘A’ alors il sera aussi dans l’affichage

Exemple avec NOT :

SELECT * FROM C1 WHERE age NOT IN (20 , 22);

Ici , on retourne les personnes n’ayant pas 20 ou 22 ans.

Conclusion

Nous avons vu ensemble comment sélectionner les données de notre base , notamment des données se trouvant dans une table. Puis, nous avons vu comment restreindre nos données avec la clause WHERE. J’espère que ce premier article vous est assez claire et simple. Je reste à votre disposition pour les remarques ou questions.

Dans le prochain article nous parlerons de la variable de substitution, de la clause ORDER BY … Le but étant de rester dans une optique de progression.Said ASSOUMANI

Tagged with: , , ,

Comments (3)

Laisser un commentaire

Login to your account

Can't remember your Password ?

Register for this site!