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

PL/SQL. Pourquoi PL/SQL? Introduction. Principales caractéristiques de PL/SQL. Utilisation de PL/SQL

PL/SQL. Pourquoi PL/SQL? Introduction. Principales caractéristiques de PL/SQL. Utilisation de PL/SQL PL/SQL Avertissement : cette partie du cours n est qu un survol du langage PL/SQL, utile pour écrire des procédures stockées simples Elle laisse de côté de nombreuses fonctionnalités du langage Université

Plus en détail

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

PL/SQL INTRODUCTION Introduction à PL/SQ Les procédures, les fonctions et les packages Les triggers

PL/SQL INTRODUCTION Introduction à PL/SQ Les procédures, les fonctions et les packages Les triggers PL/SQL INTRODUCTION Introduction à PL/SQ Les procédures, les fonctions et les packages Les triggers Département d informatique Collège Lionel Groulx. Préparé par Saliha Yacoub Table des matières. Introduction...

Plus en détail

Programmer avec PL/SQL

Programmer avec PL/SQL Programmer avec PL/SQL École Supérieure de la Statistique et de l Analyse de l Information (ESSAI) Avertissement : cette partie du cours n est qu un survol du langage PL/SQL, utile pour écrire des procédures

Plus en détail

Les déclencheurs (Triggers) avec Oracle

Les déclencheurs (Triggers) avec Oracle 1) Introduction 2) Événements déclenchant 3) Mécanisme général 4) Privilèges systèmes 5) Syntaxe 6) Nom du déclencheur 7) Option BEFORE ou AFTER 8) Déclencheur LMD 9) Déclencheur LDD 10) Déclencheur d'instance

Plus en détail

TD BD dynamique. DECLARE déclaration des variables, constantes, exceptions et curseurs locaux au bloc

TD BD dynamique. DECLARE déclaration des variables, constantes, exceptions et curseurs locaux au bloc TD BD dynamique Un déclencheur est utilisé pour complémenter les contraintes d'intégrité de la base. Une partie des contraintes ne peut souvent pas être définie avec les fonctionnalités décrites jusqu'ici.

Plus en détail

Bases de données Programmation PL/SQL. LP TOSPI, IUT Montluçon, Université Blaise Pascal 2010-2011 Laurent d Orazio

Bases de données Programmation PL/SQL. LP TOSPI, IUT Montluçon, Université Blaise Pascal 2010-2011 Laurent d Orazio Bases de données Programmation PL/SQL LP TOSPI, IUT Montluçon, Université Blaise Pascal 2010-2011 Laurent d Orazio Plan I. Vue d ensemble et principes de fonctionnement II. Eléments de programmation III.

Plus en détail

PL/SQL Procedural Language Extensions to SQL

PL/SQL Procedural Language Extensions to SQL PL/SQL Procedural Language Extensions to SQL Il permet : - l'utilisation d'un sous-ensemble du langage SQL, - la mise en œuvre de structures procédurales, - la gestion des erreurs. L'une des plus importantes

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

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

Oracle : Langage PL/SQL

Oracle : Langage PL/SQL 1 Introduction à PL/SQL Oracle : Langage PL/SQL PL/SQL est un langage de programmation procédural et structuré. 1.1 Langage de programmation Il contient un ensemble d'instructions permettant de mettre

Plus en détail

Conception de bases de données relationnelles

Conception de bases de données relationnelles Conception de bases de données relationnelles Langage PL/(pg)SQL Marie Szafranski 2015-2016 ensiie 1 2015-2016 ensiie 1 Aperçu de PL/(pg)SQL Aperçu de PL/(pg)SQL PL/SQL : Procedural Language for SQL (Oracle)

Plus en détail

Cours PL/SQL. Cours PL/SQL. E.Coquery. emmanuel.coquery@liris.cnrs.fr

