-
La table Clients : Chaque ligne décrit un client. Les colonnes décrivent successivement le numero du client, son nom et prenom, son adresse avec rue, codePostal, ville, son telephone, sa categorie et l’état de son compte. L’identifiant primaire est constitué de numero. Les colonnes telephone et categorie sont facultatives.
-
La table Produits : chaque ligne décrit un produit ; les colonnes décrivent successivement le numero du produit, son nom, son prix unitaire et la quantité restante en stock. numero est l’identifiant primaire.
-
La table Commandes : chaque ligne décrit une commande passée par un client ; les colonnes décrivent successivement le numero de la commande, le numeroClient du client qui a passé la commande, la dateCommande de la commande et le statut de la commande. L’identifiant primaire est constitué de numero. numeroClient est une clé étrangère vers la table Clients.
-
La table Details : chaque ligne représente un détail d’une commande ; les colonnes décrivent successivement le numero de la commande à laquelle le détail appartient, le numero du produit commandé et la quantité commandée. L’identifiant primaire est constitué de numeroCommande et numeroProduit. numeroCommande et numeroProduit sont en outre chacune une clé étrangère respectivement vers les tables Commandes et Produits.
Questions
Formulez les requêtes suivantes en SQL. Vous pouvez d’abord utiliser l’algèbre relationnelle pour les formuler puis les convertir en SQL.
-
Afficher la liste des produits en stock.
-
Afficher la liste des villes dans lesquelles il existe au moins un client.
-
Afficher le numéro, le nom et la ville des clients de catégorie
B2
n’habitant pas àParis
. -
Afficher les caractéristiques des produits en stock dont le prix est supérieur à 100.
-
Donner le numéro, le nom et le compte des clients de
Paris
et deGrenoble
dont le compte est positif. -
Quelles catégories de clients trouve-t-on à
Paris
? -
Afficher le numéro, le nom et la ville des clients dont le nom précède alphabétiquement la ville où ils résident.
-
Afficher le total, le minimum, la moyenne et le maximum des comptes des clients.
-
Afficher les numéros des clients qui commandent le produit de numéro 1.
-
Afficher les villes des clients qui commandent le produit de numéro 1.
-
Donner le numéro et le nom des clients de
Grenoble
qui n’ont pas passé de commandes. -
Quels sont les produits en qui contiennent la lettre
t
dans leur nom qui font l’objet d’une commande ? -
Ecrire les requêtes SQL qui recherchent les clients :
- habitant à
Lille
ou àGrenoble
. - qui à la fois habitent à
Lille
et n’habitent pas àGrenoble
. - qui habitent à
Lille
ou n’habitent pas àGrenoble
. - qui n’habitent ni à
Lille
ni àGrenoble
. - qui n’habitent pas à
Lille
ou qui n’habitent pas àGrenoble
. - de catégorie
B2
habitant àGrenoble
. - de catégorie
B2
ou habitant àGrenoble
. - de catégorie
B2
n’habitant pas àGrenoble
. - qui n’ont pas été sélectionnés dans la question précédente.
- qui soit sont de catégorie
B1
ouB2
, soit habitent àLille
ou àGrenoble
, ou les deux conditions. - qui soit sont de catégorie
B1
ouB2
, soit habitent àLille
ou àGrenoble
, mais pas les deux conditions. - qui sont de catégorie
B1
ouB2
, et qui habitent àLille
ou àGrenoble
. - qui n’ont pas été sélectionnés dans la question précédente.
- habitant à
-
Afficher la valeur totale des stocks de tous les produits.
-
Afficher le numéro et le nom des produits qui contiennent la lettre
u
dans leur nom :- – qui ne sont pas commandés,
- – qui sont commandés à
Meylan
, - – qui ne sont pas commandés à
Meylan
- – qui ne sont commandés qu’à
Meylan
, - – qui ne sont pas commandés qu’à
Meylan
, - – qui sont commandés à
Meylan
, mais aussi ailleurs.
-
Combien y a-t-il de commandes spécifiant un (ou plusieurs) produit(s) qui contiennent la lettre
u
? -
Dans combien de villes trouve-t-on des clients de catégorie
B2
? -
Afficher le numéro et le nom des clients qui n’ont pas commandé de produits qui contiennent la lettre
u
. -
A la question : rechercher les villes dans lesquelles on n’a pas commandé de produit numéro 1, quatre utilisateurs proposent les requêtes suivantes. Indiquez la (ou les) requêtes correctes, et interprétez les autres.
SELECT DISTINCT ville FROM Clients WHERE numero IN ( SELECT numeroClient FROM Commandes WHERE numero NOT IN (SELECT numeroCommande FROM Details WHERE numeroProduit = 1 ) );
SELECT DISTINCT ville FROM Clients WHERE numero NOT IN (SELECT numeroClient FROM Commandes WHERE numero IN (SELECT numeroCommande FROM Details WHERE numeroProduit = 1 ) );
SELECT DISTINCT ville FROM Clients WHERE ville NOT IN (SELECT ville FROM Clients WHERE numero IN (SELECT numeroClient FROM Commandes WHERE numero IN (SELECT numeroCommande FROM Details WHERE numeroProduit = 1 ) ) );
-
Dans quelles villes a-t-on commandé en juin 2024 ?
-
On suppose que le concepteur de la base de données n’a pas trouvé utile de déclarer la colonne numeroCommande comme clé étrangère dans la table Details. Il est donc possible que certaines lignes de Details violent la contrainte d’intégrité référentielle portant sur cette colonne. Ecrire une requête qui recherche les anomalies éventuelles.
-
Normalement, à toute commande doit être associé au moins un détail. Ecrire une requête qui vérifie que chaque commande a au moins un détail.
-
Quels sont les produits (numéro et nom) qui n’ont pas été commandés en 2024 ?
-
Rechercher les clients qui ont commandé tous les produits.
Suggestion : Application du quantificateur pour tout. On recherche les clients, tels qu’il n’existe pas de produits qui n’apparaissent pas dans les détails de leurs commandes.
-
Dans quelles villes a-t-on commandé tous les produits (tous clients confondus) ?
-
Rechercher les produits qui ont été commandés par tous les clients.
-
Rechercher les villes dont aucun client n’a passé de commande.
-
Rechercher les villes dont tous les clients ont passé au moins une commande.
-
Rechercher les produits qui sont commandés dans toutes les villes.