Vous êtes sur la page 1sur 8

TP1 SQL : Select, jointure, sous interrogations

Les Tables de ce TP sont Emp, Dept et Salgrade vues dans le cours.

Ordre Select
1- Affichez le nom, le salaire et la commission de tous les employs qui peroivent des
commissions. Triez les donnes dans l'ordre dcroissant des salaires et des
commissions.
2- Affichez le nom et le poste de tous les employs n'ayant pas de manager.
3- Affichez le nom de tous les employs dont le nom contient deux L et travaillant dans
le dpartement 30 ou dont le manager est 7782.
4- Affichez le nom, le poste et le salaire de tous les ' CLERK' ou 'ANALYST' dont le
salaire est diffrent de $1000, $3000 ou $5000.
5- Afficher le nom, le salaire et la commission de tous les employs dont le montant de
commission est de plus de 10% suprieur au salaire.

Fonctions dagrgation :
6- Afficher le salaire maximum, le salaire minimum, la somme des salaires et le salaire
moyen pour chaque type de poste. Trier par nom de poste et arrondisser au 2me
chiffre dcimal.
7- Ecrivez une requte pour afficher le nombre de personnes qui occupent le mme poste.
8- Dterminez le nombre de personnes ayant des subordonns, sans en donner la liste.
Nommez la colonne "Nombre de Chefs".
9- Affichez le matricule des diffrents managers et le niveau de salaire le plus bas de
leurs employs. Excluez toute ligne o le manager n'est pas identifi. Excluez tout
groupe dans lequel le salaire minimum est infrieur $1000. Triez les rsultats par
ordre dcroissant des salaires.
10- Ecrivez une requte pour afficher le nom du dpartement, la localisation, le nombre
d'employs et le salaire moyen pour tous les employs de ce dpartement. Nommez les
colonnes dname, loc, Nombre dEmploys et Salaire, respectivement.
11- Crez une requte pour afficher le nombre total d'employs puis, parmi ces employs,
ceux qui ont t embauchs en 1980, 1981, 1982 et 1983. Nommez les colonnes de
faon approprie.
12- Crez une requte pour afficher les postes, le salaire de ces postes par numro de
dpartement et le salaire total de ces postes incluant tous les dpartements. Nommez
les colonnes de faon approprie.

TP N2 : Cration de table, contraintes, manipulation des donnes, sous