Cours PL/SQL. Cours PL/SQL. E.Coquery. emmanuel.coquery@liris.cnrs.fr Cours PL/SQL E.Coquery emmanuel.coquery@liris.cnrs.fr Programmation au sein du SGBD Pourquoi? Les contraintes prédéfinies ne sont pas toujours suffisantes. Exemple : tout nouveau prix pour un CD doit avoir

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

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

BD50. TP5 : Développement PL/SQL Avec Oracle SQL Developer. Gestion Commerciale

BD50. TP5 : Développement PL/SQL Avec Oracle SQL Developer. Gestion Commerciale Département Génie Informatique BD50 TP5 : Développement PL/SQL Avec Oracle SQL Developer Gestion Commerciale Françoise HOUBERDON & Christian FISCHER Copyright Avril 2007 Présentation de la gestion commerciale

Plus en détail

CC30 Certificat de compétence Conception, développement et animation de sites Web

CC30 Certificat de compétence Conception, développement et animation de sites Web CC30 Certificat de compétence Conception, développement et animation de sites Web UE RSX053 Introduction aux bases de données Séance 9 1 Table des matières 1. PLSQL...3 1.1. Présentation...3 1.2. L utilité

Plus en détail

Triggers Introduction à PL-SQL Céline Rouveirol. d'après les transparents de Jeff Ullman http://infolab.stanford.edu/~ullman/

Triggers Introduction à PL-SQL Céline Rouveirol. d'après les transparents de Jeff Ullman http://infolab.stanford.edu/~ullman/ Triggers Introduction à PL-SQL Céline Rouveirol d'après les transparents de Jeff Ullman http://infolab.stanford.edu/~ullman/ 1 Triggers: Motivation Les vérifications de contraintes (attribut ou n-uplet)

Plus en détail

Bases de données. Cours 6 : Introduction à des notions avancées (Index, Déclencheurs, Transactions) Nicolas DURAND

Bases de données. Cours 6 : Introduction à des notions avancées (Index, Déclencheurs, Transactions) Nicolas DURAND Bases de données Cours 6 : Introduction à des notions avancées (Index, Déclencheurs, Transactions) Nicolas DURAND Polytech Marseille Université d Aix-Marseille 2012-2013 Nicolas DURAND Bases de données

Plus en détail

07/02/2011 (SQL/PSM) MySQL SQL/PSM. Application. Bloc SQL/PSM SQL SQL SQL SQL SQL IF... THEN SQL ELSE SQL END IF ; SQL

07/02/2011 (SQL/PSM) MySQL SQL/PSM. Application. Bloc SQL/PSM SQL SQL SQL SQL SQL IF... THEN SQL ELSE SQL END IF ; SQL (SQL/PSM) 1 Extension de SQL ( PSM ) Langage de programmation procédural Clauses SQL intégrées dans le code procédural SQL/PSM est donc un langage de programmation, propre à mysql : Intégre directement

Plus en détail

PL/SQL. Richard CHBEIR Email : richard.chbeir@u-bourgogne.fr

PL/SQL. Richard CHBEIR Email : richard.chbeir@u-bourgogne.fr PL/SQL Richard CHBEIR Email : richard.chbeir@u-bourgogne.fr Plan Introduction Environnements Bloc PL/SQL Variables Traitements conditionnels Traitements répétitifs Curseurs Gestion des erreurs Fonctions

Plus en détail

On peut considérer les vues comme des «tables virtuelles» : leur contenu est constitué seulement au moment de la demande d exécution de cette vue.

On peut considérer les vues comme des «tables virtuelles» : leur contenu est constitué seulement au moment de la demande d exécution de cette vue. SQL Ch 9 DDL Vues, PL/SQL, procédures,... I. INTRODUCTION... 1 II. LES VUES (ANGLAIS «VIEWS»)... 1 A. CREER UNE VUE : CREATE VIEW... 1 B. SUPPRIMER UNE VUE DROP VIEW... 3 III. LANGAGE PL/SQL, PROCEDURES

Plus en détail

Le langage PL/SQL 2 - Compléments

