• Aucun résultat trouvé

Travaux Pratiques et Dirigés de Bases de Données n˚ 2

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Pratiques et Dirigés de Bases de Données n˚ 2"

Copied!
2
0
0

Texte intégral

(1)

Année 2019/2020 Deuxième semestre

Département INFORMATIQUE DUT année spéciale

Page 1 Bases de données – TD 2

Travaux Pratiques et Dirigés de Bases de Données n˚ 2

Langage PL/SQL

Les exercices de ce TD font référence à la base de données « Vidéothèque ».

1. Premiers blocs PL/SQL

Dans SQL Developer, vous devez commencer par exécuter la commande SET serveroutput ON. Ceci vous permettra d’afficher des informations à l’écran depuis vos programmes PL/SQL, en utilisant la fonction DBMS_OUTPUT.PUT_LINE.

a. Ecrivez un bloc PL/SQL qui déclare une variable x de type CHAR, lui affecte la valeur

« Hello World » et affiche son contenu à l’écran.

b. Ecrire un bloc PL/SQL qui permet de calculer et d’afficher le nombre de comédies, c’est-à- dire les films dont le codeGenre est égal à « CO ».

2. Exceptions

Le responsable de la vidéothèque se souvient très bien que dans sa base de données, il y a un seul film dont on possède précisément 10 exemplaires.

a. Ecrire un bloc PL/SQL permettant d’afficher le numéro de film, le titre et le réalisateur de ce film.

b. Vous devez considérer que si votre requête vous retourne plus de deux films ou pas de film, alors il y a une erreur. Par conséquent, afin de bien traiter les erreurs éventuelles, vous devez inclure dans votre bloc PL/SQL deux exceptions :

 une première qui traite le cas où la requête retourne plus d’un film ;

 une seconde qui traite le cas où la requête ne retourne aucun film ayant 10 exem- plaires dans cette base de données.

3. Ecrire un bloc PL/SQL qui permet de calculer le nombre d’acteurs ayant joué dans au moins n films, où la valeur de n est donnée par l’utilisateur. Pour la saisie de la valeur de n, essayer les trois va- riantes suivantes :

n est déclarée comme une variable PL/SQL ;

n est saisie par l’intermédiaire d’une variable utilisateur ;

n est déclarée comme une variable hôte dans SQL Developer.

4. Curseurs

Les curseurs permettent de gérer des opérations (sélections, mises à jour) sur des ensembles d’enregistrements.

Ecrivez un bloc PL/SQL permettant d’afficher la liste des films d’un acteur donné (attribut nu- mIndividu de la table Acteur).

5. Blocs PL/SQL

On souhaite accorder un bonus à chaque client en fonction du nombre de locations effectuées en 2020 :

a. Créer une table tableBonus (login, bonus, nbrExLoues). L’attribut bonus est de type num- ber(8,2) et l’attribut nbrExLoues est de type number(8).

(2)

Année 2019/2020 Deuxième semestre

Département INFORMATIQUE DUT année spéciale

Page 2 Bases de données – TD 2

b. Pour remplir la table tableBonus, récupérer à partir de la base de données les valeurs cor- respondant aux logins (attribut login dans la table Client) des clients et aux nombres d’exemplaires loués (attribut nbrExLoues) en 2020.

c. Etant donnés deux nombres entiers positifs n1 et n2, écrire un bloc PL/SQL pour mettre à jour la table tableBonus, de façon telle que :

si 0 < nbrExLoues < n1 on accorde un bonus de 0.1 ;

si n1 ≤ nbrExLoues < n2 on accorde un bonus de 0.2 ;

si n2 ≤ nbrExLoues on accorde un bonus de 0.4 ;

si nbrExLoues est 0 on n’accorde pas de bonus.

d. Pour chaque client, afficher son nom, son prénom et son bonus.

6. Pour un client donné, afficher le type (genre de film) de films qu’il a loué et le pourcentage de loca- tions par type. Par exemple :

Donnez le login du client : mo

Type film : COMEDIE DRAMATIQUE Pourcentage : 66,6%

Type film : COMEDIE Pourcentage : 33,3%

7. Le responsable de la vidéothèque pense que dans sa base de données il n’existe pas de films ayant deux exemplaires.

a. Ecrire un bloc PL/SQL qui calcule le nombre d’exemplaires pour chaque film.

b. Dans ce même bloc, déclarer et utiliser une exception qui permet de quitter le bloc et d’envoyer un message d’erreur si au moins un film a deux exemplaires.

Références

Documents relatifs

– si un même type d’entité intervient plusieurs fois dans un même type d’association, on doit explicitement indiquer le rôle de chaque entité – si on a

NumEtud Nom Prenom Adresse DateNais Sexe NumCours NomCours NomProf NbHC NbHTD NbHTP NumEtud NumCours Note. E1

ALTER TABLE employee ADD CONSTRAINT nom CHECK (lname &lt;&gt; ’’ AND fname &lt;&gt; ’’);. -- ALTER TABLE DROP CONSTRAINT

Caractère arbitraire : il faut distinguer les produits ayant naturellement une odeur de ceux n'en ayant pas =&gt; le signe olfactif consistant en l'odeur naturelle d'un produit

Il faut donc utiliser la fonction valeurs_u qui renvoie tous les termes de la somme dans un vecteur puis utiliser la fonction cumsum sur le résultat de

Eastwood Clint Eastwood Clint Cumberbatch Benedict Freeman Martin Sellers Peter Sellers Peter Sellers Peter. SELECT ne retourne pas un ensemble de n-uplets mais en fait une liste

Eastwood Clint The good, the Bad and the Ugly Blondie Eastwood Clint Gran Torino Walt Kowalski Cumberbatch Benedict Study in Pink Sherlock Holmes Freeman Martin Study in Pink Dr

On peut les supprimer : SELECT DISTINCT nom , prenom FROM PERSONNE , JOUE WHERE id = idacteur ;.