TD6 - Free
TD6. Exercice 1. Schéma. Les exemples suivants sont tirés du livre A Guide to
DB, Third Edition de C.J. Date. CREATE TABLE FOURNISSEUR. ( F# CHAR(5) ...
Part of the document
TD6
Exercice 1.
Schéma
Les exemples suivants sont tirés du livre A Guide to DB, Third Edition de
C.J. Date.
CREATE TABLE FOURNISSEUR
( F# CHAR(5) NOT NULL,
FNOM CHAR(20) NOT NULL WITH DEFAULT,
STATUS SMALLINT NOT NULL WITH DEFAULT,
VILLE CHAR(15) NOT NULL WITH DEFAULT,
PRIMARY KEY ( F# ) );
CREATE TABLE PRODUIT
( P# CHAR(6) NOT NULL,
PNOM CHAR(20) NOT NULL WITH DEFAULT,
COULEUR CHAR(6) NOT NULL WITH DEFAULT,
POIDS SMALLINT NOT NULL WITH DEFAULT,
PRIMARY KEY ( P# ) );
CREATE TABLE CLIENT
( C# CHAR(6) NOT NULL,
CNOM CHAR(20) NOT NULL WITH DEFAULT,
VILLE CHAR(15) NOT NULL WITH DEFAULT,
PRIMARY KEY ( C# ) );
CREATE TABLE COMMANDE
( F# CHAR(5) NOT NULL,
P# CHAR(6) NOT NULL,
C# CHAR(6) NOT NULL,
QTE SMALLINT,
PRIMARY KEY ( F#, P#, C# ) );
CREATE UNIQUE INDEX FX ON FOURNISSEUR ( F# );
Requêtes
Exprimer les requêtes suivantes en SQL.
Requête 1 :
Toutes les informations sur les clients.
SELECT C#, CNOM, VILLE
FROM CLIENT;
ou
SELECT *
FROM CLIENT;
Requête 2 :
Toutes les informations sur les clients à Paris.
SELECT *
FROM CLIENT
WHERE VILLE = 'Paris';
Requête 3 :
La liste triée des numéros des fournisseurs du client avec le numéro
C1.
SELECT DISTINCT F#
FROM COMMANDE
WHERE C# = 'C1'
ORDER BY F#;
Requête 4 :
Les commandes avec une quantité entre 300 et 750.
SELECT *
FROM COMMANDE
WHERE QTE >= 300 AND QTE B.P#;
Exercice 1.
Schéma
Les exemples suivants sont tirés des sources de la société Oracle.
Relation des Employés (EMP)
EMP(ENO, ENOM, PROF, DATEEMB, SAL, COMM, DNO)
ENO :
numéro d'employé, clé
ENOM :
nom de l'employé
PROF :
profession (directeur n'est pas une profession)
DATEEMB :
date d'embauche
SAL :
salaire
COMM :
commission (un employé peut ne pas avoir de commission)
DNO :
numéro de département auquel appartient l'employé
Relation des Départements (DEPT)
DEPT(DNO, DNOM, DIR, VILLE)
DNO :
numéro de département, clé
DNOM :
nom du département
DIR :
directeur du département
VILLE :
lieu du département (ville)
Requêtes
Requête 20 :
Donner la liste des employés ayant une commission.
SELECT *
FROM EMP
WHERE COMM IS NOT NULL;
Requête 21 :
Donner les noms, emplois et salaires des employés par emploi croissant
et, pour chaque emploi, par salaire décroissant.
SELECT ENOM, PROF, SAL
FROM EMP
ORDER BY PROF ASC, SAL DESC;
Requête 22 :
Donner le salaire moyen des employés.
SELECT AVG(SAL) AS 'SALAIRE MOYEN'
FROM EMP;
Requête 23 :
Donner le nombre d'employés du département PRODUCTION.
SELECT COUNT(EMP.*)
FROM EMP, DEPT
WHERE EMP.DNO = DEPT.DNO
AND DEPT.DNOM = 'PRODUCTION';
Requête 24 :
Les numéros de département et leur salaire maximum?
SELECT DNO, MAX(SAL)
FROM EMP
GROUP BY DNO;
Requête 25 :
Donner les noms des employés ayant le salaire maximum de chaque
département.
SELECT ENOM
FROM EMP
WHERE (DNO, SAL) IN (SELECT DNO, MAX(SAL)
FROM EMP
GROUP BY DNO);
ou
SELECT ENOM
FROM EMP E
WHERE SAL = (SELECT MAX(SAL)
FROM EMP F
WHERE F.DNO = E.DNO);
Requête 26 :
Les professions et leur salaire moyen?
SELECT PROF, AVG(SAL)
FROM EMP
GROUP BY PROF;
Requête 27 :
Le salaire moyen le plus bas (par profession)?
SELECT MIN(AVG(SAL))
FROM EMP
GROUP BY PROF;
Requête 28 :
Donner les emplois ayant le salaire moyen le plus bas; donnez aussi
leur salaire moyen.
SELECT PROF, AVG(SAL)
FROM EMP
GROUP BY PROF
HAVING AVG(SAL) = (SELECT MIN(AVG(SAL))
FROM EMP
GROUP BY PROF);