Vous êtes sur la page 1sur 2

TPN°1 : Le langage définition de données

La forme d'une requête de création de tables est la suivante :


Create Table nom de relation1
(Attribut1 type1 [default valeur par défaut] [Contrainte sur Attribut1],
Attributn typen [default valeur par défaut] [Contrainte sur Attributn],
Contrainte sur relation);

Valeur par défaut spécifie une des valeurs suivantes :


Constante | null |user

Contrainte sur Attributi décrit les contraintes mono-attribut


[not null [unique]]
[references nom de relation2 [(Attributj)]
[Check expression logique]

Contrainte sur relation décrit les contraintes multi-attributs


[constraint nom de contraint]
[unique (Liste d'attributs)]
[,primary key (liste d'attributs)]
[,foreign key (Liste d'attributs)
references nom de relation (liste d'attributs)]

La forme d'une requête d'interrogation est la suivante :


select [distinct | all] expression-d'attributs | *
from {relation [variable]}*
[where condition-de-sélection | sous-question]
[group by liste d'attributs]
[having condition-de-sélection | sous-question]
[order by liste d'attributs];

3. Enoncé du TP
Soit le schéma de la base de données utilisée:
JOUEUR(Nom, Prénom, Age, Nationalité)
RENCONTRE(NomGagnant, NomPerdant, LieuTournoi, Année, Score)
GAIN(NomJoueur, LieuTournoi, Année, Rang, Prime, NomSponsor)
SPONSOR(Nom, LieuTournoi, Année, Adresse, MtContribution)
LIEUTOURNOI(LieuTournoi)
ANNEE(Annee)

La relation JOUEUR contient tous les joueurs licenciés.

La relation RENCONTRE décrit pour chaque tournoi, l'ensemble des rencontres opposant deux
joueurs (un gagnant et un perdant). La relation décrit aussi le score réalisé à chaque rencontre. Les
hypothèses suivantes sont faites sur les tournois:
• deux joueurs ne se rencontrent qu'une fois dans un tournoi,
• un joueur peut gagner contre plusieurs autres joueurs dans un tournoi,
• un joueur peut perdre plusieurs fois dans un tournoi,
• un joueur participe à un ou plusieurs tournois.

La relation GAIN contient les primes et les sponsors des joueurs ayant déjà participé à un tournoi.
Quel que soit le résultat d'un joueur, il perçoit une seule prime par tournoi (donc il n'a qu'un gain
par tournoi), dont le montant est corrélé au rang qu'il occupe dans ce tournoi.

La relation SPONSOR contient les références des sponsors et le montant de leur contribution à
chaque tournoi.
Questions
1. Créer les tables ci-dessus avec le langage SQL.
2. Créer les contraintes d’intégrité référentielle en dehors des tables

3. Insérer dans les tables au moins 4 enregistrements

4. Donner l'expression des requêtes suivantes :


R1: Nom et primes des joueurs sponsorisés par Peugeot entre 1985 et
1990.
R2: Nom et âge des joueurs ayant participé au tournoi de Roland Garros
de 1989.
R3: Nom et nationalité des joueurs sponsorisés par Peugeot et ayant
gagné au moins une rencontre à Roland Garros.
R4: Nom et nationalité des joueurs ayant participé à la fois au tournoi de
Roland Garros et à celui de Wimbledon, en 1985.
R5: Nom des joueurs ayant toutes leurs primes des tournois de Roland
Garros supérieures à 1MF.
R6: Nom, prénom, age et nationalité des joueurs ayant participé à tous
les Roland Garros.
R7: Somme des primes gagnées pour chaque édition de Roland Garros
ayant accueilli plus de 100 joueurs.
R8 : Nom et prénom des joueurs ayant été sponsorisé lors d'un tournoi
par le sponsor de ce tournoi.
R9 : Nom et nationalité des joueurs ayant gagné plus d'un match en
1989.
R10 : Nom, prénom, âge et nationalité des joueurs ayant participé aux
différents tournois.
R11 : Nom, prénom, âge et nationalité des joueurs ayant participé à tous
les tournois de 1997.
R12 : Nom et prénom des joueurs ainsi que le total de leurs primes
éventuelles.
R13 : Moyenne des primes gagnées par année par chacun des joueurs.
R14 : Nom et prénom du gagnant de Rolland Garros 1994.
R15 : Nom et prénom des joueurs ayant gagne au moins un match a
chaque tournoi de la base.
R16 : Noms des joueurs de plus de 25 ans avec (éventuellement) le nom
des adversaires les ayant battu.

5. Exprimer les opérations de mise à jour suivantes:


a) Insérer dans la relation JOUEUR le tuple suivant:
<'Noah','Yannick',26,'Française'>
b) Supprimer de la relation RENCONTRE tous les joueurs ayant perdu à
Roland Garros et ayant une prime inférieure à 100 000 F.
c) Affecter à l'âge de Noah la valeur 27.
d) Ajouter 1 à l'âge de tous les joueurs.

Vous aimerez peut-être aussi