Administration des bases de données

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

Download "Administration des bases de données"

Transcription

1 Administration des bases de données Mehdi Louizi 1

2 Pourquoi PL/SQL 2

3 Pourquoi PL/SQL? PL/SQL = PROCEDURAL LANGUAGE/SQL SQL est un langage non procédural Les traitements complexes sont parfois difficiles à écrire si on ne peut utiliser des variables et les structures de programmation comme les boucles et les alternatives On ressent vite le besoin d un langage procédural pour lier plusieurs requêtes SQL avec des variables et dans les structures de programmation habituelles 3

4 Principales caractéristiques de PL/SQL Extension de SQL : des requêtes SQL cohabitent avec les structures de contrôle habituelles de la programmation structurée (blocs, alternatives, boucles) La syntaxe ressemble au langage Ada ou Pascal Un programme est constitué de procédures et de fonctions Des variables permettent l échange d information entre les requêtes SQL et le reste du programme 4

5 Utilisation de PL/SQL PL/SQL peut être utilisé pour l écriture des procédures stockées et des triggers Oracle accepte aussi le langage Java Il convient aussi pour écrire des fonctions utilisateurs qui peuvent être utilisées dans les requêtes SQL (en plus des fonctions prédéfinies) Il est aussi utilisé dans des outils Oracle Ex : Forms et Report 5

6 Normalisation du language Langage spécifique à Oracle Tous les SQBG ont un langage procédural TransacSQL pour SQLServer, PL/pgSQL pour Postgresql Procédures stockées pour MySQL depuis 5.0 Tous les langages L4G des différents SGBDs se ressemblent 6

7 Utilisation de PL/SQL Le PL/SQL peut être utilisé sous 3 formes Un bloc de code, exécuté comme une unique commande SQL, via un interpréteur standard (SQL+ ou isql*plus) un fichier de commande PL/SQL un programme stocké(procédure, fonction, package ou trigger) 7

8 Le langage PL/SQL 8

9 Blocs Un programme est structuré en blocs d instructions de 3 types : Procédures anonymes Procédures nommées Fonctions nommées Un bloc peut contenir d autres blocs 9

10 Structure d un programme PL/SQL DECLARE -- définition des variables BEGIN -- code du programme EXCEPTION -- code de gestion des erreurs END; 10

11 Déclaration, initialisation des variables Identificateurs Oracle : 30 caractères au plus commence par une lettre Peut contenir lettres, chiffres, _, $ et # pas sensible à la casse Portée habituelle des langages à blocs Doivent être déclarés avant d être utilisés 11

12 Déclaration, initialisation des variables Déclaration et initialisation Nom_variable type_variable := valeur; Initialisation Nom_variable := valeur; Déclaration multiple interdite Exemples: age integer; nom varchar(30); datenaissance date; ok boolean:= true; 12

13 Initialisation de variables Plusieurs façons de donner une valeur à une variable : Opérateur d affectation n := Directive INTO de la requête SELECT Exemples : datenaissance:= 10/10/2004 ; SELECT nome INTO nom FROM emp WHERE matr= 509; 13

14 SELECT INTO select expr1, expr2, into var1, var2, met des valeurs de la BD dans une ou plusieurs variables expr1, expr2, Le select ne doit renvoyer qu une seule ligne Avec Oracle il n est pas possible d inclure un select sans «into» dans une procédure : pour ramener plusieurs lignes les curseurs. 14

15 Le type de variables VARCHAR2 Longueur maximale : octets Syntaxe: Nom_variable VARCHAR2(30); Exemple: name VARCHAR2(30); name VARCHAR2(30) := farid ; NUMBER(long,dec) Long : longueur maximale Dec : longueur de la partie décimale Exemple: num_tel number(10); farid number(5,2)=142.12; 15

16 Le type de variables (2) DATE Nom_variable DATE; Par défaut DD-MON-YY (18-DEC-02) Fonction TO_DATE Exemple : start_date := to_date( 29-SEP-2003, DD-MON-YYYY ); start_date := to_date( 29-SEP-2003:13:01, DD-MON- YYYY:HH24:MI ); BOOLEAN TRUE, FALSE ou NULL 16

17 Déclaration %TYPE et %ROWTYPE On peut déclarer qu une variable est du même type qu une colonne d une table ou (ou qu une autre variable) : Exemple : nom emp.nome.%type; Une variable peut contenir toutes les colonnes d une ligne d une table Exemple : employe emp%rowtype; déclare que la variable employe contiendra une ligne de la table emp 17

18 Exemple d utilisation DECLARE employe emp%rowtype; nom emp.nome.%type; BEGIN SELECT * INTO employe FROM emp WHERE matr= 900; nom := employe.nome; employe.dept:= 20; INSERT into emp VALUES employe; END 18

19 Commentaires --Pour une fin de ligne /* Pour plusieurs lignes */ 19

20 PL /SQL : les principales commandes 20

21 Test conditionnel IF-THEN IF l_date > 11-APR-03 THEN l_salaire := l_salaire * 1.15; END IF; IF-THEN-ELSE IF l_date > 11-APR-03 THEN l_salaire := l_salaire * 1.15; ELSE l_salaire := l_salaire * 1.05; END IF; 21

22 Test conditionnel IF-THEN-ELSIF IF l_nom = MOHAMED THEN l_salaire := l_salaire * 1.15; ELSIF l_nom = AHMED THEN l_salaire := l_salaire * 1.05; END IF; CASE CASE sélecteur WHEN expression1 THEN résultat1 WHEN expression2 THEN résultat2 ELSE résultat3 END; 22

23 Test conditionnel Exemple : val := CASE os WHEN WINDOWS THEN MICROSOFT WHEN LEOPARD THEN APPLE ELSE Unix END; 23

24 Exercices Soit la table départements avec les champs suivants : id_departement : clé primaire, entier non nul nom : varchar2(40) id_region : toujours nul Soit la séquence «dep» suivante : Commence à 1, pas de 1, pas de valeur minimale, valeur maximale égale à 100 Créez un bloc PL/SQL pour insérer un nouveau département dans la table départements Utilisez la séquence dep pour générer un numéro de département. Créez un paramètre pour le nom du département. 24

