Bases de Données PLAN. 1 : Introduction 2 : Le langage SQL 3 : Intégrité des données 4 : PL/SQL

Dimension: px
Commencer à balayer dès la page:

Download "Bases de Données PLAN. 1 : Introduction 2 : Le langage SQL 3 : Intégrité des données 4 : PL/SQL"

Transcription

1 Bases de Données 1 PLAN 1 : Introduction 2 : Le langage SQL 3 : Intégrité des données 4 : PL/SQL 5 et 6 : Conception des bases de données 7 : Organisation et administration d'une base de données (Oracle) 2

2 Bibliographie Livres : Bases de données Objet et relationnel de Georges Gardarin (Edition Eyrolles) Web: (modèle relationnel, SQL, Conception Entité-Association) (language SQL) (modèle relationnel, SQL, Conception Entité-Association) 3 1 : Introduction 4

3 Définition Base de données : ensemble structuré de données! enregistrées avec le minimum de redondance! pour satisfaire simultanément plusieurs utilisateurs! de façon sélective! en un temps opportun. Stockage des données : Sur support permanent Administration des données : Systèmes de Gestion de Base de Données (SGBD) 5 Système de Gestion de Base de Données Un Système de Gestion de Base de Données (SGBD) est un ensemble de logiciels permettant la recherche, la mise à jour et la sauvegarde de données stockées sur mémoire secondaire. SGBD Système d exploitation Disque Place du SGBD dans le système 6

4 Système de Gestion de Base de Données Un SGBD assure! la description des données,! leur recherche et mise à jour,! la sûreté : vérifier les droits d accès des utilisateurs; limiter les accès non autorisés ; crypter les informations sensibles! la sécurité : sauvegarde et restauration des données; limiter les erreurs de saisie, de manipulation.! l intégrité : définir des règles qui maintiennent l intégrité de la base de données (contraintes d intégrité)! la concurrence d accès : détecter et traiter les cas où il y a conflit d accès entre plusieurs utilisateurs. 7 Système de Gestion de Base de Données Domaine d utilisation :! Bases de Connaissances,! Systèmes Experts,! Systèmes d Information Géographique,! Edition de Documents Informatisés (EDI),! Systèmes d Information Documentaire (SID),! Conception Assistée par Ordinateur (CAO),! Gestion de Production Assistée par Ordinateur (GPAO) Ce sont des domaines où une information structurée est enregistrée et gérée par un SGBD et traitée selon des besoins spécifiques (l interface et les outils de traitement dépendant plus particulièrement de l application). 8

5 Modélisation des données On distingue trois niveaux de description des données:! niveau interne! niveau conceptuel! niveau externe 9 Application Application Application Niveau Schéma externe Schéma externe vues externe Niveau conceptuel Schéma conceptuel structure des données : types, droits d accès Niveau interne Schéma physique structures de stockage : fichiers, 10

