Achat d'articles de sport - Recherche dans un champ de type chaîne de caractères

Série d'exercices

Cet exercice fait partie d'une série :

Un magasin d'articles de sport souhaite gérer ses ventes par une base de données.
On doit y trouver des informations sur leurs clients et sur les articles qu'ils ont achetés.

On a enregistré en mémoire une base de données dont la structure est présentée par le schéma ci-dessous :

sql

Le champ nom contient à la fois le prénom et le nom du client et est au format "prénom nom".
Le champ payé vaut \(1\) si la facture est payée, et \(0\) sinon.

Table d'associations

On ne peut pas créer un champ article dans la table Factures car une facture peut permettre de régler l'achat de plusieurs articles. De la même façon, on ne peut pas ajouter un champ facture dans la table Articles car un même article peut être acheté plusieurs fois et donc apparaître sur plusieurs factures.

Pour ce faire, on crée une troisième table, appelée table d'association.
La clé primaire de cette table n'est pas constituée d'un champ, mais d'un couple de champs (ce couple est alors unique) constitué des deux clés étrangères des tables que l'on souhaite associer.

Dans notre exemple, la clé primaire de la table commande est (id_facture, id_article).

L'exercice utilise les mots SELECT, FROM, WHERE et LIKE.

On demande de compléter le code proposé, ou de l'écrire entièrement, pour réaliser les requêtes SQL suivantes :



Question 1

Créer la requête pour obtenir toutes les données des clients :



Solution
SELECT *
FROM Clients;
Question 2

Créer la requête pour obtenir tous les renseignements sur les articles dont le prix est compris strictement entre 30 et 100 euros :



Solution
SELECT *
FROM Articles
WHERE prix_unitaire > 30 and prix_unitaire < 100;
Aide

Pour comparer deux chaînes de caractères dans une requête SQL, on peut utiliser l'opérateur LIKE.

WHERE nom LIKE "Tony Estanguet"

Il est possible également avec cet opérateur de déterminer si une sous-chaine est présente :

WHERE nom LIKE "Tony %"
Dans ce cas, le caractère % remplace tout le groupe de caractères, (zéro, un ou plusieurs), qui suit "Tony ". Ainsi, les chaines "Tony Estanguet" et "Tony Yoka" permettent de vérifier la comparaison.

Question 3

Créer la requête pour obtenir tous les renseignements sur les clients qui ont Lebrun comme nom de famille (seul le prénom doit changer) :



Solution
SELECT *
FROM Clients
WHERE nom LIKE "% Lebrun";
Question 4

Créer la requête pour obtenir tous les renseignements sur tous les articles qui ont le mot "raquette" dans leur désignation :





Solution
SELECT *
FROM Articles
WHERE désignation LIKE "%raquette%";
Question 5

Créer la requête pour obtenir l'identifiant et la date des factures créées au mois de juin.

Les dates sont des chaînes de caractères au format ISO 8601, à savoir AAAA-MM-JJ.





Solution
SELECT id_facture, date
FROM Factures
WHERE date LIKE "%-06-%" ;

Le symbole "%" permet de remplacer un nombre indéfini de caractères. Au contraire, le symbole "_" permet de remplacer un seul caractère.

Une solution utilisant ce symbole s'écrit ainsi :

SELECT id_facture, date
FROM Factures
WHERE date LIKE "____-06-__" ;