25 Exercices Soit la table commande avec les champs suivants : id_commande : clé primaire id_employe : clé étrangère nom : varchar2(40) total : montant de la commande : entier, trois chiffres après la virgule Soit la table employés id_employe : clé_primaire commission : entier 3 chiffres Un employé a plusieurs commandes, une commande a un et un seul employé Créez un paramètre qui reçoit un numéro d employé Trouvez la somme totale de toutes les commandes traitées par cet employé Mettre à jour le pourcentage de commission de cet employé : 25

26 Exercices Si la somme < 100,000 passer la commission à 10 Si la somme est comprise entre 100,000 et 1,000,000 inclus passer la commission à 15 Si la somme excède 1,000,000 passer la commission à 20 Si aucune commande n existe pour cet employé, mettre la commission à 0 Valider la modification 26

27 Les boucles LOOP instructions exécutables; END LOOP; Obligation d utiliser la commande EXIT WHILE condition LOOP instructions exécutables; END LOOP; 27

28 Les boucles FOR variable IN debut..fin LOOP instructions; END LOOP; 28

29 Affichage Activer le retour écran set serveroutput on size Affichage dbms_output.put_line(chaîne); Utilise pour faire une concaténation 29

30 Exemple set serveroutput on --sous SQLPLUS DECLARE i number(2); BEGIN FOR i IN 1..5 LOOP dbms_output.put_line( Nombre: i ); END LOOP; END; 30

31 Exemple DECLARE nb integer; BEGIN delete from emp where matr in (600, 610); nb := sql%rowcount; --curseur sql dbms_output.put_line('nb = ' nb); END; 31

32 Exemple DECLARE compteur number(3); i number(3); BEGIN select count(*) into compteur from clients; FOR i IN 1..compteur LOOP dbms_output.put_line('nombre : ' i ); END LOOP; END; 32

33 33 Les curseurs

34 Les curseurs Toutes les requêtes SQL sont associées à un curseur Ce curseur représente la zone mémoire utilisée pour parser(analyser) et exécuter la requête Le curseur peut être implicite (pas déclaré par l utilisateur) ou explicite Les curseurs explicites servent à retourner plusieurs lignes avec un select 34

35 Les curseurs Tous les curseurs ont des attributs que l utilisateur peut utiliser %ROWCOUNT: nombre de lignes traitées par le curseur %FOUND: vrai si au moins une ligne a été traitée par la requête ou le dernier fetch %NOTFOUND: vrai si aucune ligne n a été traitée par la requête ou le dernier fetch %ISOPEN: vrai si le curseur est ouvert (utile seulement pour les curseurs explicites) 35

36 Les curseurs Les curseurs implicites Les curseurs implicites sont tous nommés SQL Exemple : DECLARE nb_lignes integer; BEGIN delete from emp where dept= 10; nb_lignes:= SQL%ROWCOUNT; 36

37 Les curseurs Les curseurs explicites Pour traiter les select qui renvoient plusieurs lignes Ils doivent être déclarés On les utilise dans une boucle FOR Utilisation implicite des instructions OPEN, FETCH et CLOSE 37

38 Les curseurs Les curseurs explicites DECLARE nom varchar2(30); CURSOR c_nom_clients IS SELECT nom,adresse FROM clients; BEGIN FOR le_client IN c_nom_clients LOOP dbms_output.put_line('employé: ' UPPER(le_client.nom) ' Ville : ' le_client.adresse); END LOOP; END; 38

39 Les curseurs Curseurs paramétrés Un curseur paramétré peut servir plusieurs fois avec des valeurs des paramètres différentes On doit fermer le curseur entre chaque utilisation de paramètres différents (sauf si on utilise «for»qui ferme automatiquement le curseur) 39

40 Les curseurs Curseurs paramétrés DECLARE CURSOR c(p_dept integer) is select dept, nome from emp where dept= p_dept; BEGIN FOR employe in c(10)loop dbms_output.put_line(employe.nome); END LOOP; FOR employe in c(20) LOOP dbms_output.put_line(employe.nome); END LOOP; END; 40

41 41 Les exceptions

42 Les exceptions Une exception est une erreur qui survient durant une exécution 2 types d exception : prédéfinie par Oracle définie par le programmeur 42

43 Saisir les exceptions Une exception ne provoque pas nécessairement l arrêt du programme si elle est saisie par un bloc (dans la partie «EXCEPTION») 43

44 Les exceptions prédéfinies NO_DATA_FOUND Quand Select into ne retourne aucune ligne TOO_MANY_ROWS Quand Select into retourne plusieurs lignes VALUE_ERROR Erreur numérique ZERO_DIVIDE Division par zéro OTHERS Toutes erreurs non interceptées 44

45 Traitement des exceptions BEGIN EXCEPTION WHEN NO_DATA_FOUND THEN... WHEN TOO_MANY_ROWS THEN... WHEN OTHERS THEN--optionnel... END; 45

46 Les exceptions Utilisateur Elles doivent être déclarées avec le type EXCEPTION On les lève avec l instruction RAISE 46

47 Exemple d exception utilisateur DECLARE salaire numeric(8,2); salaire_trop_bas EXCEPTION; BEGIN select sal into salaire from emp where matr= 50; if salaire < 300 then RAISE salaire_trop_bas; end if; EXCEPTION WHEN salaire_trop_bas THEN dbms_output.put_line( Salaire trop bas ); WHEN OTHERS THEN dbms_output.put_line(sqlerrm); END; 47

48 Procédures et Fonctions 48

49 Bloc anonyme ou nommé Un bloc anonyme PL/SQL est un bloc «DECLARE BEGIN END»comme dans les exemples précédents Dans SQL*PLUS on peut exécuter directement un bloc PL/SQL anonyme en tapant sa définition Le plus souvent, on crée plutôt une procédure ou une fonction nommée pour réutiliser le code 49

