Vous êtes sur la page 1sur 5

Facult des Sciences Jean Perrin

Correction du TP2 - Base Location

Remarques :
1. Le rpertoire  est accessible en lecture. Il contiendra les corrections des tps, etc...
2. la fin de la sance, il sera considr que vous avez termin les TP1 et TP2.
3. La commande
   permet dexcuter les commandes SQL contenues dans le fichier nom_fichier. Les lignes
prcdes de deux caractres - seront considres comme des commentaires.
4. La commande
    permet de mmoriser lhistorique des commandes dans le fichier nom_ fichier.
5. La commande
   permet dafficher le rsultat des requtes dans le fichier nom_ fichier.
permet dafficher
les rsultats des requtes sur la sortie standard.
6. La doc sur postgresql se trouve sur slinux2 dans     (version anglaise et francaire en
html + version englaise en pdf).
Pour plus de commandes, allez voir dans laide en ligne ou la doc officielle sur slinux2 (ou sur www.postgresql.org)

La base Location
Q 1 . Regardez dans laide quoi sert la commande
 . Excutez-la.
A laide de   , crez une nouvelle base de donnes     . Excutez de nouveau la com-
mande
 . Regardez dans laide quoi sert la commande
 . Utilisez-la afin de travailler dans la base     
et non plus dans la base   .
Dans votre base, crez et peuplez les tables avec les fichiers    ! et
    !.
Q 2 . Insrez un contrat de rservation pour la voiture didentifiant 8 et le client didentifiant 4 avec une date de dbut au 25
Octobre 2003 et une date de fin au 28 Octobre 2003.
Que se passe-t-il ?
   "  #$   $ $ %#$ &
#"'$ ($ $ )*++, +*-)$ )*++, +*')&.
id_contrat est incrment automatiquement, prix_location est mis nul par dfaut. Mais, rien ninterdit de faire une rserva-
tion pour le pass -> manque une contrainte dintgrit utilisant #  dans la cration de la base.
Q 3 . Insrez un contrat de rservation pour la voiture didentifiant 8 et le client didentifiant 2 avec une date de dbut au 25
Octobre 2003 et une date de fin au 28 Octobre 2003.
Que se passe-t-il ? Quel est le problme ?
   "  #$   $ $ %#$ &
#"'$ *$ $ )*++, +*-)$ )*++, +*')&.
Linsertion a lieu alors que la voiture est dj reserve pour ces dates-l. Solution propose dans les prochains TPs.
Q 4 . Insrez un contrat de rservation pour la voiture didentifiant 4 et le client didentifiant 10 avec une date de dbut au 29
Octobre 2003 et une date de fin au 30 Octobre 2003.
Que se passe-t-il ? Pourquoi ?
   "  #$   $ $ %#$ &
#"($ +$ $ )*++, +*/)$ )*++, +,+)&.
Insertion impossible : le client 10 nexiste pas -> violation de contrainte dintgrit.
Q 5 . Insrez un contrat de rservation pour la voiture didentifiant 4 et le client didentifiant 1 avec une date de dbut au 31
Octobre 2003 et une date de fin au 29 Octobre 2003.
Que se passe-t-il ? Pourquoi ?
   "  #$   $ $ %#$ &
#"($ $ $ )*++, +, )$ )*++, +*/)&.
Insertion impossible : date de dbut postrieure date de fin -> violation de la contrainte dintgrit   .
Q 6 . Supprimez la table . Que se passe-t-il ? Pourquoi ?

page 1/5
  % .
Impossible de supprimer la table , car la table   est lie cette dernire.
Lutilisation dun DROP . . .CASCADE dtachera la table tat de la table  , puis dtruira la table ..
Q 7 . supprimez la catgorie simple de la table   . Que se passe-t-il ?
   
0    1 ) ).
La suppression a lieu. Le   # de    dans la table  # remplace dans  # les   
de valeur 1 (correspondant simple) par la valeur nulle.
Q 8 . Insrez dans la table 2   simple (voiture bas de gamme mais pas cher), didentifiant 1 et dont le prix par
jour slve 4 euro. Et mettez jour la voiture dont le modle est Nivo pour quelle soit de nouveau considre comme une
voiture de catgorie simple

    "   $     $  34 #$  %  &
#" $ ) # %      )$ ($ ) )&.

#  #
    1
0   1 )5  ).

Q 9 . Changez lidentifiant de Duronchon Henriette. Que se passe-t-il ? Pourquoi ?


#   
    1
0    1 )#  ).
Echec de la mise jour. Le client 1 existe dj et id_client est une cl primaire.

#   
    1 /
0    1 )#  ).

La mise jour a lieu. Le #  de    de la table   remplace dans   les    de
valeur 8 (correspondant Duronchon Henriette) par la nouvelle valeur de l    de Henriette.
Q 10 . Supprimez la marque   de la base. Que se passe-t-il ? Pourquoi ?
  #
0 # 1 )  ).
La suppression a lieu et se rpercute dans la table contrat. Le   de  # de la table   entraine
la suppression de tous les contrats concernant une voiture de marque Citron de la table  .
Q 11 . Donnez le nom et le prnom de tous les clients dont le nom de famille commence par Du.
   6    
