Quelles commandes reste-t-il à préparer ?
Vous venez d'entrer au service client de Cycles Loire, une boutique en ligne de vélos à Nantes. Une cliente appelle : son antivol n'est toujours pas arrivé.
Votre responsable vous demande quelles commandes sont payées mais pas encore parties. Toutes les commandes sont dans une base de données. Vous pourriez les parcourir une par une. Vous pouvez aussi poser une seule question courte à la base.
À la fin de cette leçon
Remarque
Je peux utiliser SQL pour trouver les lignes qui remplissent une condition.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Table | des données rangées en lignes et en colonnes | |
| Ligne | un enregistrement, par exemple une commande | |
| Colonne | une information que chaque ligne possède | |
| Requête | une question posée à la base de données | |
| Condition | un test que chaque ligne réussit ou rate | statut = 'payee' |
| SQL | le langage pour interroger une base de données |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
SELECT dit quelles colonnes afficher
Une base de données range ses informations dans des tables. La boutique a une table commandes. Chaque ligne est une commande.
Une requête commence par SELECT. Ensuite, vous nommez les colonnes voulues, séparées par des virgules. FROM dit quelle table lire. L'étoile * veut dire toutes les colonnes. Une requête SELECT lit seulement. Elle ne modifie jamais la table.
Essayez : choisir les colonnes
-- Toutes les colonnes de toutes les commandes.
SELECT * FROM commandes;
-- Seulement les deux colonnes utiles au transporteur.
SELECT client, ville FROM commandes;
WHERE filtre les lignes
SELECT choisit les colonnes. WHERE choisit les lignes.
Après WHERE, vous écrivez une condition. La base teste chaque ligne avec cette condition. Elle garde les lignes qui la remplissent et écarte les autres. Ainsi, WHERE statut = 'payee' garde seulement les commandes payées.
Essayez : seulement les commandes payées
-- Les commandes payées mais pas encore expédiées.
-- Dans cette base, les statuts sont écrits sans accent.
SELECT id, client, montant FROM commandes
WHERE statut = 'payee';
-- Remplacez 'payee' par 'expediee', puis relancez.
Exemple détaillé : WHERE statut = 'payee'
| Commande | statut | Gardée ? |
|---|---|---|
| 1 | expediee | Non |
| 2 | payee | Oui |
| 3 | payee | Oui |
| 4 | expediee | Non |
| 5 | payee | Oui |
| 6 | annulee | Non |
| 7 | payee | Oui |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent que WHERE ville = Nantes fonctionne. C'est faux. Un texte s'écrit entre apostrophes : ville = 'Nantes'. Sans elles, la base cherche une colonne appelée Nantes. Un nombre s'écrit sans apostrophes : montant > 100.
AND et OR combinent deux tests
Une vraie question a souvent deux parties. « Les commandes payées de plus de 100 euros » contient deux tests.
AND garde une ligne seulement si les deux tests réussissent. OR garde une ligne si l'un des deux réussit. Pour les nombres, > veut dire plus grand que et < plus petit que.
Essayez : deux tests à la fois
-- Les commandes payées de plus de 100 euros.
SELECT id, client, montant FROM commandes
WHERE statut = 'payee' AND montant > 100;
-- Les commandes qui partent à Rennes ou à Brest.
SELECT id, client, ville FROM commandes
WHERE ville = 'Rennes' OR ville = 'Brest';