6 Le niveau interne Spécifie comment les données sont enregistrées sur les mémoires secondaires (disque, bandes, ). Le schéma physique décrit les données telles quelles sont stockées dans la machine Exemple :! les fichiers qui les contiennent (nom, localisation, taille) 11 Le niveau conceptuel Le schéma conceptuel : description des données qui existent dans l entreprise sans souci d implantation en machine:! les types de données élémentaires ( par ex. titre de livre, nom d auteur, éditeur, nombre de pages)! les types de données composés (description des objets) (par ex. livre, personne )! les types de données composés (description des associations entre les objets ( par ex. un livre emprunté par une personne, )! certaines règles (par ex. une personne ayant plus d une semaine de retard pour rendre un livre à la bibliothèque n a pas le droit d emprunter des livres pendant deux semaines, ) 12

7 Exemple de schéma conceptuel LIVRE EMPRUNT PERSONNE N auteur titre N édit. Date Type N de SS Nom Adr 13 Le niveau externe C'est le plus haut niveau d'abstraction de la base de données. Il est aussi appelé niveau vue et est propre à un utilisateur ou à un groupe d'utilisateurs et ne lui présente qu'une vue partielle de la réalité : celle qui intéresse son service. Il y a bien entendu plusieurs vues d'une même BD. 14

8 Historique des SGBD Trois générations dans l évolution des systèmes de gestion de base de données (SGBD). Chaque génération est caractérisée par le modèle de données qu elle propose. Les systèmes hiérarchiques et réseaux Les systèmes relationnels Les systèmes objets 15 Les systèmes hiérarchiques et réseaux 1. Les systèmes hiérarchiques et réseaux Ces systèmes sont apparus dans les années 60 et constituent la première génération de SGBD. Ils résultent d une approche de conception système qui vise à étendre le système de fichier par des possibilités de liaison inter-fichiers matérialisées par des pointeurs. 16

9 Les systèmes hiérarchiques et réseaux Modèle hiérarchique (1960)! Les données sont représentées dans la base sous la forme d un arbre! La structure d arbre utilise des pointeurs et détermine le chemin d accès aux données. serviceresponsableresponsableexécutant exécutant exécutant exécutant 17 Modèle réseau (1970) Les systèmes hiérarchiques et réseaux! Les données sont représentées dans la base sous la forme d un graphe quelconque! La structure de graphe utilise des pointeurs et détermine le chemin d accès aux données. serviceresponsableresponsableexécutant exécutant exécutant exécutant 18

10 Les systèmes relationnels 2. Les systèmes relationnels Ces systèmes constituent la deuxième génération de SGBD. Ils sont fondés sur le concept de relation, d où leur nom relationnel. Ces systèmes ont été assez long à s imposer et représentent aujourd hui la grande majorité des SBGD. On note plusieurs étapes dans l apparition de ces systèmes :! 1970 : apparition du modèle relationnel! 1980 : apparition du premier SGBD relationnel : SGBDR! 1990 : les SGBDR représente plus de 50% du parc des SGBD 19 Les systèmes relationnels La théorie des SGBDR est fondée sur la théorie mathématique des relations Représentation des données sous la forme de tables constituées de lignes et de colonnes Dominent le marché des SGBD Table des services Table des responsablesservice ResponsableResponsable Exécutant 20

11 Les systèmes objets 3. Les systèmes objets Ils sont fondés sur le modèle à objets qui permet de représenter beaucoup de situations du monde réel, par la richesse des concepts qu il propose. Le modèle est apparu dans les années 1980, et les premiers systèmes sont apparus dans les années Objet1 1 Personne Annuaire Objet2 21 Le Modèle Relationnel Les concepts de base : Le modèle relationnel a été inventé par E.F.Codd en Il se fonde sur le concept mathématique de relation.! Définition : Un domaine est un ensemble de valeurs.! Exemple : - domaine des entiers (domaine infini) - domaine de chaînes de caractères 22

12 Le Modèle Relationnel! Définition : Une relation est un sous-ensemble du produit cartésien d une liste de domaines, caractérisé par un nom.! Exemple : Soit D1 = { Chine, Pays-Bas, Portugal } et D2 = { escudo, florin, yuan }. La relation PAYS : Pays NomPays Monnaie Chine Yuan Pays-Bas Florin Portugal Escudo 23 L unicité de clé! Définition : Une clé de la relation est un ensemble minimal d attributs dont la connaissance des valeurs permet d identifier un tuple unique de la relation considérée. Plus formellement, une clé d une relation R est un ensemble d attributs X tel que quels que soient les tuples t1 et t2 d une instance de R, t1(x)! t2(x). Toute relation possède au moins une clé. S il existe plusieurs clés, on en choisit une que l on appelle clé primaire.! Exemple : L attribut NomPays est la clé de la relation PAYS (NomPays, Monnaie). 24

13 Schéma de relation! Définition : Un attribut est une colonne d une relation caractérisée par un nom.! Exemple : NomPays, Monnaie! Définition : Le schéma de relation est composé du nom de la relation suivi de la liste des attributs et de la définition de leurs domaines. Un schéma de relation est noté sous la forme : R (A1 : D1, A2 : D2,, An : Dn) 25 Schéma de relation! Exemple : PAYS ( NomPays : VARCHAR2(25), Monnaie : VARCHAR2(25), Population : INTEGER) Le schéma d une relation représente son intention. Une table représente une extension d une relation. 26

14 L algèbre Relationnelle L'algèbre relationnelle : langage interne d'un SGBD relationnel. Elle se compose d'opérateurs de manipulation des relations. Ces opérateurs sont regroupés en deux familles :! les opérateurs ensemblistes : union, intersection, différence et produit cartésien.! les opérateurs relationnels : restriction, projection, jointure et division. 27 Union R A B C a1 b1 c1 a1 b2 c2 a2 b1 c2 R1 A B C a1 b2 c1 a2 b2 c1 a2 b1 c2 Porte sur deux relations (compatibles) de même schéma. U = R " R1 U A B C a1 b1 c1 a1 b2 c2 a1 b2 c1 a2 b2 c1 a2 b1 c2 28

15 Intersection R A B C a1 b1 c1 a1 b2 c1 a2 b1 c2 S A B C a1 b2 c1 a2 b2 c1 a2 b2 c2 Porte sur deux relations (compatibles) de même schéma. I = R # S On prend les tuples communs aux 2 relations. I A B C a1 b2 c1 29 Différence R A B C a1 b1 c1 a1 b2 c1 a2 b1 c2 S A B C a1 b2 c1 a2 b2 c1 a2 b2 c2 Porte sur deux relations (compatibles) de même schéma. D = R - S On conserve les tuples présents dans la relation R et qui ne sont pas dans la relation S D A B C a1 b1 c1 a2 b1 c2 30

16 Intersection Remarque : L intersection peut être exprimée avec la différence R1 # R2 = R1 (R1 R2) ou R1 # R2 = R2 (R2 R1) 31 Le produit cartésien d un ensemble de domaines D1, D2,, Dn est l ensemble de tuples < v1, v2, vm> tel que pour chaque i de 1 à m vi appartient à Di. Exemple de produit cartésien: Le produit cartésien yuan}. Soit D1 = {Chine, Hollande, Portugal} et D2 = {escudo, florin, D1 $ D2 = Chine Escudo Chine Florin Chine Yuan Pays-Bas Escudo Pays-Bas Florin Pays-Bas Yuan Portugal Escudo Portugal Florin Portugal Yuan 32

17 Restriction/Sélection Employé Matricule Nom dept 1050 Dupond Durand Duval 10 Emp_dept10 = % dept = 10 Employé En SQL, l opération est la suivante: SELECT * FROM Employé WHERE dept = 10; Emp_dept10 Matricule Nom dept 1050 Dupond Duval Projection (1/2) Employé Matricule Nom dept 1050 Dupond Durand Duval 10 Notation algébrique: & attributs (RELATION) EmployéMN = & {Matricule, Nom} Employé En SQL, l opération est la suivante: SELECT Matricule, Nom FROM Employé; EmployéMN Matricule Nom 1050 Dupond 832 Durand 900 Duval 34

18 Projection (2/2) Département dept NomDept Lieu 10 Finances Paris 20 Ventes Lyon DépartementN = & {Nom} Département En SQL: SELECT Nom FROM Département; DépartementN NomDept Finances Ventes 35 Jointure Employé Matricule Nom dept 1050 Dupond Durand Duval 10 Emp_dept = Employé Département Département dept NomDept Lieu 10 Finances Paris 20 Ventes Lyon Emp_dept Matricule Nom dept NomDept Lieu 1050 Dupond 10 Finances Paris 832 Durand 20 Ventes Lyon 900 Duval 10 Finances Paris 36

19 Division Le résultat de la division d une relation P(A1, Ai,Ai+1,,An) par une relation R(Ai+1,,An) est une relation S(A1, Ai) définie par :! le schéma de S constitué de tous les attributs de P qui n appartiennent pas a R, soit A1, Ai ;! tous les tuples s j de S tels que quel que soit le tuple r i de R le tuple (s j, r i ) est un tuple de P (c est-à-dire P ' S $ R ). Répond au type de question suivante : quels sont les «A» qui sont associés à tous les «C»? 37 Division certifications PILOTE APPAREIL Sierra 737 Sierra 757 Sierra 747 Delta 320 Delta 757 Alpha 737 Alpha 757 Alpha 747 Alpha 320 India 737 avions APPAREIL 320 certificationsa = certifications avions certificationsa PILOTE Delta Alpha 38

20 Division (2) certifications PILOTE APPAREIL Sierra 737 Sierra 757 Sierra 747 Delta 320 Delta 757 Alpha 737 Alpha 757 Alpha 747 Alpha 320 India 737 avions APPAREIL certificationsa = certifications avions certificationsa PILOTE Sierra Alpha 39 Jointure, restriction et projection équipement VOL APPAREIL 890 D9S D9S certification PILOTE APPAREIL Sierra 757 Sierra D9S Bravo 310 Hotel D9S Hotel 310 optionsvp = % VOL = 890 (& {VOL, PILOTE} (equipement certification)) Select VOL, PILOTE from equipement E, certification C where E.appareil = C.appareil and VOL = 890 optionsvp VOL PILOTE 890 Sierra 890 Hotel 890 Bravo 40

21 Les Arbres Algébriques Nous venons de voir comment décrire une requête au moyen des opérateurs de l'algèbre relationnelle. Il existe une description graphique plus lisible : l'arbre algébrique. Un arbre algébrique est un arbre dont : - les feuilles sont les relations de base ; - les nœuds sont les opérateurs ; - la racine est le résultat ; - les liens représentent les flux de données. 41 Les Arbres Algébriques Des nœuds différents représentent les cinq principaux opérateurs relationnels : l'union, la différence, la restriction, la projection et la jointure. restriction union # jointure différence - projection 42

22 2 : Le langage SQL 43 Définition Structured Query Language (SQL) : Ensemble de commandes utilisées par les utilisateurs et les programmes pour définir, rechercher ou modifier des données dans une base de données relationnelle. C est le langage standard des SGBDR. 44

23 Définition SQL se divise en plusieurs parties :! Langage d interrogation (ordre SELECT)! Langage de manipulation de données (ordres UPDATE, INSERT, DELETE)! Langage de définition de données (ordre CREATE, ALTER, DROP)! Langage de contrôle de l accès aux données (ordres GRANT, REVOKE) 45 Les types de données de SQL 1. Type Caractère : CHAR permet de stocker une chaîne de caractères de longueur fixe. CHAR [(longueur)] Par défaut longueur est égale à 1, maximale: Type Caractère : VARCHAR2 permet de stocker une chaîne de caractères de longueur variable. VARCHAR2(longueur_max) Longueur maximale: 4000 caractères 46

24 3. Type numérique : NUMBER Les types de données de SQL permet de représenter les entiers, les nombres décimaux et les nombres en virgule flottante. NUMBER [ (précision [, échelle] )] précision : nombre de chiffres significatifs échelle : nombre de chiffres à droite de la marque décimale La valeur est de type NUMBER (8, 2). 4. Type date : DATE Le format standard est 25-OCT (ou : 25/10/03, 25 oct 2003,. ) 47 Syntaxe d une requête de sélection La commande SELECT permet d effectuer les opérations suivantes : Projection, Restriction, Jointure, Syntaxe générale : SELECT FROM WHERE GROUP BY HAVING ORDER BY optionnelles L'ordre des clauses est imposé 48

25 Recherche de données Projection Syntaxe : SELECT [DISTINCT] {*, attribut, } FROM table ; «*» signifie que toutes les colonnes de la table sont sélectionnées. DISTINCT permet de supprimer les duplications. 49 Recherche de données Exemple : Soit la base de données de gestion des réservations de places de spectacles pour un théâtre: Spectacle (NumSpec, NomSpec, DatDebSpec, DatFinSpec) Représentation (NumRep, NumSpec, DatRep, HeureRep) Place (NumRep, NumPlace, Prix) Réservation (NumRes, NumRep, NumPlace, NomDem, TelDem) SELECT DISTINCT NomSpec FROM Spectacle ; Cette requête permet d obtenir le nom de tous les spectacles figurant dans la base de données. 50

26 Recherche de données Restriction Syntaxe : SELECT * FROM table WHERE condition ; Exemple: SELECT DISTINCT NomSpec FROM Spectacle WHERE DatDebSpec = 02-oct-2003 ; 51 Prédicats de sélection! prédicat de comparaison à l aide des opérateurs : <, >, <=, >=, =,!= ou <>.! prédicat d intervalle BETWEEN AND : expr BETWEEN expr1 AND expr2 teste si la valeur d une expression est comprise entre deux valeurs. (Ex. : Prix BETWEEN 100 AND 200)! une comparaison de chaînes de caractères LIKE : expr LIKE chaîne, où chaîne peut contenir le caractère % qui remplace une chaîne de caractères de longueur quelconque ou le caractère _ qui remplace un seul caractère. (Ex. : NomSpec LIKE Rev% )! prédicat de test IS [NOT] NULL vérifie si une valeur est inconnue. (Ex. : TelDem IS NOT NULL ) 52

27 Prédicats de sélection! prédicat d appartenance IN : expr IN (exp1, exp2, ) vrai si la valeur de expr est égale à l une des celles de exp1, exp2,. (Ex. : NumRep IN (1, 3, 13) )! prédicat EXISTS retourne une valeur vraie s'il existe au moins une ligne satisfaisant les conditions de la sous-interrogation! prédicat ANY ou ALL doit être précédé par un opérateur de comparaison et retourne une valeur vraie en fonction de l opérateur de comparaison utilisé et des tuples résultant de la sous-requête exprimée Les prédicats peuvent être composés de plusieurs conditions grâce aux opérateurs logiques : NOT, AND, OR. 53 Prédicats de sélection! Exemples : Toutes les places qui coûtent moins de 100 francs pour la représentation N 7: SELECT * FROM Place WHERE Prix <= 100 AND NumRep = 7; Toutes les représentations du spectacle N 13 entre le 15 septembre 1999 et le 15 janvier 2000 ou entre le 15 septembre 2000 et le 15 janvier 2001: SELECT * FROM Représentation WHERE DatRep BETWEEN 15-SEP-1999 AND 15-JAN-2000 OR DatRep BETWEEN 15-SEP-2000 AND 15-JAN-2001 ; 54

28 Jointure Jointure: Une jointure permet de sélectionner des données de plusieurs tables.! Syntaxe : SELECT [table1.]attribut [, table2.attribut, ] FROM table1, table2 [, table3, ] WHERE conditions ; Il est nécessaire de préciser le nom de la table dans laquelle on sélectionne un attribut si le même attribut est présent dans d autres tables participant à cette jointure. 55 Jointure! Exemple : Toutes les représentations du spectacle Révisor entre le 15 septembre 1999 et le 15 janvier 2000: SELECT DatRep, HeurRep FROM Représentation, Spectacle WHERE DatRep BETWEEN (15-SEP-99( AND (15-JAN-2000( AND NomSpec = (Révisor( AND Spectacle.NumSpec = Représentation.NumSpec ;! Remarque : on peut remplacer les noms des tables par les alias plus courts : SELECT DatRep, HeurRep FROM Représentation R, Spectacle S WHERE DatRep BETWEEN (15-SEP-99( AND (15-JAN-2000( AND NomSpec = (Révisor( AND S.NumSpec = R.NumSpec ; 56

29 Tri des données Pour trier/ordonner les données résultant d une requête on utilise la clause ORDER BY.! Syntaxe : SELECT [DISTINCT] {*, attribut, } FROM table [ WHERE conditions ] [ ORDER BY { colonne, expr} [ASC DESC] ]; où :! ORDER BY précise que le résultat sera trié! ASC ordre croissant (ordre par défaut)! DESC ordre décroissant 57 Tri des données! Exemple : La date et l heure de toutes les représentations du spectacle Révisor qui sont programmées entre le 15 septembre 1999 et le 15 janvier 2000 : SELECT DatRep, HeureRep FROM Représentation, Spectacle WHERE DatRep BETWEEN 15-SEP-99 AND 15-JAN-2000 AND NomSpec = Révisor AND Spectacle.NumSpec = Représentation.NumSpec ORDER BY DatRep ; 58

30 Groupement des données Les fonctions d agrégats sont :! AVG(expression) : moyenne des valeurs d une colonne! SUM(expression) : somme des valeurs d une colonne! MIN(expression) : la plus petite des valeurs d une colonne! MAX(expression) : la plus grande des valeurs d une colonne! COUNT(expression) : compte le nombre de valeurs! Exemple : La moyenne des prix des places de toutes les représentations SELECT AVG(Prix) FROM Place ; 59 Groupement des données! Définition : On appelle groupe un ensemble de lignes, résultat d une requête, qui ont une valeur commune dans une ou plusieurs colonnes. La clause GROUP BY permet de diviser les données d une table en plusieurs groupes.! Syntaxe : SELECT attribut, fonction_d agrégat(attribut) FROM table [, table ] [ WHERE conditions ] [ GROUP BY expr [, expr ] ] [ ORDER BY attribut ]; L utilisation de la clause WHERE permet d exclure certaines lignes du résultat avant de les diviser en groupes. 60

31 Groupement des données! Exemple : La moyenne des prix des places pour chaque représentation : SELECT AVG(Prix), NumRep FROM Place GROUP BY NumRep; 61 Groupement des données Pour spécifier quels groupes doivent être sélectionnés dans le résultat on utilise la clause HAVING.! Syntaxe : SELECT attribut, fonction_d agrégat(attribut) FROM table [, table ] [ WHERE conditions ] [ GROUP BY expr [, expr ] ] [ HAVING condition_de_groupe ] [ ORDER BY attribut ]; 62

32 Pour restreindre les groupes : Groupement des données SQL> SELECT AVG(Prix), NumRep 2 FROM Place 3 WHERE AVG(Prix) < GROUP BY NumRep ; WHERE AVG(Prix) < 200 * ERREUR à la ligne 3: ORA-00934: group function is not allowed here La requête précédente peut être réécrite de la manière suivante : SELECT AVG(Prix), NumRep FROM Place GROUP BY NumRep HAVING AVG(Prix) < 200; 63 Les sous-requêtes L expression d une clause WHERE peut prendre la forme :! Exemple : WHERE attribut opérateur (SELECT ) ; Rechercher toutes les personnes ayant réservé une place pour la dernière représentation de l année Pour cela il est nécessaire de connaître la date de la dernière représentation, ce qui peut être exprimé par la requête suivante : SELECT MAX(DatRep) FROM Représentation WHERE DatRep <= ; 64

33 Les sous-requêtes Voici la requête complète qui utilise la requête précédente comme une sous-requête : SELECT NomDem FROM Réservation Rs, Représentation Rp WHERE Rp.NumRep = Rs.NumRep AND Rp.DatRep = ( SELECT MAX(DatRep) FROM Représentation WHERE DatRep<= ); Il existe plusieurs types de sous-requête :! Sous-requête mono-ligne! Sous-requête multi-ligne! Sous-requête multi-colonne 65 Les sous-requêtes Une sous-requête mono-ligne doit être utilisé avec les opérateurs de comparaison tels que =, >, >=, <, <=, <>.! Exemple : l exemple précédent est une requête mono-ligne. Une sous-requête multi-ligne doit être utilisée avec les opérateurs pouvant traiter plusieurs lignes : IN, ALL, ANY :! Opérateur IN : WHERE attribut IN (liste de valeurs)! Opérateur ALL : WHERE attribut opér_compar ALL (liste de valeurs)! Opérateur ANY : WHERE attribut opér_compar ANY (liste de valeurs) 66

34 Les sous-requêtes! Exemple : Les personnes ayant réservé le plus de places : SELECT NomDem FROM Réservation GROUP BY NomDem, TelDem HAVING COUNT (NomDem) = ( SELECT MAX(COUNT(NomDem)) FROM Réservation GROUP BY NomDem, TelDem ); 67 Les sous-requêtes Une sous-requête multi-colonnes doit utiliser l opérateur IN permettant de comparer les lignes colonne par colonne. Exemple : Toutes les personnes ayant réservé des places, à la fois pour la représentation N 1 et pour la représentation N 2. SELECT DISTINCT NomDem, TelDem FROM Réservation WHERE NumRep = 1 AND (NomDem, TelDem) IN ( SELECT NomDem, TelDem FROM Réservation WHERE NumRep = 2 ) ; 68

35 Les opérateurs UNION, INTERSECT, MINUS Pour exprimer les opérateurs ensemblistes de l algèbre relationnelle tels que : UNION, INTERSECTION et DIFFERENCE le langage SQL offre les opérateurs UNION, INTERSECT et MINUS.! Syntaxe : SELECT attribut, FROM table, [ WHERE condition ] opérateur SELECT attribut, FROM table, [ WHERE condition ] 69 Les opérateurs UNION, INTERSECT, MINUS! Exemples : Toutes les personnes ayant réservé des places à la fois pour la représentation N 1 et la représentation N 2 peut être exprimée de la façon suivante : SELECT DISTINCT NomDem, TelDem FROM Réservation WHERE NumRep = 1 INTERSECT SELECT DISTINCT NomDem, TelDem FROM Réservation WHERE NumRep = 2 ; 70

36 Manipulation des données Le langage de manipulation de données permet de modifier le contenu des objets de la base. L unité de manipulation est une ligne. 4 commandes SQL permettent la modification des données : UPDATE : mise à jour de lignes INSERT : ajout de lignes DELETE : suppression des lignes sélectionnées TRUNCATE : suppression de toutes les lignes d une table 71 Modification des données - UPDATE Permet de modifier les valeurs d une ou plusieurs colonnes, dans une ou plusieurs lignes existantes d une table.! Syntaxe : UPDATE table SET attribut1 = expr1 [, attribut2 = expr2] [ WHERE condition] ;! Exemple : UPDATE Place SET Prix = Prix WHERE NumPlace <= 25; 72

37 Permet d ajouter une ligne dans une table en spécifiant les valeurs à insérer.! Syntaxe :! Exemple : Insertion de lignes - INSERT INSERT INTO table [(attribut1 [, attribut2 ])] VALUES (valeur1 [, valeur2 ]) ; INSERT INTO Réservation (NumRes, NumRep, NumPlace, NomDem) VALUES (23, 1, 126, (Smith() ; Il est possible d insérer dans une table des lignes provenant d une sous-requête : INSERT INTO table [(attribut1 [, attribut2 ])] SELECT ; 73 Suppression de lignes - DELETE Permet de supprimer certaines lignes d une table.! Syntaxe : DELETE FROM table [ WHERE condition ]! Exemple : Supprimer toutes les réservation du demandeur Smith. DELETE FROM Réservation WHERE NomDem = (Smith( ; 74

38 Suppression de lignes - TRUNCATE Permet de supprimer toutes les lignes d une table.! Syntaxe : TRUNCATE TABLE table [ DROP REUSE STORAGE ] où les options DROP STORAGE et REUSE STORAGE permettent de gérer l espace mémoire : DROP STORAGE après la suppression les blocs mémoire libérés sont réaffectés à la base REUSE STORAGE conserve l espace mémoire alloué à la table 75 Les Droits des Utilisateurs Un utilisateur est défini par :! un nom d utilisateur! un mot de passe! un ensemble de privilège! un profil Un privilège est le droit attribué à un utilisateur d exécuter certains ordres SQL. Exemple : CREATE SESSION, CREATE TABLE Un utilisateur possède un certain nombre d objets : SELECT OBJECT_NAME, OBJECT_TYPE, CREATED FROM user_objects; 76

39 Les Droits des Utilisateurs Un utilisateur possède les droits de modifications et de suppression de ses propres objets. Un utilisateur ne peut accéder aux objets d un autre utilisateur si le propriétaire de ces objets ne lui a pas donné les droits correspondants. SQL> SELECT * FROM scott.dept; SELECT * FROM scott.dept * ERREUR à la ligne 1: ORA-01031: insufficient privileges 77 Attribution des privilèges GRANT privilège_objet ON objet TO utilisateur [WITH GRANT OPTION] ; 78

40 Attribution des privilèges! Exemple : SQL> connect scott/tiger@oracle8 Connecté. SQL> GRANT select, insert 2 ON dept 3 TO usera; Autorisation de privilèges (GRANT) acceptée. SQL> connect usera@oracle8; Entrez mot de passe: ******* Connecté. SQL> select * from scott.dept; DEPTNO DNAME LOC ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 79 Suppression des privilèges REVOKE privilège_objet ON objet FROM utilisateur; 80

41 Gestion des transactions Une transaction est une suite de commandes SQL qui doivent être effectuées correctement et entièrement ou pas du tout. A tout moment l utilisateur a la possibilité soit de valider les modifications soit de les annuler.! Validation explicite d une transaction : la commande COMMIT! Validation implicite d une transaction : " A l exécution de l une des commandes du langage de définition de données : CREATE, ALTER, DROP, TRUNCATE, RENAME " A l arrêt normal d une session (EXIT) 81 Gestion des transactions! Annulation explicite d une transaction : la commande ROLLBACK! Annulation implicite d une transaction : " A l arrêt anormal d un session " Dans la situation d inter-blocage 82

42 Les points de reprise Un utilisateur peut définir des points de reprise dans une transaction pour permettre les rollback d une partie de la transaction. SQL> UPDATE SQL> SAVEPONT point1 ; Savepoint created. SQL> INSERT SQL> SAVEPOINT point2 ; Savepoint created. SQL> ROLLBACK TO point2 ; Rollback complete. 83 Création d une table CREATE TABLE! Syntaxe : Création et gestion des tables CREATE TABLE table (colonne type [DEFAULT expr] [,colonne type [DEFAULT expr])] ) ; Où DEFAULT expr : la valeur par défaut de l attribut.! Exemple : CREATE TABLE Spectacle ( NumSpec NUMBER, NomSpec VARCHAR2(20), DatDebSpec DATE, DatFinSpec DATE DEFAULT ( () ; 84

43 Création d une table avec insertion de données: Se fait par l utilisation d une sous-requête! Syntaxe : Création et gestion des tables CREATE TABLE table (attribut [, attribut ]) AS sous-requête ;! Exemple : CREATE TABLE Stat ( Nom, NbRep) AS SELECT NomDem, COUNT(NomDem) FROM Reservation GROUP BY NomDem, TelDem; 85 Création et gestion des tables Modification d une table ALTER TABLE Ou ALTER TABLE table ADD ( attribut type [DEFAULT expr ] [, attribut type ] ) ; ALTER TABLE table MODIFY ( attribut type [DEFAULT expr ] [, attribut type ] ) ;! Exemple : ALTER TABLE Stat MODIFY ( NombreRep NUMBER DEFAULT 0 ) ; 86

44 Création et gestion des tables Suppression d une table DROP TABLE! Syntaxe : DROP TABLE table ; Renommer une table RENAME! Syntaxe : RENAME table1 TO table2; 87 Création et gestion des vues Vue : table virtuelle dont le schéma et le contenu sont dérivés de la base réelle par un ensemble de requêtes. Utilisées pour :! Restreindre les accès aux données! Offrir plus de commodité aux utilisateurs en ne leur présentant que le sous ensemble des données qu ils ont à manipuler Propriétés :! Virtuelle - elle n est pas stockée dans la base de données - son schéma est catalogué (avec sa définition)! Dynamique - elle est «re-calculée» chaque fois que l on s en sert 88

45 Création et gestion des vues! Syntaxe : CREATE [ OR REPLACE ] [ FORCE NOFORCE ] VIEW vue (attribut [, attribut ] ) AS sous-requête [ WITH CHECK OPTION ] [ WITH READ ONLY ] ;! OR REPLACE recrée la vue si elle existe déjà! WITH CHECK OPTION précise que seules les lignes accessibles dans la vue peuvent être insérées ou modifiées.! WITH READ ONLY précise qu aucune modification (INSERT, UPDATE, ) ne peut être faite sur les lignes de la vue. 89 Création et gestion des vues! Exemple : SQL> CREATE VIEW Zone1 2 (NumRep, NumPlace, Prix ) 3 AS SELECT * 4 FROM Place 5 WHERE Prix < WITH CHECK OPTION ; Vue créée. SQL> INSERT INTO Zone1 2 VALUES (4, 300, 150) ; INSERT INTO Zone1 * ERREUR à la ligne 1: ORA-01402: view WITH CHECK OPTION where-clause violation Remarque : l interrogation des vues est identique à l interrogation des tables. 90

46 Création et gestion des vues Suppression d une vues DROP VIEW! Syntaxe : DROP VIEW vue ; 91 Dictionnaires de données Tables dans lesquelles sont stockées les descriptions des objets de la base! Il est tenu à jour automatiquement par le SGBD! Ces tables peuvent être consultées au moyen du langage SQL 92

47 Dictionnaires de données! DICTIONARY (DICT) : vues du dictionnaire! USER_TABLES : tables et vues crées par l'utilisateur! USER_CATALOG (CAT) : tables et vues sur lesquels l'utilisateur a des droits, à l'exclusion des tables et vues du dictionnaire des données! USER_TAB_COLUMNS (COLS) : colonnes des tables ou vues créées par l'utilisateur! USER_INDEXES (IND) : index créés par l'utilisateur ou indexant des tables de l'utilisateur! USER_TAB_PRIVS : objets sur lesquels l'utilisateur est donneur ou receveur de droits Intégrité des données 94

48 Contrainte d Intégrité! Définition : Une contrainte d intégrité est une assertion qui doit être vérifiée par des données à des instants déterminés.! Définition : Une base de données cohérente est une base de données dont l ensemble des contraintes d intégrité est respecté par les données de la base. Il existe deux types de contraintes d intégrité :! Contraintes structurelles! Contraintes non structurelles 95 Contraintes Structurelles Permettent d exprimer certaines propriétés des relations et des domaines des attributs. On distingue les contraintes structurelles suivantes :! Unicité de clé : Par exemple, la table Place possède une clé multiple (NumRep, NumPlace)! Contrainte référentielle : Par exemple, toute valeur de l attribut NumRep dans la table Place doit être présente comme valeur de l attribut NumRep de la table Représentation, dont il est la clé. 96

49 Contraintes Structurelles! Contrainte de domaine : Par exemple, le numéro de place NumPlace dans la table Place doit être compris entre 1 et 340.! Contrainte de non nullité : Par exemple la valeur de NumRep dans la table Représentation ne pourra pas être nulle. 97 Contraintes non Structurelles Permettent d exprimer les règles d évolution des données suite aux mises à jour. Parmi les contraintes non structurelles les contraintes suivantes sont les plus utilisées :! Les dépendances fonctionnelles. Par exemple, dans la table Place le numéro de représentation et le numéro de place déterminent le prix de la place : NumRep, NumPlace ) Prix! Les dépendances multivaluées. 98

50 Expression des contraintes en SQL Le langage SQL permet la création de contraintes lors de la création des tables par la commande CREATE TABLE.! Syntaxe : CREATE TABLE table (attribut type [DEFAULT expr][contrainte_sur_attribut], [ contrainte_sur_table ]); Où la contrainte_sur_attribut est une des contraintes suivantes :! NOT NULL! UNIQUE! PRIMARY KEY! REFERENCES table (attribut)! CHECK condition 99 Expression des contraintes en SQL Et la contrainte_sur_table est une des contraintes suivantes :! UNIQUE (attribut, )! PRIMARY KEY (attribut, )! FOREIGN KEY (attribut, )! REFERENCES table (attribut)! CHECK condition 100

51 Expression des contraintes en SQL! Exemples : SQL> CREATE table Spectacle 2 (NumSpec NUMBER(4), 3 NomSpec VARCHAR2(20), 4 DatDebSpec DATE, 5 DatFinSpec DATE, 6 CONSTRAINT NumSpec_pk PRIMARY KEY (NumSpec), 7 CONSTRAINT NomSpec_u UNIQUE (NomSpec)); Table créée. 101 Expression des contraintes en SQL SQL> INSERT INTO Spectacle(NomSpec, DatDebSpec,DatFinSpec) 2 VALUES ('aaa', ' ', ' '); INSERT INTO Spectacle(NomSpec, DatDebSpec, DatFinSpec) * ERREUR à la ligne 1: ORA-01400: cannot insert NULL into ("USER"."SPECTACLE"."NUMSPEC") SQL> INSERT INTO Spectacle 2 VALUES (100, 'aaa', ' ', ' '); 1 ligne créée. 102

52 Expression des contraintes en SQL SQL> INSERT INTO Spectacle 2 VALUES (200, 'aaa', ' ', ' '); INSERT INTO Spectacle * ERREUR à la ligne 1: ORA-00001: unique constraint (USER.NOMSPEC_U) violated 103 Expression des contraintes en SQL SQL> CREATE TABLE Représentation 2 (NumRep NUMBER(4), 3 NumSpec NUMBER(4), 4 DatRep DATE, 5 HeureRep VARCHAR2(10), 6 CONSTRAINT NumRep_pk PRIMARY KEY (NumRep), 7 CONSTRAINT NumSpec_fk FOREIGN KEY (NumSpec) 8 REFERENCES Spectacle (NumSpec)); Table créée. 104

53 Expression des contraintes en SQL SQL> INSERT INTO Représentation 2 VALUES (13, 300, ' ', '20-00') ; INSERT INTO Représentation * ERREUR à la ligne 1: ORA-02291: integrity constraint (USER.NUMSPEC_FK) violated - parent key not found 105 Modification et ajout des contraintes ALTER TABLE table ADD [ CONSTRAINT contrainte ] type ( attribut ); ALTER TABLE table DROP CONSTRAINT contrainte [CASCADE]; ALTER TABLE table DISABLE CONSTRAINT contrainte [CASCADE] ; ALTER TABLE table ENABLE CONSTRAINT contrainte ; 106

54 Ajout et suppression des contraintes SQL> alter table place 2 add constraint c_prix check (prix >100); ICI Instruction traitée SQL> insert into place 2 values (1, 2, 60); ORA-02290: violation de contraintes (USER.C_PRIX) de vérification SQL> alter table place 2 drop constraint c_prix ; Instruction traitée 107 Ajout et suppression des contraintes SQL> insert into place 2 values (1, 2, 60); 1 ligne traitée SQL> alter table place 2 add constraint c_prix check (prix >100); add constraint c_prix check (prix >100) * ORA-02293: impossible ajouter contrainte de vérification [USER.C_PRIX] - valeurs non conf. trouvées 108

55 Inconsistances Exemple : Soit deux données A et B devant rester égales. Transaction T1 Transaction T2 A = A*2 A = A+1 B = B*2 B = B+1 temps A la fin des deux transactions la contrainte A = B n est plus vérifiée. 109 Inconsistances Dans le deuxième exemple une perte de mise à jour survient lorsqu une transaction T1 exécute une mise à jour calculée à partir d une valeur périmée de données : Transaction T1 Transaction T2 Lecture A ) a Lecture A ) b b = b + 1 a = a * 2 Ecriture b ) A Ecriture b ) A temps 110

56 Inconsistances Pour éviter ces inconsistances le SGBD doit contrôler l accès aux données. La technique la plus utilisée pour éviter les conflits d accès aux données est la technique de prévention des conflits basée sur le verrouillage. 111 Mécanismes de verrouillage Généralités Le SGBD ORACLE offre deux types de verrouillages :! Verrouillage au niveau de la ligne : Lorsqu une transaction modifie une table, seules les lignes à modifier sont verrouillées.! Verrouillage au niveau de la table : Lorsqu une transaction modifie une table, toutes les lignes de la table sont verrouillées. 112

57 Mécanismes de verrouillage Le verrouillage peut être :! Implicite : géré automatiquement par le SGBD! Explicite : géré explicitement dans la transaction 113 Mécanismes de verrouillage Les verrous sur les données protègent les données des utilisateurs. Il existe plusieurs types de verrous de données :! Verrou exclusif sur la table (X) : Posé explicitement par la commande : LOCK TABLE table IN EXCLUSIVE MODE Ce verrou réserve toutes les lignes de la table à condition qu aucun verrou ne soit déjà posé sur la table ou sur une des lignes. Seul l utilisateur courant peut modifier le contenu de la table. Les autres transactions peuvent consulter les données de la table mais ne peuvent ni les modifier ni poser de verrous sur la table ou sur les lignes. 114

58 Mécanismes de verrouillage! Verrou partagé sur la table (S) : Posé explicitement par la commande : LOCK TABLE table IN SHARE MODE L utilisateur qui a posé le verrou peut consulter et modifier la table si aucun autre verrou n a été posé. Les autres transactions peuvent consulter les données et poser différents verrous partagés sur la table (S, RS). Si plusieurs transactions verrouillent une table en mode S, aucune d entre elles ne peut effectuer une mise à jour sur les données de la table. 115 Mécanismes de verrouillage! Verrou exclusif des lignes (RX) : Peut être posé explicitement par la commande LOCK TABLE table IN ROW EXCLUSIVE MODE ou implicitement par Oracle lors d un UPDATE, INSERT ou DELETE. 116

59 Mécanismes de verrouillage! Verrou partagé des lignes (RS) : Peut être posé explicitement par la commande LOCK TABLE table IN ROW SHARE MODE ou implicitement par Oracle lors d un SELECT FOR UPDATE Il signale l intention de mettre à jour un sous-ensemble de lignes de la table. Remarque : La vue V$LOCK du dictionnaire de données renseigne sur les verrous actifs de la base. 117 Exemple de verrouillage implicite Mécanismes de verrouillage UPDATE Représentation SET DatRep = WHERE NumSpec =13 ; > 2 ligne(s) mise(s) à jour (verrouille les lignes du spectacle N 13) commit ; SELECT NumRep, DatRep FROM Représentation ; NumRep DatRep 13 01/02/99 SELECT NumRep, DatRep FROM Représentation ; NumRep DatRep 13 01/02/00 UPDATE Représentation SET DatRep = WHERE NumSpec = 13 ; (attente) > 2 ligne(s) mise(s) à jour commit ; 118

60 Mécanismes de verrouillage Les inter-blocages ( deadlock ) L inter-blocage se produit lorsqu un utilisateur attend une ressource prise par un autre utilisateur et que cet autre utilisateur attend une ressource prise par le premier. La situation est alors bloquée. Exemple : La transaction T1 modifie la date des spectacles numéro 13 et 17. La transaction T2 modifie l heure de ces spectacles de la manière suivante : 119 Mécanismes de verrouillage Les inter-blocages ( deadlock ) UPDATE Représentation SET DatRep = WHERE NumSpec =13 ; (verrouille les lignes du spectacle N 13) UPDATE Représentation SET DatRep = WHERE NumSpec =17 ; (attente) UPDATE Représentation SET HeurRep = WHERE NumSpec = 17 (verrouille les lignes du spectacle N 17) UPDATE Représentation SET HeurRep = WHERE NumSpec =13 ; (attente) 120

61 Mécanismes de verrouillage Résolution du problème par ORACLE : Annulation automatique par ROLLBACK implicite de la transaction la plus récente. Comment éviter les inter-blockages :! L inter-blocage ne serait pas survenu si les deux transactions cherchaient à accéder à la table dans le même ordre.! Il faut donc toujours accéder aux tables dans le même ordre.! Tout morceau de traitement identique doit être centralisé dans un sous-programme.! Il faut éviter les transactions trop longues PL/SQL 122

62 Environnement PL/SQL Application SQL SQL SQL SGBD SQL Application SQL IF... THEN SQL ELSE SQL END IF ; SQL Oracle PL/SQL 123 Environnement PL/SQL PL/SQL est un langage procédural qui permet! la déclaration des variables! les traitements : ordres SQL, boucles, gestion des curseurs! la gestion des erreurs 124

63 Bénéfices de PL/SQL! PL/SQL regroupe les requêtes SQL en un seul bloc qui est envoyé au serveur en un seul appel! PL/SQL améliore les performances (moins de communications à travers le réseau)! C est un langage portable : il peut fonctionner sur toute plate-forme supportant Oracle Server! PL/SQL peut aussi coopérer avec les différents outils de développement d application de Oracle Server (p.ex. Developer 2000)! Permet de créer des bibliothèques de code réutilisable 125 Environnement PL/SQL Blocks Anonymes Triggers d application Triggers de base de données DECLARE BEGIN EXCEPTION END; Procédures enregitrées Procédures d application Packages Développement de programmes MO-DU-LAIRE 126

64 Environnement PL/SQL! Blocs anonymes : utilisés dans SQL*PLUS, les triggers, les programmes précompilés! Procédure enregistrée : block nommé et enregistré dans le serveur Oracle et qui peut être invoqué par son nom! Procédure d application : block nommé et enregistré dans une application Developper 2000 ou dans une librairie partagée! Package : module PL/SQL qui regroupe un ensemble de procédures 127 Environnement PL/SQL! Fonctions : blocs PL/SQL nommés et stockés, qui peuvent recevoir des paramètres et qui peuvent être appelés comme les procédures mais qui renvoient un résultat! Trigger base de donnée : block associé à une table et déclenché automatiquement lors d une requête! Trigger d application : block PL/SQL associé à un événement d application 128

65 Caractéristiques de PL/SQL Tout bloc PL/SQL est composé de 3 sections DECLARE (optionel) variables, constantes, curseurs BEGIN (obligatoire) clauses SQL clauses PL/SQL EXCEPTION (optionel) Actions à réaliser quand une exception est levée ou quand une terminaison anormale a lieu END; (obligatoire) DECLARE BEGIN EXCEPTION END; 129 Les blocs PL/SQL DECLARE variable_v VARCHAR2(5) BEGIN SELECT colonne_c INTO variable_v FROM table_t ; EXCEPTION WHEN exception_e THEN... END; DECLARE BEGIN EXCEPTION END; 130

66 Les différents types de blocs Anonyme Procédure Fonction [DECLARE] BEGIN... [EXCEPTION]... END; PROCEDURE <nom> IS BEGIN... [EXCEPTION]... END; FUNCTION <nom> RETURN <type> IS BEGIN... RETURN <valeur> ; [EXCEPTION]... END; Commentaires : -- commentaires sur une ligne /* commentaires sur plusieurs lignes */ 131 Les Caractéristiques de PL/SQL! Gestion des variables variables locales variables d environnement extérieures à PL/SQL! Structures de contrôle traitements conditionnels traitements répétitifs! Utilisation des curseurs définition utilisation de curseurs explicites attributs des curseurs modification des valeurs d un curseur! Gestion des erreurs anomalies programme utilisateur erreurs Oracle erreurs prédéfinies 132

67 Les variables et constantes Utiliser les variables pour : # L enregistrement temporaire des données comme dans tout langage de programmation procédural # La manipulation de données enregistrées afin de réaliser des calculs et autres manipulations sans accéder à la base de données # La réutilisabilité : une fois déclarée, une variable peut être utilisée plusieurs fois dans une application # La facilité de maintenance : en utilisant %TYPE et %ROWTYPE (voir plus tard), on déclare des variables ayant le même type que des attributs de tables; si la définition de la table change, le type de la variable change de même. => réduction des coûts de maintenance 133 Les variables et constantes Syntaxe : <nom> [CONSTANT] <type> [NOT NULL] [ := DEFAULT <expression> ] ; Exemple : DECLARE dateemprunt_v DATE ; nodept _v NUMBER(2) NOT NULL := 10 ; lieu_v VARCHAR2(13) := Paris ; taux_c CONSTANT NUMBER := 20 ; Note : constantes et variables NOT NULL doivent être immédiatement affectées 134

68 Conventions # Déclarer au plus une variable par ligne # Les noms de variables doivent : commencer par une lettre être composé d au plus 30 caractères (lettres, nombres ou caractères spéciaux) # Deux variables peuvent avoir le même nom dès lors qu elles appartiennent à des blocs différents # Ne pas utiliser le noms de tables ni les noms d attributs # Utiliser les suffixes : _c pour les constantes _v pour les variables _g pour les variables globales 135 Types définis par l utilisateur # Syntaxe : TYPE <nom_type> IS RECORD ( <nomchamps> <type> [ [NOT NULL] [ := DEFAULT <expression> ],... ) ; # Exemple : SQL> DECLARE TYPE client_t IS RECORD ( numero NUMBER(4), nom CHAR(20), adresse CHAR(20) ) ; client1_v client_t ; BEGIN client1_v.numero := 2516 ; END ; / 136

69 L attribut %TYPE # A employer pour déclarer une variable en réutilisant : la définition d un attribut de table la définition d une autre variable déclarée précédemment # Exemple :... nomemploye_v employe.nomemp%type ; solde_v NUMBER(7, 2) ; soldeminimal_v solde_v%type := ; # Note : %ROWTYPE : idem que %TYPE mais pour définir une variable de type enregistrement dont les champs correspondent à tous les attributs d une table les contraintes NOT NULL de la définition des attributs de tables ne sont pas réutilisées avec %TYPE 137 Variables liées # Variables définies en dehors de blocs PL/SQL, dans l environnement (SQL*Plus, Developper 2000, programme externe, package) # Syntaxe : VARIABLE <nom> [CONSTANT] <type> [NOT NULL] [ := DEFAULT <expression> ] ; # Exemple : SQL> VARIABLE n NUMBER ;... SQL> PRINT n ; # Note : ces variables sont précédées de : dans PL/SQL 138

70 Structures de contrôle! Branchements conditionnels IF - THEN - END IF IF - THEN - ELSE - END IF IF - THEN - ELSIF - END IF! Boucles LOOP - END LOOP WHILE - END LOOP FOR - END LOOP! Note : la commande EXIT permet de sortir de tout type de boucles 139 Structures de contrôle branchement conditionnel Branchement conditionnel :! Syntaxe : IF condition THEN traitement; { ELSEIF condition THEN traitement; } [ ELSE traitement; ] END IF;! opérateurs utilisés dans les conditions : =, <, >,!=, <=, >=, IS NULL, IS NOT NULL, BETWEEN, LIKE, AND, OR, 140

71 Structure répétitive : LOOP Structures de contrôle - boucles LOOP! Syntaxe : LOOP [ << libellé>>] [commandes;] [ EXIT [libellé ] WHEN condition ] [commandes;] END LOOP [libellé];! Note : Sans commande EXIT, les boucles LOOP sont infinies 141 Structures de contrôle - boucles LOOP! Exemple : DECLARE fact NUMBER := 1; i NUMBER := 1; BEGIN LOOP fact := fact * i; i := i+1; EXIT WHEN i = 10; END LOOP; INSERT INTO resultat VALUES (('fact(9) = ', fact); END ; 142

72 Structures de contrôle - boucles WHILE Structure répétitive : WHILE! Syntaxe : [<< libellé>>] WHILE condition LOOP commandes; END LOOP [libellé]; 143 Structures de contrôle - boucles WHILE!!! Exemple : DECLARE fact NUMBER := 1; i NUMBER := 1; BEGIN WILE i <=9 LOOP fact := fact * i; i := i+1; END LOOP; INSERT INTO resultat VALUES (('fact(9) = ', fact); END ; 144

73 Structures de contrôle - boucles FOR Structure répétitive : FOR! Syntaxe : [<< libellé>>] FOR identificateur IN [REVERSE] exp1..exp2 LOOP commandes; END LOOP [libellé]; L'identificateur est déclaré implicitement 145 Structures de contrôle - boucles FOR!!!Exemple : DECLARE fact NUMBER := 1; BEGIN FOR i IN 1..9 LOOP fact := fact * i; END LOOP; INSERT INTO resultat VALUES (('fact(9) = ', fact); END ; 146

74 Structures de contrôle! Ne pas modifier le compteur d une boucle FOR! Les boucles peuvent être imbriquées! On peut nommer les boucles pour identifier explicitement laquelle de deux boucles imbriquées se terminent... <<boucleexterne>> LOOP... EXIT WHEN compteur_v = 10 ; <<boucleinterne>> LOOP EXIT boulceexterne WHEN compteur_v = 100 ; EXIT boulceexterne WHEN drapeau_v = TRUE ; END LOOP boucleinterne ; END LOOP boucleexterne ; Commandes SQL intégrées à PL/SQL SELECT : SELECT attribut, INTO liste de variables locales ou externes FROM table [WHERE condition] Une telle requête SQL doit ramener obligatoirement une ligne et une seule. Si ce n est pas le cas, les exceptions NO_DATA_FOUND ou TOO_MANY_ROWS sont levées. 148

75 Modifier des données dans PL/SQL! Trois commandes du langage de manipulation de données (LMD) de SQL permettent de modifier une base de données : INSERT UPDATE DELETE 149 Modifier des données dans PL/SQL (INSERT) BEGIN INSERT END ; INTO Employe (noemp, nomemp, job, nodept) VALUES (10, Oracle, PROGRAMMEUR, 10) ;! Note : on peut évidemment utiliser des variables au lieu de simples valeurs prédéfinies il peut être utile d utiliser des variables globales prédéfinies comme USER ou SYSDATE 150

76 Modifier des données dans PL/SQL (UPDATE) DECLARE majorationsalaire_v Employe.salaire%TYPE := 2000; BEGIN UPDATE Employe SET salaire = salaire + majorationsalaire_v WHERE job = PROGRAMMEUR ; END ;! Note : contrairement aux affectations PL/SQL, la clause update utilise le signe = comme opérateur d affectation si une variable a le même nom qu un nom d attribut de la table manipulée dans la clause WHERE, le serveur Oracle utilise en priorité l attribut de table 151 Modifier des données dans PL/SQL (DELETE) DECLARE nodept_v Employe.noDept%TYPE := 10 ; BEGIN DELETE FROM Employe WHERE nodept = nodept_v ; END ; 152

77 Contrôler les transactions dans PL/SQL! La première commande INSERT/UPDATE/DELETE d un block entame une nouvelle transaction! La fin du block termine la transaction! Pour terminer explicitement une transaction, utiliser les commandes SQL : COMMIT => valide les modifications faites depuis le début de la transaction en cours, et entame une nouvelle transaction ROLLBACK => annule toutes les modifications faites depuis le début de la transaction en cours, et entame une nouvelle transaction! Note : Une transaction doit être un ensemble homogène de manipulations de la base de données => il faut réfléchir à tous les endroits où il est légitime de mettre un COMMIT 153 Contrôler les transactions dans PL/SQL DECLARE nodept_v Employe.noDept%TYPE := 10 ; majorationsalaire_v Employe.salaire%TYPE := 2000; BEGIN DELETE FROM Employe WHERE nodept = nodept_v ; COMMIT ; UPDATE Employe SET salaire = salaire + majorationsalaire_v WHERE job = PROGRAMMEUR ; END ; 154

78 Déterminer le résultat d une requête SELECT dans PL/SQL! Nécessite l utilisation de curseurs les curseurs sont des zones de travail privées; ce sont des zones mémoire utilisées pour analyser et interpréter tout ordre SQL.! Il y a deux types de curseurs : les curseurs implicites le serveur Oracle utilise des curseurs implicites pour exécuter vos requêtes SQL les curseurs explicites sont des variables explicitement déclarées par le programmeur 155 Déterminer le résultat d une requête dans PL/SQL! Attributs des curseurs en utilisant les attributs de curseurs, vous pouvez tester le résultat de vos requêtes SQL SQL%ROWCOUNT nombre de tuples affectés par la dernière requête SQL (entier) SQL%FOUND booléen, vaut TRUE si la dernière requête SQL a affecté plus d un tuple SQL%NOTFOUND booléen, vaut TRUE si la dernière requête SQL n a affecté aucun tuple SQL%ISOPEN booléen indiquant si le curseur est ouvert ou fermé (par défaut,les curseurs implicites sont toujours fermés à la fin de la requête)! Note : à la place de SQL, utilisez le nom de votre curseur pour identifier l état d un curseur explicite 156

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage

Plus en détail

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD Plan Bases de Données L3 Info Céline Rouveirol 2010-2011 Bases de Données 1 / 77 Sources des transparents Bases de Données 2 / 77 Bases de SQL - M.P. Dorville/F. Goasdoué, LRI, Université Paris Sud - V.

Plus en détail

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Bases de données avancées

Bases de données avancées Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours Jean-Yves.Antoine@univ-tours.fr UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,

Plus en détail

Bases de Données. Plan

Bases de Données. Plan Université Mohammed V- Agdal Ecole Mohammadia d'ingénieurs Rabat Bases de Données Mr N.EL FADDOULI 2014-2015 Plan Généralités: Définition de Bases de Données Le modèle relationnel Algèbre relationnelle

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Bases de données et sites WEB Licence d informatique LI345

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet Anne.Doucet@lip6.fr http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Bases de Données Avancées PL/SQL

Bases de Données Avancées PL/SQL 1/170 Bases de Données Avancées Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

16H Cours / 18H TD / 20H TP

16H Cours / 18H TD / 20H TP INTRODUCTION AUX BASES DE DONNEES 16H Cours / 18H TD / 20H TP 1. INTRODUCTION Des Fichiers aux Bases de Données 2. SYSTEME DE GESTION DE BASE DE DONNEES 2.1. INTRODUCTION AUX SYSTEMES DE GESTION DE BASES

Plus en détail

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble. Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Introduction au Système de Gestion de Base de Données et aux Base de Données

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Gestion des transactions et accès concurrents dans les bases de données relationnelles Gestion des transactions et accès concurrents dans les bases de données relationnelles Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Fev.

Plus en détail

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub pierre-andre.sunier@he-arc.ch http://lgl.isnetne.ch/

Plus en détail

Gestion des utilisateurs et de leurs droits

Gestion des utilisateurs et de leurs droits Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE

Plus en détail

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry Cours 3 Développement d une application BD 1 Plan du cours Gestion de la sécurité des données Optimisation des schémas de bases via la dénormalisation Utilisation de vues Placement du code applicatif dans

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions

Plus en détail

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions Exemple accessible via une interface Web Une base de données consultable en ligne : Bases de données et systèmes de gestion de bases de données The Trans-atlantic slave trade database: http://www.slavevoyages.org/tast/index.faces

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Intégrité des données

Intégrité des données . Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

MySQL / SQL EXEMPLES

MySQL / SQL EXEMPLES MySQL_exemples_janv04_mpT EXEMPLES 1 MySQL / SQL EXEMPLES Typologie du langage Il est possible d'inclure des requêtes SQL dans un programme écrit dans un autre langage (en langage C par exemple), ainsi

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW Groupe : 322 Exploitation des Banques de données 420-PK6-SL (1-2-1) Étape : 3 Professeur Nom: Marcel Aubin Courriel : maubin@cegep-st-laurent.qc.ca

Plus en détail

//////////////////////////////////////////////////////////////////// Administration bases de données

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Partie 0 : Gestion des tablespace et des utilisateurs... 3 Sommaire Partie 0 : Gestion des tablespace et des utilisateurs... 3 1- Créer deux TableSpaces votre_nom-tbs et Votre_nom-TempTBS :... 3 2. Créer un utilisateur qui porte votre nom :... 3 3. Attribuer à

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Corrigés détaillés des exercices

Corrigés détaillés des exercices Corrigés détaillés des exercices Diagramme des tables objet La figure suivante vous aidera dans la compréhension des manipulations des objets de la base. Client_type Client num nom adresse {telephone_vry}

Plus en détail

Du 10 Fév. au 14 Mars 2014

Du 10 Fév. au 14 Mars 2014 Interconnexion des Sites - Design et Implémentation des Réseaux informatiques - Sécurité et Audit des systèmes - IT CATALOGUE DE FORMATION SIS 2014 1 FORMATION ORACLE 10G 11G 10 FEV 2014 DOUALA CAMEROUN

Plus en détail

Cours Bases de données

Cours Bases de données Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine antoine.cornuejols@agroparistech.fr Transparents Disponibles

Plus en détail

Optimisation SQL. Quelques règles de bases

Optimisation SQL. Quelques règles de bases Optimisation SQL Quelques règles de bases Optimisation des ordres SQL Page 2 1. QUELQUES RÈGLES DE BASE POUR DES ORDRES SQL OPTIMISÉS...3 1.1 INTRODUCTION...3 1.2 L OPTIMISEUR ORACLE...3 1.3 OPTIMISEUR

Plus en détail

Intégrité sémantique dans les bases de données relationnelles

Intégrité sémantique dans les bases de données relationnelles Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013

Plus en détail

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres. INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES Durée : 1h30 Date : 17/05/2006 Coordonnateurs : Amel Bouzeghoub et Bruno Defude Documents autorisés : ceux distribués en cours Avertissements

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Partie II Cours 3 (suite) : Sécurité de bases de données

Partie II Cours 3 (suite) : Sécurité de bases de données Partie II Cours 3 (suite) : Sécurité de bases de données ESIL Université de la méditerranée Odile.Papini@esil.univ-mrs.fr http://odile.papini.perso.esil.univmed.fr/sources/ssi.html Plan du cours 1 Introduction

Plus en détail

Le langage SQL (première partie) c Olivier Caron

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :

Plus en détail

Devoir Data WareHouse

Devoir Data WareHouse Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008 FICHE

Plus en détail

Présentation du module Base de données spatio-temporelles

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

TP3 : Creation de tables 1 seance

TP3 : Creation de tables 1 seance Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer

Plus en détail

LE LANGAGE SQL2 1. INTRODUCTION

LE LANGAGE SQL2 1. INTRODUCTION LE LANGAGE SQL2 1. INTRODUCTION Les serveurs de données relationnels présentent aujourd hui une interface externe sous forme d un langage de recherche et mise à jour, permettant de spécifier les ensembles

Plus en détail

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent

Plus en détail

Bases de données avancées Introduction

Bases de données avancées Introduction Bases de données avancées Introduction Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours BDA Plan Objectifs et contenu du cours Rappels BD relationnelles Bibliographie Cours BDA (UCP/M1)

Plus en détail

1 Position du problème

1 Position du problème Licence Science et Technologies - INF245 Examen session 1 - mai 2012 Durée : 2 heures Documents non autorisés Le barème est donné à titre indicatif 1 Position du problème Le Club Universitaire de Vélo

Plus en détail

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing Présentation d Oracle 10g Chapitre VII Présentation d ORACLE 10g 7.1 Nouvelles fonctionnalités 7.2 Architecture d Oracle 10g 7.3 Outils annexes 7.4 Conclusions 7.1 Nouvelles fonctionnalités Gestion des

Plus en détail

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN Département Informatique Laboratoires de bases de données Laboratoire n 6 Programmation SQL par Danièle BAYERS et Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il

Plus en détail

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

Quelques aspects du Relationnel-Objet du SGBD Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle Département informatique de l IUT (de l université) de Bordeaux Cours de Bases de Données : présentation partielle d un SGBD RO 12 août 2015 Olivier Guibert Quelques aspects du Relationnel-Objet du SGBD

Plus en détail

Gestion de base de données

Gestion de base de données Université Libre de Bruxelles Faculté de Philosophie et Lettres Département des Sciences de l Information et de la Communication Gestion de base de données Projet : Take Off ASBL Cours de M. A. Clève STIC-B-505

Plus en détail

Procédures Stockées WAVESOFT... 12 ws_sp_getidtable... 12. Exemple :... 12. ws_sp_getnextsouche... 12. Exemple :... 12

Procédures Stockées WAVESOFT... 12 ws_sp_getidtable... 12. Exemple :... 12. ws_sp_getnextsouche... 12. Exemple :... 12 Table des matières Les Triggers... 2 Syntaxe... 2 Explications... 2 Les évènements déclencheurs des triggers... 3 Les modes de comportements des triggers... 4 Les pseudo tables... 5 Exemple... 6 Les procédures

Plus en détail

Support de cours «SGBD»

Support de cours «SGBD» Direction Générale Institut Supérieur des Des Etudes Technologiques Etudes ******** DGET ******* Technologiques du Kef Support de cours «SGBD» Réalisé par : BOUKCHIM Mosaab (AT-Iset de Kef) HOSNI Anis

Plus en détail

Bases de données. Mihaela Mathieu

Bases de données. Mihaela Mathieu Bases de données 2004-2005 Mihaela Mathieu mathieu@emse.fr Objectifs : comprendre et maîtriser les fonctions d un SGBD relationnel (Oracle et MySQL) connaître le langage SQL savoir développer une application

Plus en détail

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007 Bases de Données Réparties Concepts et Techniques Matthieu Exbrayat ULP Strasbourg - Décembre 2007 1 Définition Une base de données répartie (distribuée) est une base de données logique dont les données

Plus en détail

Oracle Le langage procédural PL/SQL

Oracle Le langage procédural PL/SQL Oracle Le langage procédural PL/SQL Denis Roegel roegel@loria.fr IUT Nancy 2 1998/1999 Sommaire 1 Introduction 3 2 Création de packages 3 2.1 Procédures groupées.........................................

Plus en détail

FileMaker 13. Guide de référence SQL

FileMaker 13. Guide de référence SQL FileMaker 13 Guide de référence SQL 2013 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker et Bento sont des marques commerciales de

Plus en détail

Rappel sur les bases de données

Rappel sur les bases de données Rappel sur les bases de données 1) Généralités 1.1 Base de données et système de gestion de base de donnés: définitions Une base de données est un ensemble de données stockées de manière structurée permettant

Plus en détail

INTRODUCTION : Données structurées et accès simplifié

INTRODUCTION : Données structurées et accès simplifié INTRODUCTION : Données structurées et accès simplifié À l'origine de l'informatique, le stockage d'information se faisait sur cartes perforées. Ces supports pauvres ne permettaient pas de définir la structuration

Plus en détail

Pour les débutants. langage de définition des données

Pour les débutants. langage de définition des données Pour les débutants SQL : langage de définition des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions 1/46 2/46 Pourquoi? Anne-Cécile Caron Master MAGE - SGBD 1er trimestre 2014-2015 Le concept de transaction va permettre de définir des processus garantissant que l état de la base est toujours cohérent

Plus en détail

Comprendre les bases de données

Comprendre les bases de données Comprendre les bases de données Auteur : Hervé LEFEBVRE 9 mars 2002 Version compilée des articles parus sur , ce document reprends l introduction à Postgresql

Plus en détail

CHAPITRE 1 ARCHITECTURE

CHAPITRE 1 ARCHITECTURE 07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA

Plus en détail

Les bases de données Page 1 / 8

Les bases de données Page 1 / 8 Les bases de données Page 1 / 8 Sommaire 1 Définitions... 1 2 Historique... 2 2.1 L'organisation en fichier... 2 2.2 L'apparition des SGBD... 2 2.3 Les SGBD relationnels... 3 2.4 Les bases de données objet...

Plus en détail

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste Christian Soutou Avec la participation d Olivier Teste SQL pour Oracle 4 e édition Groupe eyrolles, 2004, 2005, 2008, 2010, is BN : 978-2-212-12794-2 Partie III SQL avancé La table suivante organisée en

Plus en détail

Historisation des données

Historisation des données Historisation des données Partie 1 : mode colonne par Frédéric Brouard, alias SQLpro MVP SQL Server Expert langage SQL, SGBDR, modélisation de données Auteur de : SQLpro http://sqlpro.developpez.com/ "SQL",

Plus en détail

PROJET 1 : BASE DE DONNÉES REPARTIES

PROJET 1 : BASE DE DONNÉES REPARTIES PROJET 1 : BASE DE DONNÉES REPARTIES GESTION D UNE BANQUE Elèves : David Bréchet Frédéric Jacot Charles Secrétan DONNÉES DU PROJET SSC - Bases de Données II Laboratoire de Bases de Données BD réparties

Plus en détail

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : cinzia.digiusto@gmail.com webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

Bases de Données Réparties

Bases de Données Réparties Bases de Données Réparties Architecture Mise en œuvre Duplication et Réplication Michel Tuffery BDR : Définition Ensemble de bases de données gérées par des sites différents et apparaissant à l utilisateur

Plus en détail

Cours SQL. Base du langage SQL et des bases de données

Cours SQL. Base du langage SQL et des bases de données Cours SQL Base du langage SQL et des bases de données Auteur Tony Archambeau Site web http://sql.sh Date 24 mai 2014 Licence Mis à disposition selon les termes de la licence Creative Commons Attribution

Plus en détail

Introduction aux Bases de Données

Introduction aux Bases de Données Introduction aux Bases de Données I. Bases de données I. Bases de données Les besoins Qu est ce qu un SGBD, une BD Architecture d un SGBD Cycle de vie Plan du cours Exemples classiques d'applications BD

Plus en détail

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin Université de Nice Sophia-Antipolis Langage SQL version 5.7 du polycopié Richard Grin 4 janvier 2008 Table des matières Présentation du polycopié vi 1 Introduction 1 1.1 Présentation de SQL.......................

Plus en détail

Implémentation des SGBD

Implémentation des SGBD Implémentation des SGBD Structure générale des applications Application utilisateur accédant à des données d'une base Les programmes sous-jacents contiennent du code SQL Exécution : pendant l'exécution

Plus en détail

Vincent Augusto 2010-2011

Vincent Augusto 2010-2011 le des Systèmes Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne 2010-2011 Un 1/73 le des Un 2/73 1 2 3 4 le 5 6 7 8 Un le des Un 3/73 Contenu du cours : Techniques pour l analyse

Plus en détail

1 Modélisation d une base de données pour une société de bourse

1 Modélisation d une base de données pour une société de bourse IN306 : Corrigé SID Christophe Garion 18 octobre 2010 Ce document est un corrigé succinct de l examen du module IN306. 1 Modélisation d une base de données pour une société de bourse Une

Plus en détail