La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.

Présentations similaires


Présentation au sujet: "1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions."— Transcription de la présentation:

1 1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions

2 2 Bases de données VII Les opérateurs ensemblistes ORACLE

3 3  Les opérations ensemblistes  Les sous requêtes Dépendantes Indépendantes  Les transactions et accès concurrents Les transactions Les verrous Base de données VII Ce qui est abordé

4 4 ORACLE  Les opérateurs ensemblistes jouent avec les résultats de requête comme s’ils étaient des ensembles UNION : réunion des résultats MINUS : différence des résultats INTERSECT : intersection des résultats  Syntaxe générale : SELECT … SELECT … Base de données VII Les opérateurs ensemblistes

5 5  Même nombre de colonnes après chaque SELECT.  Colonnes de chaque table de même type.  Un DISTINCT est exécuté de manière implicite  ORDER BY : numéro des colonnes Base de données VII Les opérateurs ensemblistes : conditions

6 6 CICI BHBH AGAGR MINUS S C F I D1 B E H B1 A D G A1 R UNION S col3Col2Col1 Col3Col2Col1 D1 F B1 E A1 DS CFICFI BEHBEH ADGADG R c3C2C1Col3Col2Col1 Base de données VII Les opérateurs ensemblistes : exemples

7 7 Bases de données VII Les sous-requêtes ORACLE MySQL V > 5.0

8 8  Elles permettent d’effectuer une requête sur la base du résultat d’une autre requête.  Mysql ne les implémente pas jusqu’à MySQL 5.0  On peut toujours s’en passer, mais elles fournissent la façon la plus puissante d’extraire des données complexes Base de données VII Les sous-requêtes et requêtes imbriquées

9 9  Doivent toujours être placées après la clause WHERE ou la clause HAVING en lieu et place d’une constante  Il peut y avoir plusieurs requêtes imbriquées  La sous-requête peut renvoyer une valeur ou liste valeur  Elle peut être dépendante ou indépendante Base de données VII Les sous-requêtes et requêtes imbriquées

10 10  Sélection classique par comparaison avec une constante WHERE poste = 'Manager'  Est équivalent à : WHERE poste = (SELECT poste from...)  Accepte tous les opérateurs tels que, =, <> Base de données VII Les sous-requêtes qui renvoient une valeur

11 11 ORACLE SELECT nom FROM employe WHERE poste = (SELECT poste FROM employe WHERE nom = 'Martin') ; Renvoie tous les employés qui ont le même poste que Martin Note : On considère que nom est clé primaire Base de données VII Les sous-requêtes qui renvoient une valeur

12 12  …WHERE poste IN (SELECT poste FROM..); La valeur doit être trouvée dans le résultat de la sous requête On peut utiliser NOT IN  WHERE numero > ALL (SELECT numero FROM..); La valeur testée doit être supérieure à toutes les valeurs ramenées par la sous requête  …WHERE poste > ANY (SELECT poste FROM..); La valeur testée doit être supérieure à au moins une valeur obtenue par la sous requête Base de données VII Celles qui renvoient une liste de valeurs

13 13  opérateur IN, NOT IN  opérateur simple =, !=, <>,, = suivi de ALL ou ANY. =ANY est équivalent à IN !=ALL est équivalent à NOT IN Base de données VII Celles qui renvoient une liste de valeurs 2

14 14  Exemple SELECT nom FROM client WHERE num_client IN (SELECT num_client FROM commande WHERE date_commande = '05-JUN-98'); Base de données VII Celles qui renvoient une liste de valeurs 3

15 15 SELECT c.id_client FROM client c WHERE EXISTS (SELECT cde.id_client FROM commande cde WHERE cde.id_client = c.id_client)  Cette requête utilise une sous-requête dépendante.  Pour obtenir des résultats la sous-requête doit être vraie Base de données VII WHERE EXISTS et WHERE NOT EXISTS Dépendance

16 16 SELECT num FROM commande WHERE (date, id_client) = (SELECT date, id_client FROM commande WHERE id_client = 'client1' AND date = '25-jan-2005'); Base de données VII Sous-requêtes sur colonnes multiples

17 17 Bases de données VII Les transactions et les accès concurrents ORACLE MySQL V > 5.0

18 18  Un SGBD est par définition multi-utilisateurs.  L'exécution simultanée de plusieurs applications peut poser des problèmes d'accès concurrents (une même information étant manipulée par plusieurs utilisateurs à la fois). Base de données VII Transactions et accès concurrents

19 19  ‘Paul’ lit un enregistrement ‘a’ de la table ‘A’. ‘Paul’ modifie les données dans son application.  ‘Pierre’ lit le même enregistrement.  ‘Pierre’ modifie les données dans son application  ‘Pierre’ a fini plus tôt. Il sauvegarde ses modifications.  ‘Paul’ n’a rien vu, il sauvegarde à son tour.  ‘Pierre’ revient sur son enregistrement et ne trouve plus ses données. Base de données VII Accès concurrents : le problème

20 20  Une transaction est une séquence d'opérations (sauf create, alter, drop) qui accèdent et modifient le contenu d'une base de données.  Une transaction peut être validée ou invalidée.  Le début d'une transaction peut être implicite (début d’une session de connexion ou la fin d’une transaction précédente) ou explicite.  La fin d'une transaction peut être implicite ou explicite. Base de données VII Les transactions

21 21  Une fin explicite donne lieu à un ROLLBACK (annulation) ou un COMMIT (validation).  Une fin implicite est définie par : Exécution d'une commande du langage de définition de données (create alter drop) Fin d’une session. Base de données VII Les transactions 2

22 22  On peut découper une transaction complexe en créant des points d'arrêts (savepoints). SAVEPOINT ;  Ces points d'arrêt permettent d’annuler une partie de la transaction. La syntaxe est : ROLLBACK TO [ ; Base de données VII Les transactions : points de sauvegarde

23 23  Atomicité : Une transaction est complètement exécutée ou pas du tout (unité atomique de traitement).  Cohérence : une transaction prend une base de données dans un état cohérent et la transforme dans une nouvelle base de données qui est dans un état cohérent (préservation de la cohérence). Par contre, la cohérence peut être violée pendant l'exécution d'une transaction. Base de données VII Les transactions : Modèle ACID

24 24  Isolation : les mises à jour faites par une transaction ne sont visibles à l'extérieur de celle-ci (pour les autres transactions) qu'après la validation de la transaction.  Durabilité : après la fin d'une transaction, les mises à jour sont définitives même en cas de futurs problèmes matériels (grâce au mécanisme de reprise) Base de données VII Les transactions : Modèle ACID 2

25 25  Un verrou est une variable d'état associée à un objet X de la base et indiquant son état vis à vis des opérations de lecture/écriture.  Verrou binaire 2 états verrouillé ou libre avec deux opérations verrouiller(X) et libérer(X) => restrictif  Verrou ternaire 3 états en lecture (ou partagé), en écriture, ou libre. Base de données VII Gestion des accès concurrents

26 26  Granularité de contrôle de concurrence (de forte à faible) un attribut d’enregistrement, un enregistrement, une table, une base.  Plus la granularité est forte, plus le niveau de concurrence augmente, et plus le niveau de complexité de gestion des verrous augmente au détriment des performances. Base de données VII Gestion des accès concurrents 2

27 27 FIN DU COURS


Télécharger ppt "1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions."

Présentations similaires


Annonces Google