La projection SELECT¶
La projection SELECT permet d'interroger et obtenir des données de labase de données.
On l’utilise pour choisir quelles colonnes (champs) afficher et quelles lignes (enregistrements) retourner.
La forme la plus simple : SELECT ... FROM¶
La structure minimale d’une requête est :
SELECT colonne
FROM table;
- SELECT : ce que l’on veut afficher
- FROM : d’où proviennent les données
Exemple :
Afficher les noms des clients à partir de la table Client :
SELECT nomClient
FROM Client;
Lire : Extrait la colonne nom de la table Client.
Résultat : une seule colonne (nom) avec toutes les lignes de la table.
SELECT * : Afficher toutes les colonnes¶
Le symbole * signifie toutes les colonnes de la table.
SELECT *
FROM table;
Exemple :
SELECT *
FROM Client;
Lire : Extrait toutes les colonnes de la table Client.
Résultat : affiche la totalité du contenu de la table.
Bonne pratique :
SELECT * est pratique pour apprendre ou tester, mais on évite de l’utiliser en production, car extraire la totalité de très grosses tables est une tâche lourde sur une base de données.
AS : renommer le résultat pour l'affichage¶
On donner un alias (nom temporaire à l’affichage) aux colonnes demandées.
SELECT colonne AS alias
FROM table;
Exemple:
SELECT prenomClient AS "Prénom", nomClient AS "Nom de famille"
FROM Client;
Résultat : Les noms de colonnes affichés sont plus représentatifs pour l’utilisateur.
Ceci ne change pas les noms de colonnes dans la base de données. Ce n'est qu'un nom d'affichage !
La clause DISTINCT¶
DISTINCT élimine les doublons dans le résultat.
SELECT DISTINCT colonne
FROM table;
Exemple :
Afficher les types d’abonnement différents :
SELECT DISTINCT abonnementClient
FROM Client;
Lire : Extrait chaque valeur distincte dans la colonne abonnement.
Résultat : Chaque valeur d’abonnement apparaît une seule fois dans le résultat.
La clause WHERE¶
La clause WHERE sert à filtrer les lignes.
SELECT colonne
FROM table
WHERE condition;
Exemple :
SELECT expirationClient AS "Date d'expiration"
FROM Client
WHERE noClient = 1200;
Résultat: Affiche la date d'expiration pour le client numéro 1200 uniquement.
La clause WHERE avec AND et OR¶
Là où WHERE sert à filtrer les lignes, AND et OR permettent d'ajouter des conditions de restriction.
- AND : toutes les conditions doivent être vraies
- OR : au moins une condition doit être vraie
Exmple :
SELECT nomClient, prenomClient
FROM Client
WHERE abonnementClient = 1
AND TRUNC(expirationClient) = TRUNC(SYSDATE);
Lire : Extrait le nom et le prénom des clients qui ont un abonnement de type 1 et dont la date d'expiration est égale à la date d'aujourd'hui.
NOTE : TRUNC() sur une date retire l'heure-minute-secondes.
Les opérateurs de condition¶
Lorsqu'on écrit une condition, plusieurs opérateurs sont disponibles pour tester si cette condition est vraie ou fausse.
Voir la rubrique sur les opérateurs de condition
La clause ORDER BY¶
Permet de trier le retour en ordre croissant ou décroissant.
- ASC : croissant (par défaut)
- DESC : décroissant
SELECT colonne(s)
FROM table
ORDER BY colonne;
Exemple :
SELECT ageClient, nomClient, prenomClient
FROM Client
ORDER BY ageClient ASC;
Résulat : Affiche l'âge, le nom et le prénom de tous les clients, en ordre croissant d'âge.
Pour l'ordre décroissant, on change ASC pour DESC dans la même requête.
La clause FETCH FIRST¶
Permet de limiter le nombre de lignes retournées après un tri.
S'utilise uniquement avec un ORDER BY.
Exemple :
Afficher les 5 clients les plus jeunes.
- Trier en ordre croissant
- Extraire les 5 premiers clients
SELECT ageClient, nomClient, prenomClient
FROM Client
ORDER BY ageClient
FETCH FIRST 5 ROWS ONLY;
Résumé¶
Un SELECT peut avoir plusieurs clauses... nous en verrons plusieurs autres au fil de la session.
L'ordre d'écriture des clauses est important.
L'ordre logique d'écriture des clauses de cette rubrique est :
SELECT
FROM
WHERE
ORDER BY
FETCH FIRST