7
#  6 8
#  6 9 
#%  6 9#
##  6 8#
# 6   
#  6 :  
";   &

   $    


    
0     )<#).

Q 12 . Donnez le nom et le prnom des clients dont le prnom contient exactement 2 r.

page 2/5
   6    
7
#  6 9 
"   &

   $    


    
0      )=*>).

Q 13 . Donnez les contrats dont la date de dbut se situe en octobre.


  6  # 6 %# 6    6  6  6  3 
777777
( 6 , 6 *++( +* 6 ; 6 6 *++-+,*? 6 +
? 6 , 6 *++* ++? 6 ( 6 * 6 *++( + ' 6 +
* 6 ' 6 *++, +*- 6 ( 6 6 *++, +*' 6 +
*( 6 ' 6 *++, +*- 6 * 6 6 *++, +*' 6 +
"(   &

 @
   
0 %#  )" +&= >).

Q 14 . Donnez les contrat qui ont commenc ni en 2005, ni en 2002.


  6  # 6 %# 6    6  6  6  3 
777777
( 6 , 6 *++( +* 6 ; 6 6 *++-+,*? 6 +
* 6 ' 6 *++, +*- 6 ( 6 6 *++, +*' 6 +
*( 6 ' 6 *++, +*- 6 * 6 6 *++, +*' 6 +
",   &

 @
   
0 %# A )<"*++-&)   %# A )<"*++*&).

Q 15 . Modifiez les dates de dbut et de fin des contrats de location et de rservation pour, part ceux ayant lieu en 2005, ils
se passent en 2004.
#  
 %# 1 ")*++()663") )   %#&66))663")B)   %#&&$
 1 ")*++()663") )    &66))663")B)    &&
0 %# A)<*++-)    A)<*++-).

Q 16 . Supprimez les voitures qui nont jamais t loues ou rserves.


 # 6 #  # 6 # 6   6 % 6   
77777
* 6 (,(- C -? 6 9 4  6 ++- 6 ; 6 ,
- 6 /'?; D '? 6 E  6 C, 6 - 6 -
' 6 +/'? F: ;' 6 9 4  6 ++' 6 - 6 (
* 6 +(? 8G '/ 6 E  6 C, 6 - 6 (
, 6 '?;/ F: ;* 6 H  6 5  6 ( 6
"-   &

    #
0  #  "  #
   # 4  
0  # A1 ) # )&.

Q 17 . Crez une table temporaire qui stocke, par vhicule, le nombre de jours de location (pour les contrats termins).

page 3/5
 # 6 %4 #
7
- 6 ?
, 6 *;
* 6 /
",   &

  %  # %4 # 


  #$ #" %#&  %4 #
  "  # 4  #& # 4 
0  # 1 )   )
 # %B  #.

 @    # %4 #.

Q 18 . Crez une table temporaire qui stocke, par catgorie, le chiffre daffaires effectu et le nombre de vhicules concerns.
le nombre de voitures par catgorie :
   6 % #
7
- 6
( 6 *
, 6
6
"(   &

   $  # "@&  % #


  % 
     # 4  #
 # %B   .

 @   % .


Combien chaque catgorie a rapport.

 6   
7
*; 6 -
/+ 6 ,
-+( 6
",   &

  %  


  34 # @ "#" %4 #&  &  $   
   # %4 # # 4  # # 4   
 # %B   $  34 #.

 @   .
Le bilan :
   6 % # 6 
77
6 6 -+(
, 6 6 /+
- 6 6 *;
",   &

  % %   


 @   %  # 4 .

 @   %  .

page 4/5
Les voitures de catgorie 4 (luxe) napparaissent pas dans le bilan car elles ne sont que reserves.
Q 19 . Donnez la succession dinstructions SQL pour augmenter de 10% les tarifs des catgories qui ont le meilleur rendement
par vhicule, et baisser de 20% celles qui ont le moins bon rendement (sans utiliser ni offset, ni limit).
   6 % # 6 
77
- 6 6 *;
"   &

  %   # 


 @   %  
0  % # 1 "  " % #&   &.

 @     #.

   6  %   6      6  34 #


777
* 6  B 6  #    B       A 6 '
, 6    6  #   %      A 6 +
( 6 #3 6  #  #3   A 6 *
6   6  # %       6 (
- 6   #3 6  #    #3    A 6 (!(
"-   &

#   
  34 # 1 "+!'  &@ 34 #
0    "        #&.

 @     .

   6 % # 6 


77
, 6 6 /+
"   &

  % #  


 @   %  
0  % # 1 " 3" % #&   &.

 @   # .

   6  %   6      6  34 #


777
* 6  B 6  #    B       A 6 '
( 6 #3 6  #  #3   A 6 *
6   6  # %       6 (
- 6   #3 6  #    #3    A 6 (!(
, 6    6  #   %      A 6
"-   &

#   
  34 # 1 " !  &@ 34 #
0    "      # &.

 @     .

page 5/5