Aller au contenu

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.

  1. Trier en ordre croissant
  2. 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