2020-2021 BD Avancées Pascal Lafourcade, Franck Glaziou & Raphaël Delage
TP4
1. (3 points) Afficher la date sous la forme "Il est 18 heure 45 minutes et 26 secondes, nous sommes LUNDI "
Cette commande peut vous aider :
select to_char(sysdate,’DAY’,’NLS_DATE_LANGUAGE =FRENCH’) from dual;
2. (2 points) Afficher le jour de la semaine en toute lettre suivi d’autant de $ qu’il faut pour que la chaine fasse 20 caractères sans espace.
3. (5 points) Le SQL dynamique permet de générer des commandes SQL. La commande spool toto.sql écrit l’ensemble des résultats des requêtes exécutées par la suite dans le fichier toto.sql . Pour arrêter cette fonctionalité il faut faire spool off; . Il est donc possible d’exé- cuter les commandes générées avec les requêtes SQL en lançant la commande @toto.sql; ainsi créée.
À partir de la liste de vos tables, indiquer la liste des commandes permettant de supprimer les tables. Les seules tables a supprimer doivent contenir la lettre ’A’ au moins une fois et avoir plus de 6 lettres. Si la table ne répond pas à ce critère, afficher "la table XXX ne doit pas être supprimée". Créer des tables fictives pour tester votre code.
4. (10 points) Concurrence d’accès. Suivez les entêtes de colonne à la lettre. Les tables doivent exister dans les deux comptes étudiants. Les chaînes entre <> sont à remplacer par la valeur.
<User1> le compte d’un des étudiants <User2> le compte de l’AUTRE etudiant.
Pour les questions suivantes, vous indiquerez :
— Quels sont les résultats des commandes exécutées ?
— Est-ce que des verrous sont positionnés ?
— Que constatez-vous ? Expliquez vos réponses.
Lancer la commande : CREATE TABLE tp4 AS select * FROM STATS;
Puis les commandes indiquées par utilisateurs dans l’ordre indiqué.
(a) (1 point) Trouver l’idjoueur de Kévin Durant. Cette valeur n’est pas forcément la même pour tous les étudiants. Dans la suite, si cette valeur est différente de 920 , remplacez la par la valeur trouvée.
(b) (1 point) Uniquement pour cette question, d’un point de vue théorique quel est le compor- tement obtenu pour chaque utilisateur. Pour les autres questions exécutez les commandes sur machines dans plusieurs fenêtres.
Tps User1 (session S1, transaction T1) User2 (session S2, transaction T2) t1 DELETE tp4 WHERE datenaissances=
TO_DATE(’04/01/1997’,’DD/MM/YYYY’);
t2 DELETE tp4 WHERE datenaissances=
TO_DATE(’04/01/1997’,’DD/MM/YYYY’);
t3 Rollback;
t4 Rollback;
(c) (2 points)
Tps User1 (session S1, transaction T1) User1(session S2, transaction T2) t1 DELETE tp4 WHERE idjoueur=’920’;
t2 DELETE tp4 WHERE idjoueur=’920’;
t3 Rollback;
t4 Rollback;
(d) (2 points)
2020-2021 BD Avancées Pascal Lafourcade, Franck Glaziou & Raphaël Delage
Tps User1 (session S1, transaction T1) User1 (session S2, transaction T2) t1 DELETE tp4 WHERE idjoueur=’920’;
t2 DELETE tp4 WHERE prenomnomj=’Kevin Durant’;
t3 Rollback;
t4 Rollback;
(e) (2 points)
Tps User1 (session S1, transaction T1) User1 (session S2, transaction T2) t1 UPDATE tp4 SET
prenomnomj=’Kevin Durant’
WHERE idjoueur=’920’;
t2 ALTER TABLE tp4 MODIFY (STATUS VARCHAR2(7));
t3 Rollback;
t4 ALTER TABLE tp4 MODIFY (STATUS VARCHAR2(7));
(f) (2 points)
Tps User1 (session S1, transaction T1) User1 (session S2, transaction T2) t1 DELETE tp4;
t2 SELECT count(1) FROM tp4;
t3 SELECT count(1) FROM tp4;
t4 commit;
t5 SELECT count(1) FROM tp4;