Le langage PL/SQL 2 - Compléments 1. Rappels de PL/SQL 2. Les Exceptions Le langage PL/SQL 2 - Compléments Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Septembre 2015 3. Les

Plus en détail

Développer en PL/SQL. Sommaire du cours

Développer en PL/SQL. Sommaire du cours Sommaire du cours Module 1 Introduction et Rappels Module 2 Eléments de langage PL/SQL Module 3 Accès à la Base de données Module 4 Traitements stockés Module 5 Gestion des exceptions Module 6 - Compléments

Plus en détail

PL/SQL. Présenté par Abdoul Aziz Ciss Dept GIT EPT Email: aaciss@ept.sn. 1 PL/SQL --AA Ciss

PL/SQL. Présenté par Abdoul Aziz Ciss Dept GIT EPT Email: aaciss@ept.sn. 1 PL/SQL --AA Ciss PL/SQL Présenté par Abdoul Aziz Ciss Dept GIT EPT Email: aaciss@ept.sn 1 Contenu Introduction au PL/SQL Variables PL/SQL Créer des sections exécutables Interactions avec le serveur Oracle Structures de

Plus en détail

Mostafa Hanoune. Traitement des Exceptions

Mostafa Hanoune. Traitement des Exceptions Mostafa Hanoune 8 Traitement des Exceptions Objectifs A la fin de ce chapitre, vous saurez : Définir des exceptions PL/SQL Reconnaître les exceptions non gérées Lister et utiliser les différents types

Plus en détail

2013-2014 N.EL FADDOULI 39 2013-2014 N.EL FADDOULI 40. Page 2

2013-2014 N.EL FADDOULI 39 2013-2014 N.EL FADDOULI 40. Page 2 Introduction Bloc PL/SQL Déclaration des variable Structure de contrôle Curseurs Les exceptions PL /SQL Les fonctions et procédures Les packages Les triggers 1 Les exceptions Définition Exceptions prédéfinies

Plus en détail

DECLARE : n'est nécessaire que si il y a des déclarations locales au bloc.

DECLARE : n'est nécessaire que si il y a des déclarations locales au bloc. Introduction Utilisation de PL/SQL : Procedural Language : langage de développement pour Oracle PL/SQL est un langage hôte, ce qui signifie qu'il peut accueillir des ordres SQL, il est proche du Pascal

Plus en détail

Solutions des exercices du chapitre 6 selon la syntaxe du dialecte Oracle

