ParcoursOuvrir l'appli

Chercher : SELECT et WHERE

SQL et bases de données · 45 min

Filtrer avec WHERE

WHERE garde seulement les lignes qui respectent une condition. C'est le masque de pandas, écrit en SQL.

SELECT date, produit, quantite
FROM ventes
WHERE vendeur = 'Paul';
Opérateur Sens Exemple
= égal (un seul signe égal, pas deux comme en Python) produit = 'riz'
<> ou != différent vendeur <> 'Awa'
<, <=, >, >= comparaisons quantite >= 5
AND, OR, NOT combiner (en toutes lettres, cette fois) vendeur = 'Paul' AND quantite >= 5
IN (...) dans une liste produit IN ('riz', 'sucre')
BETWEEN a AND b entre deux valeurs, bornes comprises date BETWEEN '2026-02-01' AND '2026-02-28'

Les dates au format AAAA-MM-JJ se comparent comme des textes, dans le bon ordre : date >= '2026-03-01' garde mars. Encore un avantage de ce format.

LIKE : chercher dans un texte

Calculer dans SELECT

On peut calculer une nouvelle colonne directement dans la requête, et lui donner un nom avec AS :

SELECT date, produit, quantite * prix_unitaire AS montant
FROM ventes;

Trier, limiter, dédoublonner

L'ordre des mots dans une requête est toujours le même :

SELECT colonnes
FROM table
WHERE condition
ORDER BY colonne
LIMIT nombre;

Les trois plus grosses ventes, par exemple :

SELECT date, produit, quantite * prix_unitaire AS montant
FROM ventes
ORDER BY montant DESC
LIMIT 3;

Exercice : Les grosses ventes de Paul

Écris une requête qui donne la date, le produit et la quantite des ventes de Paul d'au moins 5 articles, triées par date.

Voir une solution
import sqlite3

conn = sqlite3.connect(":memory:")
conn.executescript(open("boutique.sql", encoding="utf-8").read())

requete = """
SELECT date, produit, quantite
FROM ventes
WHERE vendeur = 'Paul' AND quantite >= 5
ORDER BY date
"""
resultat = conn.execute(requete).fetchall()
for ligne in resultat:
    print(ligne)

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Le podium des montants

Écris une requête qui donne la date, le produit et le montant (quantité x prix unitaire, nommé montant) des 4 plus grosses ventes, du plus gros au plus petit.

Voir une solution
import sqlite3

conn = sqlite3.connect(":memory:")
conn.executescript(open("boutique.sql", encoding="utf-8").read())

requete = """
SELECT date, produit, quantite * prix_unitaire AS montant
FROM ventes
ORDER BY montant DESC
LIMIT 4
"""
resultat = conn.execute(requete).fetchall()
for ligne in resultat:
    print(ligne)

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Les produits en s

Écris une requête qui donne la liste des produits différents dont le nom commence par s, par ordre alphabétique.

Voir une solution
import sqlite3

conn = sqlite3.connect(":memory:")
conn.executescript(open("boutique.sql", encoding="utf-8").read())

requete = """
SELECT DISTINCT produit
FROM ventes
WHERE produit LIKE 's%'
ORDER BY produit
"""
resultat = conn.execute(requete).fetchall()
for ligne in resultat:
    print(ligne)

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Teste-toi

Quelle requête garde les ventes de riz ou de sucre faites par Awa ?
  1. SELECT * FROM ventes WHERE produit = 'riz' OR produit = 'sucre' AND vendeur = 'Awa'
  2. SELECT * FROM ventes WHERE produit IN ('riz', 'sucre') AND vendeur = 'Awa' (bonne réponse)
  3. SELECT * FROM ventes WHERE produit == 'riz', 'sucre' AND vendeur == 'Awa'
  4. SELECT riz, sucre FROM ventes WHERE vendeur = 'Awa'