interrogation, oprateurs ensemblistes, vues, privilges.
Soit le modle relationnel suivant relatif la gestion simplifie des tours de la coupe du monde de
football dAllemagne 2006.
EQUIPE(CodeEquipe, NomEquipe, DirecteurSportif)
JOUEUR(CodeJoueur, NomJoueur, CodeEquipe*)
TYPE_TOUR(CodeType, LibellType)
ARBITRE(CodeArbitre, NomArbitre, Nationalit)
MATCH(NumroMatch, DateMatch, LieuMatch, CodeType*, CodeArbitre*)
PARTICIPER_EQUIPE(NumroMatch*, CodeEquipe*, NombreBut)
PARTICIPER_JOUEUR( CodeJoueur*, NumroMatch*, NumroMaillot, NombreBut)
Remarque : les cls primaires sont soulignes et les cls trangres sont marques par *
Exercice 1 :
Crer deux utilisateurs user1 et user2. Dans le schma de user 1, crer les tables ci-dessous avec les
contraintes indiques en y ajoutant NombreBut>= 0.
Exercice 2 :
Insrer les donnes mentionnes dans les tableaux ci-joints en utilisant des scripts.
Exercice 3 :
Exprimer les requtes suivantes en SQL. Utiliser au moins une fois tous les oprateurs ensemblistes,
loprateur exist et not exist.
1 - Quelle est la composition de l'quipe de Tunisie (Code, nom)
2 - Quel est le nombre de matchs jous par lquipe de France.
3- Quelle est lquipe qui a gagn la coupe. (le LibellType du match final est Final.
4 Donner par quipe, le nom de lquipe et des joueurs qui ont jou en Demi-Final et en Final.
5- Donner les noms des joueurs qui nont particip aucun match, ceux qui ont particip au moins
un match, ceux qui ont participer tous les matchs et ceux qui ont particip au maximum des matchs
jous par un joueur.
6- Pour les joueurs qui ont marqu des buts dans le match final, donner leurs noms et le nombre de
buts qui ont marqu.
7- Donner les noms des joueurs qui ont marqu le maximum ou le minimum de buts pendant la coupe.
8- Donner le nom et la nationalit des arbitres qui ont diriger les matchs dans lesquels a jou le joueur
ma11.
9- Pour chaque quipe, donner le nombre total de buts marqus dans les matchs dirig par larbitre
arb1.
10- Quelles sont les quipes qui ont marqu plus ou moins de buts que lquipe du Maroc dans la
coupe.
Exercice 4 :
En tant que user1, donner quelques droits limits sur des tables pour user2.
Exercice 5 :
1. Crer une vue pour afficher dans la mme table le nom dquipe et la liste de ces joueurs.
Empcher lcriture dans cette vue

2. Crer une vue pour afficher dans la mme table le numro de match, les noms des
quipes et la liste des joueurs qui y sont particip. Donner le droit de lecture seule sur
cette vue user2 avec possibilit de donner son tour ce droit un autre utilisateur.

TP N3 : Fonctions SQL
Les Tables de ce TP sont Emp, Dept et Salgrade vues dans le cours.
1.
Ecrivez une requte pour afficher la date courante. Nommez la colonne Date.
2.
Affichez pour chaque employ, le matricule, le nom, le salaire et le salaire augment
de 15% sous la forme d'un nombre entier. Nommez cette colonne New Salary. Enregistrez
votre ordre SQL dans un fichier appel p3q2.sql.
3.
Excutez votre requte partir du fichier p3q2.sql.
4.
Modifiez votre requte p3q2.sql en ajoutant une colonne dans laquelle l'ancien salaire
est soustrait du nouveau salaire. Nommez cette colonne Increase. Excutez nouveau votre
requte.
5.
Affichez le nom et la date d'embauche de chaque employ ainsi que la date de rvision
du salaire qui sera le premier lundi tombant aprs 6 mois d'activit. Nommez la colonne
REVIEW. Les dates devront apparatre dans le format suivant : "Sunday, the Seventh of
September, 1981".
6.
Affichez le nom de chaque employ et calculez le nombre de mois travaills depuis la
date d'embauche. Nommez la colonne MONTHS_WORKED. Classez les rsultats en
fonction du nombre de mois d'anciennet. Arrondissez le nombre de mois au nombre entier
suprieur.
7.
Ecrivez une requte affichant les informations suivantes pour chaque employ :
<nom de lemploy> gagne <salaire> par mois, mais veut <3 fois son salaire>.
Nommez la colonne Salaires de Rve.
8.
Crez une requte pour afficher le nom et le salaire de tous les employs. Le salaire
sera format de faon avoir 15 caractres de long, les blancs tant combls gauche par des
$. Nommez la colonne SALARY.
9.
Ecrivez une requte pour afficher tous les noms d'employ commenant par les lettres
J, A, ou M, ainsi que la longueur du nom. Le nom doit apparatre en minuscules, sauf l'initiale
qui sera en majuscules. Donnez chaque colonne un nom appropri.
10.
Affichez le nom, la date d'embauche ainsi que le jour de la semaine o l'employ
dbut. Nommez la colonne JOUR. Classez les rsultats dans l'ordre des jours de la semaine
partir du lundi (monday).
11.
Crez une requte pour afficher le nom et le montant de la commission de chaque
employ. Pour les employs ne touchant aucune commission, affichez "No Commission".
Nommez la colonne COMM.
12.

Crez une requte pour afficher le nom des employs et leur salaire indiqu par des
astrisques. Chaque astrisque reprsente cent dollars. Triez les donnes dans l'ordre
dcroissant des salaires. Nommez la colonn EMPLOYEE_AND_THEIR_SALARIES.

TP CREATION DES TABLES


LISTE ET ENREGISTREMENT DES TABLES
Equipe

CodeEquipe
MA
AL
TU
FR

NomEquipe
MAROC
ALGERIE
TUNISIE
France

DirecteurSportif
DSMA
DSAL
DSTU
DSFR

NomJoueur
MAJJ1
MAJJ2
MAJJ3
MAJJ4
MAJJ5
MAJJ6
MAJJ7
MAJJ8
MAJJ9
MAJJ10
MAJJ11
MAJJ12
MAJJ13
MAJJ14
MAJJ15
MAJJ16
MAJJ17
MAJJ18
MAJJ19
MAJJ20
ALJJ1
ALJJ2
ALJJ3
ALJJ4
ALJJ5
ALJJ6
ALJJ7
ALJJ8
ALJJ9
ALJJ10
ALJJ11
ALJJ12
ALJJ13
ALJJ14

CodeEquipe*
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
MA
AL
AL
AL
AL
AL
AL
AL
AL
AL
AL
AL
AL
AL
AL

JOUEUR
CodeJoueur
MAJ1
MAJ2
MAJ3
MAJ4
MAJ5
MAJ6
MAJ7
MAJ8
MAJ9
MAJ10
MAJ11
MAJ12
MAJ13
MAJ14
MAJ15
MAJ16
MAJ17
MAJ18
MAJ19
MAJ20
ALJ1
ALJ2
ALJ3
ALJ4
ALJ5
ALJ6
ALJ7
ALJ8
ALJ9
ALJ10
ALJ11
ALJ12
ALJ13
ALJ14

ALJ15
ALJ16
ALJ17
ALJ18
ALJ19
ALJ20
TUJ1
TUJ2
TUJ3
TUJ4
TUJ5
TUJ6
TUJ7
TUJ8
TUJ9
TUJ10
TUJ11
TUJ12
TUJ13
TUJ14
TUJ15
TUJ16
TUJ17
TUJ18
TUJ19
TUJ20
FRJ1
FRJ2
FRJ3
FRJ4
FRJ5
FRJ6
FRJ7
FRJ8
FRJ9
FRJ10
FRJ11
FRJ12
FRJ13
FRJ14
FRJ15
FRJ16
FRJ17
FRJ18
FRJ19
FRJ20

ALJJ15
ALJJ16
ALJJ17
ALJJ18
ALJJ19
ALJJ20
TUJJ1
TUJJ2
TUJJ3
TUJJ4
TUJJ5
TUJJ6
TUJJ7
TUJJ8
TUJJ9
TUJJ10
TUJJ11
TUJJ12
TUJJ13
TUJJ14
TUJJ15
TUJJ16
TUJJ17
TUJJ18
TUJJ19
TUJJ20
FRJJ1
FRJJ2
FRJJ3
FRJJ4
FRJJ5
FRJJ6
FRJJ7
FRJJ8
FRJJ9
FRJJ10
FRJJ11
FRJJ12
FRJJ13
FRJJ14
FRJJ15
FRJJ16
FRJJ17
FRJJ18
FRJJ19
FRJJ20

AL
AL
AL
AL
AL
AL
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
TU
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR
FR

TYPE_TOUR
CodeType

LibellType

TR2

DEMI FINAL

TRF

FINAL

ARBITRE
CodeArbitre

NomArbitre

Nationalit

AR1
AR2
AR3
AR4
AR5
AR6
AR7
AR8

ARB1
ARB2
ARB3
ARB4
ARB5
ARB6
ARB7
ARB8

MAROC
MAROC
TUNISIE
TUNISIE
FRANCE
FRANCE
ALGERIE
ALGERIE

DateMatch

LieuMatch

MATCH
NumroMatch
TR21
TR22
TRF1

15/06/2006 MUNIKH
16/06/2006 BONN
20/06/2006 KANN

CodeType

CodeArbitre

TR2
TR2
TRF

AR5
AR1
AR4

PARTICIPER_EQUIPE
NumroMatch

CodeEquipe

TR21
TR21
TR22
TR22
TRF1
TRF1

MA
TU
AL
FR
MA
AL

NombreBut
3
2
7
1
5
2

PARTICIPER_JOUEUR
CodeJoueur

NumroMatch NumroMaillot

MAJ1
MAJ2
MAJ3
MAJ4
MAJ5
MAJ6
MAJ7
MAJ8
MAJ9
MAJ10
MAJ11
MAJ1
MAJ2

TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TRF1
TRF1

1
2
3
4
5
6
7
8
9
10
11
1
2

NombreBut
0
0
0
0
0
0
0
0
1
1
1
0
0

MAJ3
MAJ4
MAJ5
MAJ6
MAJ7
MAJ8
MAJ9
MAJ10
MAJ11
ALJ1
ALJ2
ALJ3
ALJ4
ALJ5
ALJ6
ALJ7
ALJ8
ALJ9
ALJ10
ALJ11
ALJ1
ALJ2
ALJ3
ALJ4
ALJ5
ALJ6
ALJ7
ALJ8
ALJ9
ALJ10
ALJ11
TUJ10
TUJ11
TUJ12
TUJ13
TUJ14
TUJ15
TUJ16
TUJ17
TUJ18
TUJ19
TUJ20
FRJ1
FRJ2
FRJ3
FRJ4
FRJ5
FRJ6
FRJ7
FRJ8
FRJ9
FRJ10
FRJ11

TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TRF1
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR21
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TR22
TR22

3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11

0
0
0
0
1
1
1
1
1
0
0
0
0
0
0
1
0
1
3
2
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
1