Solutions des exercices du chapitre 6 selon la syntaxe du dialecte Oracle Solutions des exercices du chapitre 6 selon la syntaxe du dialecte Oracle 1. a Ajouter un CHECK sur la table LigneCommande ALTER TABLE LigneCommande ADD (CONSTRAINT XXX CHECK (noarticle

Plus en détail

PL/SQL 2014-2015. Bases de données 2

PL/SQL 2014-2015. Bases de données 2 Cours 10 : PL/SQL Procedural Language/SQL Blocs, variables, instructions, structures de contrôle, curseurs, gestion des erreurs, procédures/fonctions stockées, packages, triggers PL/SQL Chapitre 3 de la

Plus en détail

2008-2009 -JACQUES THOORENS - HTTP://WWW.THOORENS.NET. Quatrième partie. Focus sur Oracle

2008-2009 -JACQUES THOORENS - HTTP://WWW.THOORENS.NET. Quatrième partie. Focus sur Oracle 2008-2009 -JACQUES THOORENS - HTTP://WWW.THOORENS.NET Quatrième partie Focus sur Oracle 165 2008-2009 -JACQUES THOORENS - HTTP://WWW.THOORENS.NET Chapitre 12 Programmation PL/SQL 2008-2009 -JACQUES THOORENS

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

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

1/44. I Programming Language with SQL. I Langage de programmation procédural ADA like. I Langage propriétaire mais qui a inspiré la norme SQL3

1/44. I Programming Language with SQL. I Langage de programmation procédural ADA like. I Langage propriétaire mais qui a inspiré la norme SQL3 Généralités 1/44 2/44 Anne-Cécile Caron Présentation Programming Language with SQL Langage de programmation procédural ADA like Langage propriétaire mais qui a inspiré la norme SQL3 Adapté à la manipulation

Plus en détail

Université M Hamed Bougara Boumerdès, Faculté des Sciences, Département Informatique SQL PROCEDURAL

Université M Hamed Bougara Boumerdès, Faculté des Sciences, Département Informatique SQL PROCEDURAL Université M Hamed Bougara Boumerdès, Faculté des Sciences, Département Informatique Cours (Master 1) : Bases de Données Avancées, (Responsable : A. AIT BOUZIAD) SQL PROCEDURAL Dans les différentes parties

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

IFT3030 Base de données. Chapitre 6 SQL. Plan du cours

IFT3030 Base de données. Chapitre 6 SQL. Plan du cours IFT3030 Base de données Chapitre 6 SQL Plan du cours Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancés Modèle des

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 4 : PL/SQL : ou comment faire plus avec ORACLE 2ème partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Exceptions Rappels bloc PL/SQL Definition

Plus en détail

Bases de données avancées Triggers

Bases de données avancées Triggers Bases de données avancées Triggers Wies law Zielonka 12 décembre 2009 Résumé Ces notes ne sont pas corrigées, mais peut-être vous les trouverez quand même utiles pour préparer l examen ou projet. Ne pas

Plus en détail

UMBB, Département Informatique Cours Master 1 BDA Responsable : A. AIT-BOUZIAD Le 06 Décembre 2011 CHAPITRE 2 CONTRÖLE DE DONNEES DANS SQL

UMBB, Département Informatique Cours Master 1 BDA Responsable : A. AIT-BOUZIAD Le 06 Décembre 2011 CHAPITRE 2 CONTRÖLE DE DONNEES DANS SQL UMBB, Département Informatique Cours Master 1 BDA Responsable : A. AIT-BOUZIAD Le 06 Décembre 2011 CHAPITRE 2 CONTRÖLE DE DONNEES DANS SQL I Gestion des utilisateurs et de leurs privilèges I.1 Gestion

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 2 : Contrôle des accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Les privilèges Définitions 2 Rôles Définition de création d attribution de

Plus en détail

Notes de cours. PL/SQL (Oracle 11g) Hakim Benameurlaine. Décembre 2012. 2012 Hakim Benameurlaine 1

Notes de cours. PL/SQL (Oracle 11g) Hakim Benameurlaine. Décembre 2012. 2012 Hakim Benameurlaine 1 Notes de cours PL/SQL (Oracle 11g) Hakim Benameurlaine Décembre 2012 2012 Hakim Benameurlaine 1 Table of Contents 1 PRÉSENTATION DU PL/SQL... 5 1.1 Bloc PL/SQL... 5 1.2 Les variables... 7 1.3 Les variables

Plus en détail

Déclencheurs Bases de Données TRIGGER. C. Bonnet // R. Chapuis Cours PL/SQL d après cours ORACLE - OAI

Déclencheurs Bases de Données TRIGGER. C. Bonnet // R. Chapuis Cours PL/SQL d après cours ORACLE - OAI Déclencheurs Bases de Données TRIGGER C. Bonnet // R. Chapuis Cours PL/SQL d après cours ORACLE - OAI Généralités Un déclencheur est un traitement (sous forme de bloc PL/SQL) qui s exécute automatiquement

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

Bases de données. Jean-Yves Antoine. VALORIA - Université François Rabelais Jean-Yves.Antoine@univ-tours.fr. L3 S&T mention Informatique

Bases de données. Jean-Yves Antoine. VALORIA - Université François Rabelais Jean-Yves.Antoine@univ-tours.fr. L3 S&T mention Informatique Bases de données Jean-Yves Antoine VALORIA - Université François Rabelais Jean-Yves.Antoine@univ-tours.fr L3 S&T mention Informatique Bases de Données IUP Vannes, UBS J.Y. Antoine 1 Bases de données SGBD

Plus en détail

Oracle Database 10g: Les fondamentaux du langage SQL I

Oracle Database 10g: Les fondamentaux du langage SQL I Oracle University Appelez-nous: +33 (0) 1 57 60 20 81 Oracle Database 10g: Les fondamentaux du langage SQL I Durée: 3 Jours Description Ce cours offre aux étudiants une introduction à la technologie de

Plus en détail

Création d'une base de données Oracle

Création d'une base de données Oracle TP1 Création d'une base de données Oracle MASTER INFORMATIQUE I2A Année universitaire 2006-2007 RAPPORT DE PROJET (Document de 15 pages) Encadrant : Rosaire Amore Participants : Erik Allais Abdel Rafrafi

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

2.1/ Les privilèges sous oracle

2.1/ Les privilèges sous oracle LP Informatique(DA2I), UF7 : Administration Système, Réseaux et Base de données 13/12/2007, Enseignant : M. Nakechbnadi, mail : nakech@free.fr Première parie : Administration d une BD Chapitre 2 : Transaction,

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

PL/SQL. Procedural Language/ Structured Query Language. UPMC - UFR 919 Ingéniérie - Introduction aux Bases de Données Relationnelles (BD-2I009) 1

PL/SQL. Procedural Language/ Structured Query Language. UPMC - UFR 919 Ingéniérie - Introduction aux Bases de Données Relationnelles (BD-2I009) 1 PL/SQL Procedural Language/ Structured Query Language UPMC - UFR 919 Ingéniérie - Introduction aux Bases de Données Relationnelles (BD-2I009) 1 Plan Introduction Structure d'un programme Les variables

Plus en détail

1.1/Architecture des SGBD Les architectures physiques de SGBD sont très liées au mode de répartition.

1.1/Architecture des SGBD Les architectures physiques de SGBD sont très liées au mode de répartition. LP Informatique(DA2I), F7 : Administration Système, Réseaux et Base de données 15/11/2007, Enseignant : M. Nakechbnadi, mail : nakech@free.fr Première parie : Administration d une BD Chapitre 1 : Architecture

Plus en détail

Administration des bases de données

Administration des bases de données Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données III Protection des données : contrôles d accès OBJECTIFS 3.1. NOTIONS 3.1.1.

Plus en détail

Stéphane Bortzmeyer

Stéphane Bortzmeyer <stephane+blog@bortzmeyer.org> De l intérêt des règles d intégrité dans un SGBD Stéphane Bortzmeyer Première rédaction de cet article le 17 janvier 2008 Il semble que l utilisation des règles d intégrité

Plus en détail

SQL Les fondamentaux du langage (2ième édition)

SQL Les fondamentaux du langage (2ième édition) Introduction 1. Un peu d'histoire 11 2. Les normes SQL 12 3. Description rapide du modèle relationnel 14 3.1 Principaux concepts du modèle relationnel 15 3.2 Principales règles 16 4. Les opérateurs en

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

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

Apprendre le langage SQL - Le DDL - 1 / 34 - Apprendre le langage SQL par l exemple Partie 1 : le DDL

Apprendre le langage SQL - Le DDL - 1 / 34 - Apprendre le langage SQL par l exemple Partie 1 : le DDL Apprendre le langage SQL - Le DDL - 1 / 34 - Apprendre le langage SQL par l exemple Partie 1 : le DDL 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 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

1 introduction : SQL server

1 introduction : SQL server Lycée lissan eddine ibn_elkhatib laayoune SGBDR 1 Pr H.LAARAJ 2015/2016 2 1 introduction : SQL server 1 3 SQL server SQL-Server est un SGBDR Client-Serveur qui utilise TRANSACT-SQL dans ses transactions.

Plus en détail

Les utilisateurs correspondent aux comptes (login et mot de passe) permettant de demander une connexion au SGBD (une personne ou une application).

Les utilisateurs correspondent aux comptes (login et mot de passe) permettant de demander une connexion au SGBD (une personne ou une application). SQL Ch 10 DCL Utilisateurs, privilèges, rôles I. INTRODUCTION... 1 II. LES UTILISATEURS ( «USERS»)... 1 A. CREER UN UTILISATEUR : USER... 1 B. MODIFIER UN UTILISATEUR : ALTER USER... 2 C. SUPPRIMER UN

Plus en détail

Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1

Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1 Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1 Plan Généralités Langage de Définition des (LDD) Langage de Manipulation

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

Introduction au langage SQL

Introduction au langage SQL Introduction au langage SQL 1. Description SQL est un acronyme pour Structured Query Language qui a été conçu par IBM, et a succédé au langage SEQUEL. C est maintenant le langage le plus utilisé dans les

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

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

SQL : Origines et Evolutions

SQL : Origines et Evolutions SQL : Origines et Evolutions SQL est dérivé de l'algèbre relationnelle et de SEQUEL Il a été intégré à SQL/DS, DB2, puis ORACLE, INGRES, Il existe trois versions normalisées, du simple au complexe : SQL1

Plus en détail

2 ème PARTIE : LE LANGAGE SQL

2 ème PARTIE : LE LANGAGE SQL 2 ème PARTIE : LE LANGAGE SQL PLAN : I. Le langage de manipulation des données II. Le langage de définition des données III. Administration de la base de données IV. Divers (HORS PROGRAMME) Introduction:

Plus en détail

Théorie et pratique de Base de données Oracle M.Boubetra 1 Système d Information But : gérer un ensemble d informations Stockage Consultation Modification Suppression Edition 2 Conception d un système

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

420-PK6-SL Banques de données Avancées. la suite

420-PK6-SL Banques de données Avancées. la suite 420-PK6-SL Banques de données Avancées PL/SQL la suite ENTRÉES AU CLAVIER Pour quérir une valeur au clavier lors de l'exécution d'une fonction SqlPlusfournis l'opérateur «&». PL/SQL n'a pas de mécanisme

Plus en détail

Programmation orientée objet en langage JAVA

Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe

Plus en détail

SQL (suite) Manipulation: CRUD Insertion, Suppression, mise à jour, lecture Triggers Vues. Bases de données

SQL (suite) Manipulation: CRUD Insertion, Suppression, mise à jour, lecture Triggers Vues. Bases de données SQL (suite) Manipulation: CRUD Insertion, Suppression, mise à jour, lecture Triggers Vues Manipulation CRUD INSERT INTO (Create) pour insérer des tuple SELECT FROM (Read) pour lire des tuples UPDATE (Update)

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

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

Cours 4 : Tables système, contrôle des accès et synonymes

Cours 4 : Tables système, contrôle des accès et synonymes Cours 4 : Tables système, contrôle des accès et synonymes Tables système Les informations du dictionnaire de données (tables système) sont accessibles en consultation seule, au moyen de vues Quatre classes

Plus en détail

Langage de Requêtes. talel@infres.enst.fr

Langage de Requêtes. talel@infres.enst.fr Langage de Requêtes talel@infres.enst.fr Supports de cours : (1) Database Management Systems, R. Ramakrishnan and J. Gehrke, ed. McGrawHill, 2000. (2) Bases de Données, G. Gardarin, ed. Eyrolles, 2001.

Plus en détail

Modèle relationnel Création et modification des relations en SQL

Modèle relationnel Création et modification des relations en SQL Modèle relationnel Création et modification des relations en SQL ENT - Clé sql2009 BD - Mírian Halfeld-Ferrari p. 1 Insertion dans une relation Pour insérer un tuple dans une relation: insert into Sailors

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

Le langage SQL : Le Langage de Contrôle des Données (LCD)

Le langage SQL : Le Langage de Contrôle des Données (LCD) T-GSI STAGE RENOVATION - SQL.Chapitre 5 - Le langage SQL : Le Langage de Contrôle des Données (LCD) Sources du document : Livre bible Oracle 9i, J. Gabillaud, Editions Eni ; Support Oracle ; Documentation

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

3. Initialiser m2 et m3 à l aide de ce constructeur, puis afficher le contenu de la table Meuble à l aide d une requête SQL.

3. Initialiser m2 et m3 à l aide de ce constructeur, puis afficher le contenu de la table Meuble à l aide d une requête SQL. Base de données Département Informatique et Statistique, Faculté de SEG, Université Lumière Lyon 2 M2 Informatique spécialité IDS-IIDEE Année 2011-2012 Bases de données objets TD n 4 J. Darmont (http:eric.univ-lyon2.fr~jdarmont),

Plus en détail

Cours 2 : SQL Structured Query Language

Cours 2 : SQL Structured Query Language Cours 2 : SQL Structured Query Language SQL Langage permettant de définir, manipuler et contrôler les données d une BD relationnelle Objet d une norme de l Institut National Américain de Normalisation

Plus en détail

MySQL 5 (versions 5.1 à 5.6) Guide de référence du développeur (Nouvelle édition)

MySQL 5 (versions 5.1 à 5.6) Guide de référence du développeur (Nouvelle édition) Avant-propos 1. Les objectifs de ce livre 13 2. Les principaux sujets qu'aborde ce livre 13 3. À qui s adresse ce livre? 14 4. Les pré-requis 14 Introduction à MySQL 1. Introduction aux bases de données

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

SQL et Bases de données relationnelles. November 26, 2013

SQL et Bases de données relationnelles. November 26, 2013 November 26, 2013 SQL : En tant que langage d interrogation En tant que langage de mise à jour En tant que langage de définition de données Langages de requête Langages qui permettent d interroger la BD

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

Tutoriel de création d une application APEX

Tutoriel de création d une application APEX Tutoriel de création d une application APEX 1 - Objectif On souhaite créer une application APEX destinée à gérer des dépenses et recettes. Ces dépenses et recettes seront classées par catégories. A partir

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

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

2011 Hakim Benameurlaine 1

2011 Hakim Benameurlaine 1 Table des matières 1 PRÉSENTATION DE TSQL... 2 1.1 Historique... 2 1.2 Les différents types d instructions... 2 1.2.1 Langage de Définition des Données... 2 1.2.2 Langage de Manipulation des Données...

Plus en détail

1.1 Création d'une table : CREATE TABLE

1.1 Création d'une table : CREATE TABLE SQL : LDD et LMD SQL ne se résume pas aux requêtes d'interrogation d'une base. Ce langage permet aussi de : - créer des tables - de modifier la structure de tables existantes - de modifier le contenu des

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

Bases de données. Ecole Marocaine des Sciences de l Ingénieur. Yousra Lembachar

Bases de données. Ecole Marocaine des Sciences de l Ingénieur. Yousra Lembachar Bases de données Ecole Marocaine des Sciences de l Ingénieur Yousra Lembachar Déclencheurs Qu est-ce qu un déclencheur? Un déclencheur ou une règle ECA est de la forme: «Quand un Evénement se produit,

Plus en détail

TD 2 ------------------------------------------------------------------------------------------

TD 2 ------------------------------------------------------------------------------------------ TD 2 ------------------------------------------------------------------------------------------ Prenez le fichier init.ora dans $ORACLE_HOME/dbs faites une copie en inittest.ora ouvrir le fichier inittest.ora

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

TP8 - Gestion Transactionnelle

TP8 - Gestion Transactionnelle TP8 - Gestion Transactionnelle MIAGE #3-2006/2007 November 29, 2006 1 Transactions sous Oracle Il est nécéssaire pour ce T.P. de travailler par binômes connectés simultanement (sous SQL*PLUS) sur deux

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