Correction TD n 6 : Langage SQL
Exercice n 1 :
Soit un sch ma relationnel compos de la relation Frs (numf, ville) et la relation
Article (code, prix, qte, #numf), on propose lextension suivante des relations suivantes :
Frs
numf ville
F1 SBZ
F2 Sfax
F3 SBZ
| | | | |
| --- | --- | --- | --- |
| Article | | | |
| | | | |
| Code | prix | qte | numf |
| | | | |
| A1 | 1200 | 20 | F2 |
| | | | |
| A2 | 3200 | 100 | F3 |
| | | | |
| A3 | 450 | 50 | F2 |
| | | | |
1. Donner la requ te SQL correspondante la cr ation de la table Article. (code, numf, ville : des chaines de caract res de taille maximale 30, prix et qte des entiers de taille maximale 20)
Create table Article (
Code varchar2(30), prix number(20), qte number(20), numf varchar2(30), Constraint pk\_article primary key (code), Constraint fk\_art\_frs foreign key (numf) references Frs (numf) );
1. Donner la requ te SQL correspondante linsertion des enregistrements de la table Frs
Insert into Frs values (F1, SBZ) ; Insert into Frs values (F2, Sfax) ; Insert into Frs values (F3, SBZ) ;
1. Donner la commande SQL pour augmenter la quantit des Article de 10 du fournisseur F2.
Update Article set qte=qte+10 where numf=F2;
1. Donner la commande SQL pour afficher le nombre des articles fournis par le fournisseur F2.
Select count(\*) from Article where numf=F2 group by numf;
1. Donner la commande SQL pour supprimer les articles de num ro A2.
Delete from Article where numf=F2 ;
1. Donner la commande SQL pour supprimer la table Article et la table Frs (Respectez lordre).
Drop table Article ; Drop table Frs ;
Exercice n 2 :
Soit la table de donn es Personne: Personne (Nom, Age, Ville)
| | | |
| --- | --- | --- |
| Nom | Age | Ville |
| | | |
| Ali | 29 | Sidi Bouzid |
| | | |
| Salem | 32 | Sousse |
| | | |
| Mohamed | 40 | Sousse |
| | | |
1. Ecrire les requ tes suivantes en Langage SQL :
- Liste des personnes dont l ge est sup rieur 32.
Select \* from Personne where Age >32 ;
- Liste des personnes qui habitent Sidi Bouzid.
Select \* from Personne where Ville=Sidi Bouzid;
Publicité
- Les villes de Ali et Salem.
Select Ville from Personne where Nom= Ali and Nom=Salem;
- Les noms des personnes domicili s Sousse.
Select Nom from Personne where Ville=Sousse ;
Exercice n 3 :
Soit le sch ma de base de donn es relationnel suivant :
AGENCE (Num\_Agence, Nom, Ville)
CLIENT (Num\_Client, Nom, Ville)
COMPTE (Num\_Compte, #Num\_Agence, #Num\_Client, Solde)
EMPRUNT (Num\_Emprunt, #Num\_Agence, #Num\_Client, Montant)
1. Ecrire les requ tes suivantes en SQL:
1. Les noms et les villes des Agences.
select Nom, Ville from Agence ;
- 1. Les montants des emprunts.
select montant from Emprunt ;
1. Liste des clients ayant la ville = Sousse.
select \* from Client where Ville=Sousse ;
- 1. Les num ros des emprunts ayant un montant sup rieur 1200.
select num\_emprunt from Emprunt where montant>1200 ;
- 1. Les noms des clients qui habitant Sidi Bouzid.
select \* from Client where Ville=Sidi Bouzid ;
- 1. Les montants des emprunts des clients num ro 12 et 13.
select montant from Emprunt where num\_client =12 and num\_client=13;
1. Ecrire les requ tes suivantes en SQL :
1. Le nombre des clients.
Select count(\*) from Client ;
1. Le montant maximum des emprunts.
Select max(montant) from Emprunt ;
1. Le montant minimum des emprunts.
Select min(montant) from Emprunt ;
1. La moyenne des soldes des Comptes.
Select avg(solde) from Compte ;
1. La liste des agences ayant des comptes-clients.
Select A.\* from Agence A, Compte Cp where A.num\_client = Cp.num\_client;
1. Les Clients ayant un compte une agence paris.
Select C.\* from Client C, Agence A, Compte Cp where C.num\_client = Cp.num\_client and A.num\_agence = Cp.num\_agence and A.ville = Sidi Bouzid;
1. Nombre de clients habitant Sidi Bouzid.
Select count(\*) from Client where Ville =Sidi Bouzid;
Exercice n 4 :
Vous travaillez dans une agence immobili re qui a mis en place un mod le relationnel
afin de g rer son portefeuille client.
Le mod le relationnel est le suivant :
Client (codeclt, nomclt, prenomclt, villeclt)
Representant (coderep, nomrep, prenomrep)
Appartement (ref, superficie, prix, #coderep, #codeclt)
On consid re que les types des attributs sont :
- codeclt, nomclt, prenomclt, villeclt, coderep, nomrep, prenomrep, ref : chaines de 30 caract res.
- superficie, prix : entier de 15 chiffres.
1- Ecrire les requ tes SQL n cessaires la cr ation de la Base de Donn es d crites ci-dessus,tout en respectant le type et la longueur donn e ci-dessus pour les diff rents attributs, et en sp cifiant les contraintes cl s primaires et cl s trang res.
Table 1 : Client (codeclt, nomclt, prenomclt, villeclt)
Create table Client (
Codeclt varchar2(30),
Publicité
Nomclt varchar2(30),
Prenomclt varchar2(30),
Villeclt varchar2(30),
Constraint pk\_client primary key(codeclt)
) ;
Table 2 : Representant (coderep, nomrep, prenomrep)
Create table Representant (
Coderep varchar2(30),
Nomrep varchar2(30),
Prenomrep varchar2(30),
Constraint pk\_rep primary key (coderep)
) ;
Table 3 : Appartement (ref, superficie, prix, #coderep, #codeclt)
Create table Appartement (
Ref varchar2(30),
Superficie number(15),
Prix number(15),
Coderep varchar2(30),
Codeclt varchar2(30),
Constraint pk\_app primary key (ref),
Constraint fk\_app\_rep foreign key (coderep) references Representant (coderep),
Constraint fk\_app\_clt foreign key (codeclt) references Client (codeclt)
) ;
2- Ecrire les commandes n cessaires linsertion des extensions suivantes pour chaque table
de la base de donn es :
| | | | |
| --- | --- | --- | --- |
| Client | | | |
| | | | |
| codeclt | nomcl | Prenomcl | Villecl |
| | | | |
| C1 | jerbi | Ali | Tunis |
| | | | |
| C2 | ayadi | Sami | Sfax |
| | | | |
| C3 | zaydi | Hela | Sousse |
| | | | |
Insert into Client Values(C1, jerbi, Ali, Tunis) ;
Insert into Client Values(C2, ayadi, Sami, Sfax) ;
Insert into Client Values(C3, zaydi, Hela, Sousse) ;
Representant
| | | | |
| --- | --- | --- | --- |
| | coderep | Nomrep | prenomrep |
| | | | |
| | R1 | Tounsi | Ala |
| | | | |
| | R2 | Sfaxi | hedi |
| | | | |
| | R3 | Gabsi | amine |
| | | | |
Publicité
Insert into Representant values (R1, Tounsi, Ala) ;
Insert into Representant values (R2, Sfaxi, Hedi) ;
Insert into Representant values (R3, Gabsi, amine) ;
| | | | | |
| --- | --- | --- | --- | --- |
| Appartement | | | | |
| | | | | |
| ref | superficie | prix | Coderep | codecl |
| | | | | |
| A1 | 500 | 100 | R2 | C1 |
| | | | | |
| A2 | 700 | 50 | R1 | C1 |
| | | | | |
| A3 | 900 | 150 | R2 | C3 |
| | | | | |
Insert into Appartement values (A1, 500, 100, R2, C1)
Insert into Appartement values (A2, 700, 50, R1, C1)
Insert into Appartement values (A3, 900, 150, R2, C3)
3- Lagent immobilier souhaite avoir un certain nombre dinformations, effectuer lesrequ tes SQL n cessaires afin de satisfaire lagent immobilier.
1. La liste des repr sentants
Select \* from Representant ;
1. Les diff rentes villes des clients.
Select Distinct ville from Client ;
1. Le nombre de Client.
Select count(\*) from Client ;
1. Les informations du client de code C2.
Select \* from Client where codeclt =C2 ;
1. Le maximum des prix des appartements.
Select max(prix) from Appartement ;
1. Le minimum des prix des appartements.
Select min(prix) from Appartement ;
1. La liste des clients class s par ordre alphab tique de leurs pr noms.
Select \* from Client order by prenomcl ;
1. La liste des appartements g r s par Sfaxi hedi.
Select \* from Appartement A, Representant R where A.coderep = R.coderep and nomrep = Sfaxi and prenomrep = Hedi ;
1. La moyenne des prix des appartements.
Select avg(prix) from Appartement ;
1. Le nombre dappartements dont la superficie est sup rieur 700.
Select coun(\*) from Appartement where superficie > 700 ;
Exercice n 5 :
Soit les relations suivantes de la soci t Gavasoft
Emp(NumE, NomE, Fonction, Embauche, Salaire, Comm,#NumD)
Dept(NumD, NomD, Lieu)
Exemple :Soit les extensions suivantes pour chaque table :
| | | | | | | | |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Dept | NumD | NomD | | Lieu | | | |
| | | | | | | | |
| | 1 | Droit | | Sfax | | | |
| | | | | | | | |
| | 2 | Commerce | | Sousse | | | |
Publicité
| | | | | | | | |
| | | | | | | | |
| Emp | NomE | Fonction | | Embauche | Salaire | Comm | NumD |
| | | | | | | | |
| | Amin | Pr sident | | 10/10/1979 | 10000 | NULL | NULL |
| | | | | | | | |
| | Anas | Doyen | | 01/10/2006 | 5000 | NULL | 1 |
| | | | | | | | |
| | Toto | Stagiaire | | 01/10/2006 | 0 | NULL | 1 |
| | | | | | | | |
| | Al-Capone | Commercial | | 01/10/2006 | 5000 | 100 | 2 |
| | | | | | | | |
Avec :
1. NumD, Salaire, Comm : entier de 20 chiffres
2. NomD, Lieu, NomE, Fonction : chaine de 30 caract res (au maximum).
3. Embauche : date
Travail demand :
1- Ecrire les requ tes SQL n cessaires la cr ation de la Base de Donn es d crites ci-dessus, tout en respectant le type et la longueur donn e ci-dessus pour les diff rents attributs, et en sp cifiant les contraintes cl s primaires et cl s trang res.
M me principe que lexercice 1
2- Ecrire les commandes n cessaires linsertion des extensions suivantes pour chaquetable de la base de donn es.
M me principe que lexercice 1
3- Ecrire les requ tes suivantes en langage SQL:
1. Donnez la liste des employ s ayant une commission (Comm) (non NULL) class par commission d croissante.
SELECT \* FROM Emp WHERE Comm IS NOT NULL AND Comm!=0 ORDER BY Comm DESC ;
1. Donnez les noms des personnes embauch es depuis le 01-09-2006
SELECT NomE FROM Emp WHERE Embauche > 01/10/2006 ;
1. Donnez la liste des employ s travaillant Cr teil
SELECT \* FROM Emp E, Dept D WHERE E.NumD=D.NumD AND Lieu="Cr teil";
1. Donnez la liste des subordonn s de "Guimezanes"
SELECT \*FROM Emp WHERE NomE="Guimezanes";
1. Donnez la moyenne des salaires.
SELECT AVG(Salaire) FROM Emp;
1. Donnez le nombre de commissions non NULL.
SELECT COUNT(Comm) FROM Emp WHERE Comm IS NOT NULL;
1. Donnez la liste des employ s gagnant plus que la moyenne des salaires de lentreprise
SELECT \* FROM Emp WHERESalaire>(SELECT AVG(Salaire) FROM Emp);
Exercice n 6 :
Soit le mod le relationnel suivant relatif une base de donn es sur des repr sentations musicales :
REPRESENTATION (num\_repr sentation, titre\_repr sentation, lieu)
MUSICIEN (nom, #num\_repr sentation)
PROGRAMMER (#nom, #num\_repr sentation, tarif, date)
Ecrire les requ tes suivantes en Langage SQL :
1. Donner la liste des titres des repr sentations.
SELECT titre\_repr sentation FROM REPRESENTATION ;
1. Donner la liste des titres des repr sentations ayant lieu l'op ra Bastille.
SELECT titre\_repr sentation FROM REPRESENTATION WHERE lieu="Op ra Bastille" ;
1. Donner la liste des noms des musiciens et des titres des repr sentationsauxquelles ils participent.
SELECT nom, titre\_repr sentation FROM MUSICIEN M, REPRESENTATION R WHERE M.num\_repr sentation = R.num\_repr sentation ;
1. Donner la liste des titres des repr sentations, les lieux et les tarifs pour lajourn e du 14/09/96.
SELECT titre\_repr sentation, lieu, tarifFROM REPRESENTATION R, PROGRAMMER P WHERE P.num\_repr sentation = R.num\_repr sentationAND date='14/06/96' ;