50 Procédures sans paramètres create or replace procedure list_nom_clients IS BEGIN DECLARE nom varchar2(30); CURSOR c_nom_clients IS select nom,adresse from clients; BEGIN FOR le_client IN c_nom_clients LOOP dbms_output.put_line('employé: ' UPPER(le_client.nom) ' Ville : le_client.adresse); END LOOP; END; END; 50

51 Procédures avec paramètre create or replace procedure list_nom_clients (ville IN varchar2, result OUT number) IS BEGIN DECLARE CURSOR c_nb_clients IS select count(*) from clients where adresse=ville; BEGIN open c_nb_clients; fetch c_nb_clients INTO result; END; END; IN : en lecture seule OUT : en écriture seule IN OUT : en lecture/écriture 51

52 Récupération des résultats sous SQL+ Déclarer une variable SQL> variable nb number; Exécuter la fonction Une variable globale s utilise avec le préfixe : SQL> execute list_nom_clients('paris',:nb) Visualisation du résultat SQL> print Description des paramètres SQL> desc nom_procedure 52

53 Fonctions sans paramètres create or replace function nombre_clients return number IS Déclaration du type de retour de la BEGIN fonction DECLARE i number; CURSOR get_nb_clients IS select count(*) from clients; END; BEGIN END; open get_nb_clients; fetch get_nb_clients INTO i; return i; Exécution: select nombre_clients() from dual 53

54 Fonctions avec paramètres Seuls les paramètres IN (en lecture seule) sont autorisés pour les fonctions Create or replace Function euro_to_fr(somme IN number) return number IS taux constant number:= ; BEGIN return somme * taux; END; 54

55 Procédures et fonctions Suppression de procédures ou fonctions DROP PROCEDURE nom_procedure DROP FUNCTION nom_fonction Table système contenant les procédures et fonctions : user_source 55

56 Compilation, exécution et utilisation Compilation Sous SQL*PLUS, il faut taper une dernière ligne contenant «/»pour compiler une procédure ou une fonction Exécution Sous SQL*PLUS on exécute une procédure PL/SQL avec la commande EXECUTE : EXECUTE nomprocédure(param1, ); Utilisation Les procédures et fonctions peuvent être utilisées dans d autres procédures ou fonctions ou dans des blocs PL/SQL anonymes Les fonctions peuvent aussi être utilisées dans les requêtes SQL 56

57 57 Triggers

58 Création de triggers Exemple : CREATE TRIGGER nom BEFORE DELETE OR INSERT OR UPDATE ON table FOR EACH ROW WHEN (new.empno>0) DECLARE... <<<<déclarations>>>> BEGIN... <<<< bloc d'instructions PL/SQL>>>> END; 58

59 Le nom du trigger doit être unique dans un même schéma peut être le nom d'un autre objet (table, vue, procédure) mais à éviter 59

60 Option BEFORE/AFTER elle précise le moment de l'exécution du trigger les triggers AFTER row sont plus efficaces que les BEFORE row parce qu'ils ne nécessitent pas une double lecture des données. 60

61 Définition du trigger Elle comprend le type d'instruction SQL qui déclenche le trigger : DELETE, INSERT, UPDATE On peut en avoir une, deux ou les trois. Pour UPDATE, on peut spécifier une liste de colonnes. Dans ce cas, le trigger ne se déclenchera que si l'instruction UPDATE porte sur l'une au moins des colonnes précisée dans la liste. S'il n'y a pas de liste, le trigger est déclenché pour toute instruction UPDATE portant sur la table. 61

62 Définition du trigger La définition du trigger précise la table associée au trigger : une et une seule table pas une vue. 62

63 Types de triggers Le type d un trigger détermine : quand ORACLE déclenche le trigger, combien de fois ORACLE déclenche le trigger. Le type du trigger est défini par l utilisation de l une ou l autre des options suivantes : BEFORE, AFTER, FOR EACH ROW 63

64 ORACLE propose deux types de triggers les triggers lignes qui se déclenchent individuellement pour chaque ligne de la table affectée par le trigger, les triggers globaux qui sont déclenchés une seule fois. Si l'option FOR EACH ROW est spécifiée, c'est un trigger ligne, sinon c'est un trigger global. 64

65 Types de triggers Pour les triggers lignes, on peut introduire une restriction sur les lignes à l'aide d'une expression logique SQL : c'est la clause WHEN : Cette expression est évaluée pour chaque ligne affectée par le trigger. Le trigger n'est déclenché sur une ligne que si l'expression WHEN est vérifiée pour cette ligne. L'expression logique ne peut pas contenir une sous-question. Par exemple, WHEN (new.empno>0) empêchera l'exécution du trigger si la nouvelle valeur de EMPNO est 0, négative ou NULL. 65

66 Triggers Le corps du trigger est un bloc PL/SQL : Il peut contenir du SQL et du PL/SQL. Il est exécuté si l'instruction de déclenchement se produit et si la clause de restriction WHEN, le cas échéant, est évaluée à vrai. Il est différent pour un trigger ligne et pour un trigger global. 66

67 Les noms de corrélation Dans un trigger ligne, on doit pouvoir accéder aux ancienne et nouvelle valeurs de colonne de la ligne. Les noms de corrélation permettent de désigner ces deux valeurs : un nom pour l'ancienne et un pour la nouvelle. Si l'instruction de déclenchement du trigger est INSERT, seule la nouvelle valeur a un sens. Si l'instruction de déclenchement du trigger est DELETE, seule l'ancienne valeur a un sens. 67

68 Les noms de corrélation La nouvelle valeur est appelée :new.colonne L'ancienne valeur est appelée :old.colonne Exemple : IF :new.salaire < :old.salaire... 68

69 L option REFERENCING Si une table s'appelle NEW ou OLD, on peut utiliser REFERENCING pour éviter l'ambiguïté entre le nom de la table et le nom de corrélation. Exemple : CREATE TRIGGER nomtrigger BEFORE UPDATE ON new REFERENCING new AS newnew FOR EACH ROW BEGIN :newnew.colon1:= TO_CHAR(:newnew.colon2); END; 69

70 Les prédicats conditionnels INSERTING, DELETING et UPDATING Quand un trigger comporte plusieurs instructions de déclenchement (par exemple INSERT OR DELETE OR UPDATE), on peut utiliser des prédicats conditionnels (INSERTING, DELETING et UPDATING) pour exécuter des blocs de code spécifiques pour chaque instruction de déclenchement. 70

71 Les prédicats conditionnels INSERTING, DELETING et UPDATING Exemple : CREATE TRIGGER... BEFORE INSERT OR UPDATE ON employe... BEGIN... IF INSERTING THEN... END IF; IF UPDATING THEN... END IF;... END; 71

72 Les prédicats conditionnels INSERTING, DELETING et UPDATING UPDATING peut être suivi d'un nom de colonne : CREATE TRIGGER... BEFORE UPDATE OF salaire, commission ON employe... BEGIN... IF UPDATING ('salaire') THEN... END IF;... END; 72

73 Nombre de triggers par table On peut avoir au maximum un trigger de chacun des types suivants pour chaque table : BEFORE UPDATE row BEFORE DELETE row BEFORE INSERT statement BEFORE INSERT row BEFORE UPDATE statement BEFORE DELETE statement AFTER UPDATE row AFTER DELETE row AFTER INSERT statement AFTER INSERT row AFTER UPDATE statement AFTER DELETE statement. Même pour UPDATE, on ne peut pas en avoir plusieurs avec des noms de colonnes différents. 73

74 Instructions SQL autorisées les instructions du LMD sont autorisées les instructions du LDD ne sont pas autorisées les instructions de contrôle de transaction (ROLLBACK, COMMIT) ne sont pas autorisées. 74

75 Triggers Ordre de traitement des lignes On ne peut pas gérer l'ordre des lignes traitées par une instruction SQL. On ne peut donc pas créer un trigger qui dépende de l'ordre dans lequel les lignes sont traitées. Triggers en cascade Un trigger peut provoquer le déclenchement d'un autre trigger. ORACLE autorise jusqu'à 32 triggers en cascade à un moment donné. 75

76 Limite Un trigger ligne ne peut pas lire et/ou modifier la table concernée (appelée table mutante) par l'instruction (INSERT, UPDATE ou DELETE) qui a déclenché ce trigger. Exemple : On peut utiliser des tables temporaires. 76

77 Triggers Conditions nécessaires pour créer un trigger il faut avoir le privilège CREATE TRIGGER il faut soit posséder la table sur laquelle on veut définir un trigger, soit posséder le privilège ALTER sur la table sur laquelle on veut définir le trigger, soit posséder le privilège ALTER ANY TABLE Modification de triggers Pour modifier un trigger, on refait une instruction CREATE TRIGGER suivie de OR REPLACE ou bien on supprime le trigger (DROP TRIGGER nomtrigger) et on le crée à nouveau. 77

78 Activation d un trigger Un trigger peut être activé ou désactivé. S il est désactivé, ORACLE le stocke mais l ignore. On peut désactiver un trigger si : il référence un objet non disponible on veut charger rapidement un volume de données important ou recharger des données déjà contrôlées. Par défaut, un trigger est activé dès sa création. 78

79 Activation d un trigger Pour désactiver un trigger, on utilise l instruction ALTER TRIGGER avec l option DISABLE : ALTER TRIGGER nomtrigger DISABLE; On peut désactiver tous les triggers associés à une table avec la commande : ALTER TABLE nomtable DISABLE ALL TRIGGERS; A l inverse on peut réactiver un trigger : ALTER TRIGGER nomtrigger ENABLE; ou tous les triggers associés à une table : ALTER TABLE nomtable ENABLE ALL TRIGGERS; 79

80 Recherche d information sur les triggers Les définitions des triggers sont stockées dans les tables de la métabase, notamment dans les tables USER_TRIGGERS, ALL_TRIGGERS et DBA_TRIGGERS 80

81 La procédure raise_application_error La procédure raise_application_error (error_number,error_message) error_number doit être un entier compris entre et error_message doit être une chaîne de 500 caractères maximum. Quand cette procédure est appelée, elle termine le trigger, défait la transaction (ROLLBACK), renvoie un numéro d'erreur défini par l'utilisateur et un message à l'application. 81

82 Gestion des exceptions Si une erreur se produit pendant l'exécution d'un trigger, toutes les mises à jour produites par le trigger ainsi que par l'instruction qui l'a déclenché sont défaites. On peut introduire des exceptions en provoquant des erreurs. Une exception est une erreur générée dans une procédure PL/SQL. Elle peut être prédéfinie ou définie par l'utilisateur. Un bloc PL/SQL peut contenir un bloc EXCEPTION gérant les différentes erreurs possibles avec des clauses WHEN. Une clause WHEN OTHERS THEN ROLLBACK; gère le cas des erreurs non prévues. 82

83 Exceptions prédéfinies quelques exemples NO_DATA_FOUND cette exception est générée quand un SELECT INTO ne retourne pas de lignes DUP_VAL_ON_INDEX tentative d'insertion d'une ligne avec une valeur déjà existante pour une colonne à index unique ZERO_DIVIDE division par zéro etc 83

84 Quelques exemples employe(numserv,...) service(numserv,...) /* vérifier que le service de l'employé existe bien */ CREATE TRIGGER verif_service BEFORE INSERT OR UPDATE OF numserv ON employe FOR EACH ROW WHEN (new.numserv is not null) DECLARE noserv integer; BEGIN noserv:=0; SELECT numserv INTO noserv FROM SERVICE WHERE numserv=:new.numserv; IF (noserv=0) 84

85 Quelques exemples (suite) THEN raise_application_error(-20501, 'N de service non correct'); END IF; END; employe(salaire,...) /* mettre une valeur par défaut si le champ ne contient rien */ /* affecter 240 au salaire d'un employe qui n'en a pas */ CREATE TRIGGER smic BEFORE INSERT OR UPDATE OF salaire ON employe FOR EACH ROW WHEN (new.salaire is null) BEGIN SELECT 240 INTO :new.salaire FROM employe; END; 85

86 Quelques exemples employe(numemp,salaire,grade,...) grille(grade,salmin,salmax) /* vérifier le salaire d'un employé */ /* s'assurer que le salaire est compris dans les bornes correspondant au grade de l'employé */ CREATE TRIGGER verif_grade_salaire BEFORE INSERT OR UPDATE OF salaire, grade ON employe FOR EACH ROW DECLARE minsal number; maxsal number; BEGIN /* retrouver le salaire minimum et maximum du grade */ SELECT salmin,salmax INTO minsal, maxsal FROM grille 86

87 Quelques exemples (suite) WHERE grade= :new.grade; /* s'il y a un problème, on provoque une erreur */ IF (:new.salaire<minsal OR :new.salaire>maxsal) THEN raise_application_error (-20300,'Salaire TO_CHAR (:new.salaire) 'incorrect pour ce grade'); EXCEPTION WHEN no_data_found THEN raise_application_error(-20301,'grade incorrect'); END; 87

88 Quelques exemples Créer un Trigger qui permet de vérifier avant chaque insertion d un livre son prix : Si le prix est supérieur à 0 S il est compris entre le prix moyen * 0.7 et le prix moyen *1.3, CREATE TABLE Livre ( nolivre NUMERIC PRIMARY KEY, prix NUMERIC(9,2) ) CREATE TABLE PrixLivre ( nb NUMERIC, somme NUMERIC(12,2) ) INSERT INTO PrixLivre VALUES (1,0); mettre à jour la table PrixLivre (somme et nb) Si le prix est > prix_moyen*0.7 et <prix_moyen*1.3 soulever une exception Sinon mettre à jour uniquement le champ somme de la table PrixLivre 88

89 Quelques exemples (suite) DROP TRIGGER moyenne_prix; CREATE TRIGGER moyenne_prix BEFORE INSERT OF Prix ON Livre FOR EACH ROW DECLARE prix_moyen number; BEGIN SELECT SOMME/NB INTO prix_moyen FROM PrixLivre; IF (prix_moyen>0) THEN IF (:new.prix < prix_moyen*0.7 OR :new.prix > prix_moyen*1.3) THEN raise_application_error(-20001,'prix modifiant trop la moyenne!'); END IF; IF (:new.prix > prix_moyen*0.7 AND :new.prix < prix_moyen*1.3) THEN UPDATE PrixLivre SET NB=NB+1, SOMME=SOMME+:new.PRIX; END IF; ELSE UPDATE PrixLivre SET SOMME=SOMME+:new.PRIX; END IF; END; 89

90 Quelques exemples Soit une table quelconque TABL, dont la clé primaire CLENUM est numérique. Définir un trigger en insertion permettant d implémenter une numérotation automatique de la clé. Le premier numéro doit être 1. 90

91 Quelques exemples (suite) create or replace trigger cleauto before insert on tabl for each row begin declare n integer; newkey integer; mon_exception exception; -- Recherche s'il existe des tuples dans la table select count(*) into n from tabl; if n=0 then raise mon_exception; -- Premiere insertion end if; -- Recherche la valeur de cle C la plus elevee -- et affecte C+1 a la nouvelle cle select max(clenum) into newkey from tabl; :new.clenum := newkey + 1; exception -- Premier numero = 1 when mon_exception then :new.clenum := 1; end; 91

92 Quelques exemples CLIENT (NUMCL, NOM, PRENOM, ADR, CP, VILLE, SALAIRE, CONJOINT) DETENTEUR (NUMCL, NUMCP) COMPTE (NUMCP, DATEOUVR, SOLDE) Écrire un trigger en insertion permettant de contrôler les contraintes suivantes : - le département dans lequel habite le client doit être 01, 07, 26, 38, 42, 69, 73, ou 74 (sinon il n est pas en France*) - le nom du conjoint doit être le même que celui du client. 92 *Ceci est une supposition

93 Quelques exemples (suite 1/3) CREATE TRIGGER INS_CLIENT BEFORE INSERT ON CLIENT FOR EACH ROW DECLARE nom_conjoint CLIENT.NOM%TYPE ; compteur CLIENT.NUMCL%TYPE ; pb_dept EXCEPTION ; pb_conjoint1 EXCEPTION ; pb_conjoint2 EXCEPTION ; BEGIN -- Contrainte sur le département IF (:NEW.CP) NOT IN (01, 07, 26, 38, 42, 69, 73, 74) THEN RAISE pb_dept ; END IF ; 93

94 Quelques exemples (suite 2/3) -- Contrainte sur le nom du conjoint (+ test d existence du conjoint) IF :NEW.CONJOINT IS NOT NULL THEN SELECT COUNT(*), NOM INTO compteur, nom_conjoint FROM CLIENT WHERE NUMCL = :NEW.CONJOINT GROUP BY NOM ; IF compteur = 0 THEN -- Pas de conjoint RAISE pb_conjoint1 ; END IF ; IF nom_conjoint <> :NEW.NOM THEN RAISE pb_conjoint2 ; END IF ; END IF ; 94

95 Quelques exemples (suite 3/3) EXCEPTION WHEN pb_dept THEN RAISE_APPLICATION_ERROR (-20501, Insertion impossible : le client n habite pas en France! ) ; WHEN pb_conjoint1 THEN RAISE_APPLICATION_ERROR (-20502, Insertion impossible : le conjoint du client n existe pas! ) ; WHEN pb_conjoint2 THEN RAISE_APPLICATION_ERROR (-20503, Insertion impossible : le nom du conjoint est différent de celui du client! ) ; END ; 95

96 Administration Oracle 96

97 Types d utilisateurs d une BD développeurs d application développent les programmes suivant une logique figée utilisateurs finaux utilisent ces programmes utilisateurs évolués utilisent soit ces programmes soit un langage spécifique comme SQL ou d autres outils administrateur de la base de données (DBA= Data Base Administrator): installe, maintient, gère la BD 97

98 Rôle du DBA Niveau Conceptuel: définir ( ou participer à la définition) du schéma conceptuel Niveau externe: décide qui peut accéder à quoi et comment gère les utilisateurs Niveau interne : assurer la correspondance entre le schéma conceptuel et les possibilités du SGBD de façon à en tirer les meilleurs profits en terme de performance, d intégrité et de sécurité 98

99 Rôle du DBA Rôle organisationnel Définition du schéma conceptuel des données Partage des données par les utilisateurs Rôle technique Installation su SGBD et des outils associés Création de la base de données et assurer son évolution 99

100 Rôle du DBA Gestion des privilèges d accès Amélioration des performances Sécurité et cohérences des données Echange des données entre la base de données et le monde extérieur 100

101 Structure physique d une BD Un ensemble de fichiers fichiers de données fichiers de reprise fichiers de contrôle La spécification des fichiers de données et de reprise se fait lors de la création ou de la modification de la structure d une base 101

102 Fichiers de données Un ou plusieurs fichiers de données : assurent le stockage des objets créés par les utilisateurs, et le dictionnaire de données. Un fichier de données est associé à une et une seule base de données. Taille d un fichier de données : attribuée au moment de sa création, ne peut jamais être modifiée 102

103 Fichiers de reprise Contiennent les modifications des données les plus récentes. Lors d une panne Oracle utilise ces fichiers pour remettre la base dans un état cohérent. Fichiers de reprise archivés 103

104 Fichiers de contrôle Contient les informations relatives à la structure physique de la BD: nom de la BD, les noms et localisation des fichiers de données et de reprise. Oracle utilise ce fichier pour identifier les fichiers de données et de reprise Duplication de ce fichier pour faire face aux incidents éventuels 104

105 Structure logique d une Base de Données Des tablespaces Des segments Des extensions Des blocs 105

106 TABLESPACE Utilisé pour regrouper un ensemble d objets logiques ( ex: tables, index,etc.) une base de donnée doit avoir au moins un tablespace appelé SYSTEM qui contient le dictionnaire des données un 2 ème tablespace pour stocker les objets de la base. 106

107 TABLESPACE CREATE TABLESPACE nom_tablespace DATAFILE spec_fichier [,spec_fichier] [DEFAULT STORAGE (spec_stockage)] [ONLINE OFFLINE ]. CREATE USER nom_user IDENTIFIED BY [mot_pass EXTERNALLY] [DEFAULT TABLESPACE nom_tablespace] [TEMPORARY TABLESPACE nom_tablespace] [QUOTA {n [K M] ON nom_tablespace UNLIMITED] 107

108 Segment, Extension et Bloc Lors de la création d un fichier, Oracle réserve tout l espace qui lui est associé. A l intérieur de ce fichier, l espace est géré dynamiquement au fur et à mesure de l utilisation de la base de données: se fait selon trois niveau de granularité: le segment, l extension et le bloc 108

109 Bloc et extension Bloc: Composé d un certain nombre d octets, taille définie au moment de la création de la BD la plus petite unité logique E/S utilisée par Oracle Extension Unité logique d allocation d espace composée d un ensemble contigu de blocs de données alloués simultanément à un segment 109

110 Segment Un ensemble d une ou plusieurs extensions contenant les données d une structure logique dans un tablespace 5 types de segments: Segments de données Segments d index Segments d annulation (rollback) Segments temporaires Segments d amorçage (bootstrap) 110

111 II. Création d une base de données Oracle est livré en standard avec une base de données Le DBA a le choix: modifier la structure de cette base créer une nouvelle base. Evaluer l espace disque nécessaire prévoir les moyens assurant la sécurité de la base. 111

112 Création d une base de données Sauvegarde des bases existantes Création d un nouveau fichier d initialisation Edition du nouveau fichier d initialisation Arrêt et redémarrage d oracle Création de la nouvelle base 112

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

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

Considérons une partie d un modèle conceptuel de données avec les schémas d entités. Figure 1: Une partie du modèle conceptuel de données

Considérons une partie d un modèle conceptuel de données avec les schémas d entités. Figure 1: Une partie du modèle conceptuel de données Considérons une partie d un modèle conceptuel de données avec les schémas d entités suivants: EMP(EmpNo, Enom, Job, DirNo, Sal, Prime) DEPT(DeptNo, Dnom, Adr) Où EmpNo est la clé primaire de EMP et DeptNo

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

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

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

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

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

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K. Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique CHAPITRE 4 ADMINISTRATION ET TUNING DE BASES DE DONNÉES RESPONSABLE DR K. BOUKHALFA POLITIQUES DE CONTRÔLES

Plus en détail

Cours 7 : Langage de définition, manipulation et contrôle des données

Cours 7 : Langage de définition, manipulation et contrôle des données Cours 7 : Langage de définition, manipulation et contrôle des données Objets d une base de données Dans un schéma Tables, vues Index, clusters, séquences, synonymes Packages, procédures, fonctions, déclencheurs

Plus en détail

Apprendre le langage SQL le DDL - 1 / 30 - Apprendre le langage SQL par l exemple

Apprendre le langage SQL le DDL - 1 / 30 - Apprendre le langage SQL par l exemple Apprendre le langage SQL le DDL - 1 / 30 - Apprendre le langage SQL par l exemple Ce document est publié sous licence Creative Commons CC-by-nc-nd. Il ne peut ni être modifié, ni faire l objet d une exploitation

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

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

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

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

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

//////////////////////////////////////////////////////////////////// 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

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

Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML

Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML MariaDB : https://mariadb.org/ Site officiel MySQL : http://www-fr.mysql.com/ Zone pour les développeurs : http://dev.mysql.com/

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

Administration des Bases de Données Oracle

Administration des Bases de Données Oracle Administration des Bases de Données Oracle Plan Introduction à l administration de données Structure d une base de données Architecture interne d Oracle Sécurité des données Utilitaires Administration

Plus en détail

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web PHP & Bases de données La quantité de données utilisée par certains sites web nécessite l'utilisation d'une base de données Il faut donc disposer d'un SGBD (mysql, postgresql, oracle, ) installé sur un

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

Instructions SQL. Première partie : Langage de description et de gestion des données

Instructions SQL. Première partie : Langage de description et de gestion des données Instructions SQL Première partie : Langage de description et de gestion des données Quelques instructions et leur syntaxe 1. Introduction Trois principales catégories d instructions. Instructions de création

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

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

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

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 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 13 : Organisation d une base de données, ou comment soulever (un peu) le voile Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Les clusters de table

Plus en détail

Web dynamique. Techniques, outils, applications. (Partie C)

Web dynamique. Techniques, outils, applications. (Partie C) Web dynamique Techniques, outils, applications (Partie C) Nadir Boussoukaia - 2006 1 SOMMAIRE 1. MySQL et PHP (20 min) 2. SQL (petits rappels) (20 min) 2 MySQL et PHP Synthèse 3 MySQL et PHP SGBD MySQL

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

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

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

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

Feuille de TD 2 de BDA, M1 2008 2009 11-03-2011. SGBDRO avec Oracle. 1 Première version simpliste

Feuille de TD 2 de BDA, M1 2008 2009 11-03-2011. SGBDRO avec Oracle. 1 Première version simpliste Feuille de TD 2 de BDA, M1 2008 2009 11-03-2011 Les fichiers en format pdf des projections du cours sont disponibles sur la page : http://www.ibisc.univevry.fr/~serena mais ne pas les imprimer au bât.

Plus en détail

2011 Hakim Benameurlaine 1

2011 Hakim Benameurlaine 1 Table des matières 1 CRÉATION DES OBJETS DE BASES DE DONNÉES... 2 1.1 Architecture d une base de données... 2 1.1.1 Niveau logique... 2 1.1.2 Niveau physique... 3 1.2 Gestion d une base de données... 3

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

Auto-évaluation DB2 for z/os: cours de base

Auto-évaluation DB2 for z/os: cours de base Auto-évaluation DB2 for z/os: cours de base Document: f1067test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION DB2 FOR Z/OS:

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

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

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

Testez vos connaissances avec Oracle Forms 11g Niveau débutant Réponses aux questions

Testez vos connaissances avec Oracle Forms 11g Niveau débutant Réponses aux questions Testez vos connaissances avec Oracle Forms 11g Niveau débutant Réponses aux questions Document préparé par Abderrahmane Abed Octobre 2013 Version 1.0 Courriel : aabed@oraweb.ca Site web: www.oraweb.ca

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

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

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

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

Cours de Bases de Données Avancées 2006-2007 Groupe cinema, Rapport 4

Cours de Bases de Données Avancées 2006-2007 Groupe cinema, Rapport 4 1 Annexes Avec ce rapport il faut rendre en annexe le script SQL corrigé qui permet de créer la base de données selon votre modèle relationnel ainsi que de la peupler avec un nombre de tuples suffisant.

Plus en détail

420-PK6-SL Banques de données Avancées. UTILISATEURS (suite)

420-PK6-SL Banques de données Avancées. UTILISATEURS (suite) 420-PK6-SL Banques de données Avancées Gestion des UTILISATEURS (suite) RÉCAPITULATIF Un UTILISATEUR ORACLE est donc une combinaison de deux concepts usuels des banques de données. Un objet de contrôle

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

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

Pour les débutants. langage de manipulation des données Pour les débutants SQL : langage de manipulation 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

SQL SERVER 2008 Le 20/10/2010

SQL SERVER 2008 Le 20/10/2010 Définitions SQL SERVER 2008 Le 20/10/2010 Une base de données est un objet particulièrement difficile à définir puisqu il est abordé en pratique selon différents points de vue : Pour un administrateur,

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

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

Les transactions 1/40. 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/40. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions 1/40 2/40 Pourquoi? Anne-Cécile Caron Master MAGE - BDA 1er trimestre 2013-2014 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

1 Avant Propos. 2 Eléments d information pour les connexions et les déconnexions

1 Avant Propos. 2 Eléments d information pour les connexions et les déconnexions Université de Lorraine Département Informatique, Master 1 TD UE SGBD Un compte-rendu pourra être demandé à chaque fin de séance. TRES IMPORTANT : La plus extrême rigueur et le plus grand professionalisme

Plus en détail

TP11 - Administration/Tuning

TP11 - Administration/Tuning TP11 - Administration/Tuning MIAGE #3-2006/2007 January 9, 2007 1 Architecture physique d une base Oracle 1.1 La structure physique Une base de données Oracle est composé de fichiers (au sens du système

Plus en détail

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation

Plus en détail

Introduction au PL/SQL Oracle. Alexandre Meslé

Introduction au PL/SQL Oracle. Alexandre Meslé Introduction au PLSQL Oracle Alexandre Meslé 17 octobre 2011 Table des matières 1 Notes de cours 3 1.1 Introduction au PLSQL............................................ 3 1.1.1 PLSQL.................................................

Plus en détail

dans laquelle des structures vont être créées pour une ou plusieurs applications.

dans laquelle des structures vont être créées pour une ou plusieurs applications. Création d'une nouvelle base de données A. Vue d'ensemble 1. Étapes de création d'une nouvelle base de données pour une application Le processus complet de création d'une nouvelle base de données pour

Plus en détail

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie Cours Web Lionel Seinturier Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr Structured Query Language Langage de manipulation des données stockées dans une base de données interrogation/insertion/modification/suppression

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

White Papers TAFORA pour ORACLE 9i, 10g, 11g

White Papers TAFORA pour ORACLE 9i, 10g, 11g White Papers TAFORA www.tafora.fr Radu Caulea, TAFORA TAFORA ORACLE au quotidien White Papers TAFORA pour ORACLE 9i, 10g, 11g Stratégies d'utilisation RMAN DRAFT 2.10.585-15/10/2012 10:00 Préservez vos

Plus en détail

Chapitre 1 : Introduction

Chapitre 1 : Introduction Chapitre 1 : Introduction A. Objectifs de l'ouvrage.................. 8 B. Présentation d'oracle11g................. 8 1. Introduction........................ 8 2. Principales nouveautés de la version

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

Memento MYSQL LINUX. Pour installer le serveur Mysql. Installer les paquets suivants :

Memento MYSQL LINUX. Pour installer le serveur Mysql. Installer les paquets suivants : Memento MYSQL LINUX Pour installer le serveur Mysql Installer les paquets suivants : Mysql-server (moteur de bases de données) Apache2 (serveur web si besoin) Php5 (langage de programmation permettant

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

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

Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML

Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML Ce document est publié sous licence Creative Commons CC-by-nc-nd. Il ne peut ni être modifié, ni faire

Plus en détail

Bases de Données & Interfaces Web. stanislas.oger@univ-avignon.fr

Bases de Données & Interfaces Web. stanislas.oger@univ-avignon.fr Bases de Données & Interfaces Web stanislas.oger@univ-avignon.fr 1 Architecture d'un SI Web Fonctionnement Dynamique avec Base de Données 2 Idée Dynamiser les pages avec des infos venant de BDD Enregistrer

Plus en détail

Organisation et administration d une base de données

Organisation et administration d une base de données Organisation et administration d une base de données Diapositive de résumé Objectif du cours Introduction et utilisation d une base de données Comparatif des SGBD Structure Physique et Logique d une BD

Plus en détail

Designer et l ingénierie du logiciel Les APIs de tables pour garantir l intégrité des données

Designer et l ingénierie du logiciel Les APIs de tables pour garantir l intégrité des données Designer et l ingénierie du logiciel Les APIs de tables pour garantir l intégrité des données P.-A. Sunier, ISNet Neuchâtel avec le concours de C. Kohler et P. Ferrara 1 Introduction... 1 2 Le concept...

Plus en détail

BD50. Gestion des courses

BD50. Gestion des courses Département Génie Informatique BD50 TP7 : Développement avec le module PL/SQL de 9iAS et DBMS_EPG d'oracle 10G Gestion des courses Françoise HOUBERDON & Christian FISCHER Copyright Mai 2007 Présentation

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

TP Architecture et Administration des SGBDR Un compte-rendu pourra être demandé à chaque fin de séance.

TP Architecture et Administration des SGBDR Un compte-rendu pourra être demandé à chaque fin de séance. Université de Lorraine Telecom Nancy 3ème année, Spécialités IL, SIE, IAMD TP Architecture et Administration des SGBDR Un compte-rendu pourra être demandé à chaque fin de séance. TRES IMPORTANT : La plus

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

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

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

PRESENTATION. Document1 Serge GUERINET Page 1

PRESENTATION. Document1 Serge GUERINET Page 1 PRESENTATION Les domaines couverts par la série STG sont tous des pourvoyeurs ou exploitants des bases de données. Que l'on gère la relation aux clients, le suivi de l'activité financière, la comptabilité

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

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

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers Programme détaillé Objectifs de la formation Les systèmes de gestion de bases de données prennent aujourd'hui une importance considérable au regard des données qu'ils hébergent. Véritable épine dorsale

Plus en détail

TP Administration Oracle

TP Administration Oracle Ingénieurs 2000 Informatique et Réseaux TP Administration Oracle DIOP Ngoné ESSAIDI Abderrahim Février 2008 1 Sommaire Sommaire... 2 Introduction... 3 1. Déploiement d application... 4 1.1 Résumé du besoin...

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

Le langage procédural PL-PGSQL

Le langage procédural PL-PGSQL Le langage procédural PL-PGSQL PL/pgSQL est un langage procédural utilisé dans le système de gestion de bases de données PostgreSQL. Objectifs : créer des fonctions standards et triggers, ajouter des structures

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

PLAN DE COURS ORACLE : ADMINISTRATION DE BASES DE DONNEES. Objectif. Code. Dure e. Public Concerne. Pre -requis. Programme OR305

PLAN DE COURS ORACLE : ADMINISTRATION DE BASES DE DONNEES. Objectif. Code. Dure e. Public Concerne. Pre -requis. Programme OR305 PLAN DE COURS ORACLE : ADMINISTRATION DE BASES DE DONNEES Objectif Administrer une ou plusieurs bases de, tant sous l'aspect "gestionnaire de " que sous l'aspect "responsable système Oracle". Public Concerne

Plus en détail

Si le médecin agit en situation d urgence, insérer une trace de ses requêtes. Si le patient est cardiaque, le préciser dans le motif de la visite

Si le médecin agit en situation d urgence, insérer une trace de ses requêtes. Si le patient est cardiaque, le préciser dans le motif de la visite Précompilateur Compilateur LP PROGRAMMATION SQL Limites de SQL Problématique de la connexion langage hôte/sql 3 approches Embedded SQL (PRO*C, SQLJ ) API de bas niveau (SQL-CLI, ODBC, ) Langage dédié (PL/SQL,

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

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

Configurer la supervision pour une base MS SQL Server Viadéis Services

Configurer la supervision pour une base MS SQL Server Viadéis Services Configurer la supervision pour une base MS SQL Server Référence : 11588 Version N : 2.2 : Créé par : Téléphone : 0811 656 002 Sommaire 1. Création utilisateur MS SQL Server... 3 2. Configuration de l accès

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

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques Plan de formation : Certification OCA Oracle 11g Description Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques industriels les plus avancés. Cette formation permettra

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

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

Bases de Données Avancées

Bases de Données Avancées 1/116 Bases de Données Avancées Implantation d une BD 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

Plus en détail

Bases de données et sites WEB Cours 3 : SQL3 Langage

Bases de données et sites WEB Cours 3 : SQL3 Langage Bases de données et sites WEB Cours 3 : SQL3 Langage 1 Plan Références Requêtes simples Expressions de chemin Appels de fonctions et d opérateurs Création d instances Opérations sur les collections 2 Références

Plus en détail

Chapitre 5 : Les procédures stockées PL/SQL

Chapitre 5 : Les procédures stockées PL/SQL I. Introduction Une procédure ou une fonction stockée est un bloc PL/SQL nommé pouvant accepter des paramètres et être appelée. Généralement, on utilise une fonction pour calculer une valeur. Les procédures

Plus en détail