Technologie Oracle : Extensions procédurales à SQL

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

Download "Technologie Oracle : Extensions procédurales à SQL"

Transcription

1 Conception de bases de données Technologie Oracle : Extensions procédurales à SQL STÉPHANE CROZAT Paternité - Partage des Conditions Initiales à l'identique : juillet 0

2 Table des matières I - Théorie : Oracle A. Introduction à Oracle.... Exemple complet BD "Gestion des intervenants".... Présentation.... Particularités LDD.... Dictionnaire de données.... Les séquences.... Particularités LMD.... Fonctions SQL à connaître.... Fonctions de traitement des dates.... SQL*Plus Accès inter-schémas.... Fenêtrage des données... B. Le langage procédural PL/SQL.... Présentation du PL/SQL.... Structure d'un bloc PL/SQL.... Variables.... Affichage à l'écran.... Structures de contrôle.... Blocs PL/SQL : Procédure, fonction, bloc anonyme.... Affectation par une requête SELECT INTO.... Exercice.... Curseurs PL/SQL Exercice...0. Gestion d'exception...0. Durée de tournage d'un film... C. Les triggers Principes des triggers... Manipulation des anciennes et nouvelles valeurs dans les triggers... Prédicats d'événement au sein des triggers... Exercice... D. Prise en main de Oracle SQL Developer Installation de SQL Developer... Connexion avec SQL Developer... Naviguer dans le catalogue de SQL Developer... Exécuter des requêtes SQL avec SQL Developer... Écrire du PL/SQL avec SQL Developer...0 Exécution de fichiers SQL...

3 II - Pratique : SQL sous Oracle A. Migration d'une base Access vers Oracle... B. Séquence... C. Extension Médiathèque... D. Transactions... E. Questions avancées en SQL... F. Maintenance de la base... G. Vue... III - Pratique : PL/SQL sous Oracle A. Fonctions stockées... B. Curseurs... C. Triggers... IV - Application : Oracle A. Dictionnaire de données... B. SQL sous Oracle... V - Test : Oracle VI - Questions-réponses sur Oracle VII - En résumé : Oracle VIII - Bibliographie commentée sur Oracle Questions de synthèse Solution des exercices Solution des exercices Signification des abréviations Bibliographie Webographie Index

4 Théorie : Oracle

5 I- Théorie : Oracle I Introduction à Oracle Le langage procédural PL/SQL Les triggers Prise en main de Oracle SQL Developer A. Introduction à Oracle Objectifs Utiliser un SGBD professionnel largement répandu Expérimenter l'usage du langage SQL Savoir créer et interroger une base de données sous Oracle Connaître les commandes de base de SQL*Plus Savoir utiliser le dictionnaire de données. Exemple complet BD "Gestion des intervenants" Exemple : Modèle conceptuel MCD "Cours et Intervenants" Exemple : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin)

6 Théorie : Oracle Exemple 0 CREATE TABLE tintervenant ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL, poste number() ); CREATE TABLE tcours ( pkannee number() check (pkannee>000 and pkannee<00), pknum number(), titre varchar(0), type char() CHECK (type='c' or type='td' or type='tp') NOT NULL, fkintervenant varchar(0) REFERENCES tintervenant(pknom) NOT NULL, debut date, fin date, PRIMARY KEY(pkannee, pknum) ); Exemple 0 : Création des tables : Utilisation du catalogue SELECT table_name FROM user_tables; DESCRIBE tcours; TABLE_NAME TINTERVENANT TCOURS Name PKANNEE PKNUM TITRE TYPE FKINTERVENANT DEBUT FIN Exemple Null NOT NULL NOT NULL Type NUMBER() NUMBER() VARCHAR(0) NOT NULL CHAR() NOT NULL VARCHAR(0) DATE DATE : Création d'une séquence CREATE SEQUENCE tcoursseq; SEQUENCE_NAME TCOURSSEQ SELECT sequence_name FROM user_sequences; Exemple : Initialisation des données INSERT INTO tintervenant (pknom, prenom, poste) VALUES ('CROZAT', 'Stéphane', ''); INSERT INTO tcours (pkannee, pknum, titre, type, debut, fkintervenant) VALUES ('00', tcoursseq.nextval, 'Introduction','C', '0-JAN00', 'CROZAT');

7 Théorie : Oracle 0 INSERT INTO tcours (pkannee, pknum, titre, type, debut, fkintervenant) VALUES ('00', tcoursseq.nextval, 'Modélisation','TD', '0-JAN00', 'CROZAT'); SELECT pknum, pkannee, titre FROM tcours; PKNUM PKANNEE TITRE Introduction 00 Modélisation Exemple : Question avec concaténation SELECT trim(prenom) ' ' trim(pknom) ' (' trim(poste) ')' FROM tintervenant; TRIM(PRENOM) '' TRIM(PKNOM) '(' TRIM(POSTE) ')' STEPHANE CROZAT () Exemple : Question avec CASE SELECT pknum, CASE WHEN type='c' THEN 'Cours' WHEN type='td' THEN 'Travaux dirigés' END AS type_label, debut FROM tcours PKNUM ---- Exemple TYPE_LABEL Cours Travaux dirigés DEBUT JAN-0 0-JAN-0 : Question avec date SELECT pknum, TO_CHAR(debut, 'fmday') FROM tcours; PKNUM ---- Exemple TO_CHAR(DEBUT,'FMDAY') monday tuesday : Insert avec date INSERT INTO tcours (pkannee, pknum, titre, type, debut, fkintervenant) VALUES ('00', tcoursseq.nextval, 'Relationnel','C', TO_DATE('00-00','DD-MM-YYYY'), 'CROZAT'); SELECT debut FROM tcours; DEBUT

8 Théorie : Oracle JAN-0 0-JAN-0 0-JAN-0 Exemple 0 0 CREATE OR REPLACE FUNCTION fintervient (pintervenant varchar) RETURN varchar IS vnbinterventions number; SELECT Count(fkintervenant) INTO vnbinterventions FROM tcours WHERE fkintervenant=pintervenant; IF vnbinterventions > 0 THEN RETURN 'OUI'; ELSE RETURN 'NON'; END IF; END; / INSERT INTO tintervenant(pknom, prenom) VALUES ('JOUGLET', 'Antoine'); SELECT pknom, fintervient(pknom) AS I FROM tintervenant; PKNOM CROZAT JOUGLET Exemple : Fonction et affectation par une requête I -----OUI NON : Curseur CREATE OR REPLACE PROCEDURE pafficheintervenants IS CURSOR cintervenants IS SELECT pknom, prenom FROM tintervenant; vnom tintervenant.pknom%type; vprenom tintervenant.prenom%type; DBMS_OUTPUT.PUT_LINE('** Liste des intervenants **'); OPEN cintervenants; LOOP FETCH cintervenants INTO vnom, vprenom; EXIT WHEN cintervenants%notfound; DBMS_OUTPUT.PUT_LINE('-' INITCAP(TRIM(vPrenom)) ' ' INITCAP(TRIM(vNom))); END LOOP; END; / CREATE OR REPLACE PROCEDURE pafficheintervenants IS CURSOR cintervenants IS SELECT pknom, prenom FROM tintervenant; DBMS_OUTPUT.PUT_LINE('** Liste des intervenants **'); FOR i IN cintervenants LOOP DBMS_OUTPUT.PUT_LINE('-' INITCAP(TRIM(i.prenom)) ' ' INITCAP(TRIM(i.pknom))); END LOOP;

9 Théorie : Oracle 0 END; / SET SERVEROUTPUT ON; pafficheintervenants; DBMS_OUTPUT.PUT_LINE(''); pafficheintervenants; END; / ** Liste des intervenants ** -Stéphane Crozat -Antoine Jouglet ** Liste des intervenants ** -Stéphane Crozat -Antoine Jouglet Exemple 0 0 CREATE OR REPLACE PROCEDURE pinsertintervenant (pnom varchar, pprenom varchar) IS INSERT INTO tintervenant (pknom, prenom) VALUES (pnom, pprenom); EXCEPTION WHEN DUP_VAL_ON_INDEX then DBMS_OUTPUT.PUT_LINE('Intervenant déjà existant : ' pnom); WHEN OTHERS THEN RAISE; END; / SET SERVEROUTPUT ON DBMS_OUTPUT.PUT_LINE('*** Programme indépendant ***'); pinsertintervenant('jouglet', 'Antoine'); pinsertintervenant('vincent', 'Antoine'); pafficheintervenants; END; / *** Programme indépendant *** Intervenant déjà existant : JOUGLET ** Liste des intervenants ** -Stéphane Crozat -Antoine Jouglet -Antoine Vincent Exemple : Gestion d'exception : Trigger de calcul de valeur dérivée CREATE OR REPLACE TRIGGER trcours BEFORE INSERT OR UPDATE OF debut ON tcours FOR EACH ROW :new.fin := :new.debut+; END; / UPDATE tcours

10 Théorie : Oracle 0 SET debut=to_date('-0-00','dd-mm-yyyy') WHERE pknum=; INSERT INTO tcours (pkannee, pknum, titre, type, fkintervenant, debut) VALUES ('00', tcoursseq.nextval, 'SQL', 'C', 'CROZAT', TO_DATE('0-00','DD-MM-YYYY')); SELECT pknum, debut, fin FROM tcours; PKNUM ---- Exemple 0 0 DEBUT JAN-0 0-JAN-0 -JAN-0 -JAN-0 FIN JAN-0 -JAN-0 : Trigger d'archivage de données CREATE TABLE tintervenantsav ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL ); CREATE OR REPLACE TRIGGER trintervenant BEFORE DELETE OR INSERT ON tintervenant FOR EACH ROW IF DELETING THEN INSERT INTO tintervenantsav VALUES (:old.pknom, :old.prenom); ELSIF INSERTING THEN DELETE FROM tintervenantsav WHERE pknom = :new.pknom; END IF; END; / DELETE FROM tcours; DELETE FROM tintervenant; SELECT * FROM tintervenantsav; PKNOM CROZAT JOUGLET VINCENT INSERT INTO tintervenant (pknom, prenom, poste) VALUES ('CROZAT', 'Stéphane', ''); PKNOM JOUGLET VINCENT PRENOM Stéphane Antoine Antoine SELECT * FROM tintervenantsav; PRENOM Antoine Antoine. Présentation Le premier SGBDR commercialisé en Il occupe la première place dans le marché des SGBDR (avec IBM)

11 Théorie : Oracle Évolutions du produit : depuis la version, architecture client-serveur depuis la version, le serveur est objet-relationnel depuis la version i, intégration de couches applicatives Web et multimédia depuis la version i, intégration de types de données XML, extension des couches Web et introduction de fonctions de datawarehousing et de business intelligence Version actuelle (depuis 0) : Il fonctionne sous Unix, Linux, Windows. Site officiel en France : Il est possible de télécharger gratuitement Oracle à des fins de développement et de prototypage : Particularités LDD Type de données NUMBER(e,d) DATE CHAR(l), VARCHAR(lmax) LONG, CLOB, BLOB, BFILE Remarque Il n'y a pas de type de données booléennes. Remarque : varchar et varchar varchar et varchar se comportent exactement de la même façon pour le moment ; mais Oracle prévoit d'utiliser différemment varchar dans le futur. Oracle recommande de ne pas utiliser varchar, mais d'utiliser varchar. Conseil : Pour entrer dans le détail Vous pouvez consulter Oracle : SQL [w_loria.fr/~roegel()], page et, pour avoir une description plus détaillée des types de données. Exemple tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple : BD "Gestion des intervenants" : Schéma relationnel : BD "Gestion des intervenants" : Création des tables CREATE TABLE tintervenant ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL, poste number()

12 Théorie : Oracle 0 ); CREATE TABLE tcours ( pkannee number() check (pkannee>000 and pkannee<00), pknum number(), titre varchar(0), type char() CHECK (type='c' or type='td' or type='tp') NOT NULL, fkintervenant varchar(0) REFERENCES tintervenant(pknom) NOT NULL, debut date, fin date, PRIMARY KEY(pkannee, pknum) );. Dictionnaire de données Rappel Le dictionnaire des données contient la description des objets créés et maintenus par le serveur Oracle. Syntaxe : Lister les objets appartenant à l'utilisateur SELECT SELECT SELECT SELECT... * * * * FROM FROM FROM FROM user_tables; user_sequences; user_views; user_procedures; Syntaxe : Décrire un objet describe nom_objet Complément Afficher les différents types d'objets appartenant à l'utilisateur : SELECT object_type FROM user_objects; Afficher la liste des objets appartenant à l'utilisateur : SELECT * FROM user_catalog; Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple catalogue : BD "Gestion des intervenants" : Utilisation du SELECT table_name FROM user_tables; DESCRIBE tcours; TABLE_NAME TINTERVENANT TCOURS

13 Théorie : Oracle 0 Name PKANNEE PKNUM TITRE TYPE FKINTERVENANT DEBUT FIN Null NOT NULL NOT NULL Type NUMBER() NUMBER() VARCHAR(0) NOT NULL CHAR() NOT NULL VARCHAR(0) DATE DATE. Les séquences Définition : Séquence Les séquences permettent de générer automatiquement des numéros uniques (en général pour créer une valeur de clé primaire artificielle). Elles remplissent une fonction de compteur : mémoriser une valeur retourner la valeur incrémenter la valeur Remarque Les séquences sont des objets indépendants des tables. Syntaxe : Création de séquence CREATE SEQUENCE nom_sequence [START WITH x] Syntaxe : Valeur d'une séquence nom_sequence.currval Syntaxe : Incrément de séquence nom_sequence.nextval Remarque : user_sequences Table du catalogue où se trouvent les informations concernant les séquences. Remarque : START WITH La clause START WITH de l'instruction CREATE SEQUENCE permet de définir la première valeur de la séquence. Conseil : Pour entrer dans le détail Vous pouvez consulter Oracle : SQL [w_loria.fr/~roegel()], page, pour avoir une description plus détaillée de la syntaxe des séquences et disposer d'exemples.

14 Théorie : Oracle Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple séquence : BD "Gestion des intervenants" : Création d'une CREATE SEQUENCE tcoursseq; SEQUENCE_NAME TCOURSSEQ SELECT sequence_name FROM user_sequences; Exemple données 0 : BD "Gestion des intervenants" : Initialisation des INSERT INTO tintervenant (pknom, prenom, poste) VALUES ('CROZAT', 'Stéphane', ''); INSERT INTO tcours (pkannee, pknum, titre, type, debut, fkintervenant) VALUES ('00', tcoursseq.nextval, 'Introduction','C', '0-JAN00', 'CROZAT'); INSERT INTO tcours (pkannee, pknum, titre, type, debut, fkintervenant) VALUES ('00', tcoursseq.nextval, 'Modélisation','TD', '0-JAN00', 'CROZAT'); SELECT pknum, pkannee, titre FROM tcours; PKNUM PKANNEE TITRE Introduction 00 Modélisation. Particularités LMD Opérateur de concaténation L'opérateur de concaténation s'écrit. Il permet de concaténer des colonnes et/ou des chaînes de caractères. La colonne résultante est une chaîne de caractère. SELECT Attribut '+' Attribut AS "A+A" FROM... Valeurs Null Les expressions mathématiques contenant une valeur Null sont systématiquement évaluées à Null. SELECT x+y FROM t renverra des valeurs Null si x ou y ont la valeur Null.

15 Théorie : Oracle On peut utiliser la fonction NVL pour procéder différemment : par exemple NVL(X,0) renvoie 0 si X vaut Null. MINUS, UNION ALL, LEFT JOIN, AS... L'opération relationnelle de différence s'écrit MINUS (au lieu de EXCEPT en SQL) UNION ALL est une opération d'union qui ne supprime pas les doublons LEFT JOIN peut s'écrire grâce à l'opérateur "(+)" utilisé dans la clause WHERE : SELECT x,y FROM t,t WHERE y(+)=x Le AS servant pour le renommage de colonne est optionnel. Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple : BD "Gestion des intervenants" : Question avec concaténation SELECT trim(prenom) ' ' trim(pknom) ' (' trim(poste) ')' FROM tintervenant; TRIM(PRENOM) '' TRIM(PKNOM) '(' TRIM(POSTE) ')' STEPHANE CROZAT (). Fonctions SQL à connaître Rappel Par opposition aux fonctions de calcul SQL qui s'appliquent sur toute la table pour réaliser des agrégats (en ne renvoyant qu'une seule valeur par regroupement), les fonctions "mono-ligne" sont des fonctions au sens classique, qui s'appliquent à une ou plusieurs valeurs et renvoient une valeur en retour. Les fonctions "mono-ligne" : Manipulent des éléments de données Acceptent des arguments en entrée et retournent des valeurs en sortie Agissent sur chaque ligne Retournent un seul résultat par ligne Peuvent modifier les types de données Exemple Traitement de chaîne Concat, substr, length, insrt, lpad, trim Lower, upper, initcap Traitement de date months_between, add_months, next_day, last_day, SELECT sysdate FROM dual

16 Théorie : Oracle Opérations mathématiques sur les dates : SELECT sysdate + 0 FROM dual Traitement numérique Round, Trunc Floor, Ceil Mod Conversion Conversion implicite Conversion explicite : TO_DATE, TO_NUMBER, TO_CHAR Générales NVL (par exemple NVL(X,0) renvoie 0 si X vaut Null) CASE WHEN condition THEN valeur WHEN condition THEN valeur ELSE valeur END Imbrication de fonctions : F(F(F(col,arg),arg),arg) Méthode Les fonctions mono-ligne sont utilisées pour : Transformer les données Formater des dates et des nombres pour l'affichage Convertir des types de données de colonnes... Exemple : Extraction de chaîne La fonction substr(x, A, B) renvoie les B caractères à partir du caractère A dans la chaîne X. Complément Fonctions SQL Vous pouvez consulter Oracle : SQL [w_loria.fr/~roegel()], page à, pour avoir une description plus détaillée des fonctions disponibles sous Oracle. Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple : BD "Gestion des intervenants" : Question avec CASE SELECT pknum, CASE WHEN type='c' THEN 'Cours' WHEN type='td' THEN 'Travaux dirigés' END AS type_label, debut FROM tcours PKNUM TYPE_LABEL DEBUT

17 Théorie : Oracle Cours 0-JAN-0 Travaux dirigés 0-JAN-0. Fonctions de traitement des dates Syntaxe : Gestion des dates avec TO_DATE La gestion des dates peut poser des problèmes selon les formats paramétrés sur le serveur Oracle (en général par défaut le format est DD-MON-YY). La solution la plus rigoureuse consiste à utiliser la fonction de conversion TO_DATE. to_date('000', 'YYYYMMDD') équivaut à 0-NOV-00. Attention : TO_CHAR(date) et "fm" (format mask) Les paramètres de type fm pour format mask (fmday, fmday, fmday, fmmonth...) permettent de supprimer les zéros et espaces. Ils sont à privilégier en général : TO_CHAR(date,'day') retourne 'saturday ' (avec des espaces à la fin) TO_CHAR(date,'fmday') retourne 'saturday' Exemple : BD "Gestion des intervenants" : Question avec date SELECT pknum, TO_CHAR(debut, 'fmday') FROM tcours; PKNUM ---- Exemple TO_CHAR(DEBUT,'FMDAY') monday tuesday : BD "Gestion des intervenants" : Insert avec date INSERT INTO tcours (pkannee, pknum, titre, type, debut, fkintervenant) VALUES ('00', tcoursseq.nextval, 'Relationnel','C', TO_DATE('00-00','DD-MM-YYYY'), 'CROZAT'); SELECT debut FROM tcours; DEBUT JAN-0 0-JAN-0 0-JAN-0 Complément - TO_CHAR(date) ; TO_CHAR(date) TO_CHAR(number) TO_DATE(char) ; TO_DATE(char)

18 Théorie : Oracle Formatage. SQL*Plus Définition : SQL*Plus SQL*Plus est un client Oracle basique en mode texte, qui n'est plus vraiment utilisé (on utilise Oracle SQL Developer à la place). SQL*Plus désigne aussi un langage interne à Oracle destiner à gérer la présentation des résultats de requêtes en mode texte (états textuels). Complément : SQL*Plus dans SQL Developer Oracle SQL Developer utilise également SQL*Plus mais ne supporte pas toutes les fonctions. Méthode : Usages Le paramétrage de la présentation des résultats de requête est utile au développeur pour avoir des retours lisibles dans son terminal d'exécution. Il peut aussi servir à des parties applicatives comme le formatage pour un export CSV.... Attention SQL*PLus ne travaille ni sur le contenu ni sur la structure, uniquement sur la présentation. a) Variables d'environnement Syntaxe SQL*Plus permet de fixer la valeur de variables d'environnement avec la commande : SET param valeur Ces paramètres peuvent être lus avec la commande : SHOW param Exemple SET heading off Permet de désactiver l'affichage des entêtes de colonne dans le résultat affiché. Complément

19 Théorie : Oracle b) Fichiers d'entrée et de sortie Syntaxe : Exécuter un fichier Pour exécuter un fichier contenant des commandes SQL ou SQL*Plus Syntaxe : Sortie dans un fichier Pour enregistrer les résultats d'une exécution de requêtes dans un fichier : SPOOL path/filename -- requêtes dont on veut récupérer les résultats dans le fichier SPOOL OFF Complément Création d'un fichier CSV avec SQL*Plus (cf. Création d'un fichier CSV avec SQL*Plus) c) Formattage d'une colonne de requête Syntaxe COLUMN nom_colonne FORMAT format Largeur de la colonne : An Chiffre (avec ou sans zéro à gauche) : / 0 Symboles monétaires : $ / L Séparateurs de virgule et de milliers :. /,... Exemple COLUMN ename FORMAT A COLUMN sal FORMAT $,0.00 COLUMN mgr FORMAT 0. Accès inter-schémas Un schéma Oracle correspond au sein d'une base de données (instance Oracle) à un espace isolé comportant toutes les tables appartenant à d'un utilisateur du SGBD. Ainsi chaque utilisateur possède un schéma. Pour simplifier on pourrait plutôt dire qu'une base Oracle est en fait une collection de BD et qu'un schéma est une BD. Lorsqu'un utilisateur se connecte il se connecte généralement dans son propre schéma. Il lui est néanmoins possible de travailler sur les tables d'autres schémas, à condition d'avoir les droits associés bien entendu.

20 Théorie : Oracle Instance Oracle sch tab tab tab sch sch Organisation en schémas d'une instance Oracle Syntaxe : Lecture des données d'une table d'un autre schéma Il suffit de préfixer les noms des tables de leur nom de schéma. SELECT * FROM schema.table;. Fenêtrage des données Syntaxe : Rownum SELECT... FROM... WHERE rownum<=n; -- avec N le nombre de lignes désirées. Rownum La restriction ROWNUM <= N dans la clause WHERE permet filtrer les N premières lignes de la table. Remarque rownum est une pseudo colonne qu'il est bien entendu possible de projeter : SELECT rownum FROM... Syntaxe : Utilisation avancée SELECT a,..., an FROM (SELECT a,..., an, rownum AS rnum FROM t) WHERE rnum BETWEEN n AND n Cette syntaxe permet de sélectionner une fenêtre sur les données et pas seulement les N premières lignes. Méthode : Exploration de données massives Lorsque l'on est en présence de gros volumes de données, et que l'on veut se faire une idée du contenu de ces données, il n'est pas souhaitable de faire un simple SELECT *. En il serait trop long de rapatrier les dizaines de milliers de lignes et de plus cela serait inutile puisque seules quelques unes seraient effectivement lues. L'usage de rownum permet de s'intéresser à des fenêtres de données représentatives, pour se faire une idée générale.

21 Théorie : Oracle B. Le langage procédural PL/SQL Objectifs Connaître les bases du PL/SQL sous Oracle. Savoir créer et exécuter des procédures et fonctions PL/SQL. Savoir utiliser les curseurs.. Présentation du PL/SQL Description Langage de programmation d'oracle. Permet une manipulation procédurale de requêtes SQL. Avantages Intégration Il est possible d'écrire des fonctions complexes de manipulation de données sans recourir à un langage externe. Amélioration des performances Le code PL/SQL est très proche du moteur Oracle. De plus pour le code stocké, les requêtes qu'il manipule sont pré-compilées, et donc son exécution est optimisée.. Structure d'un bloc PL/SQL Syntaxe [Declare] Variables, curseurs, etc. Begin Instructions SQL et PL/SQL [Exception] Gestion d'erreur. End ; / Attention : / Un bloc PL/SQL est terminé par un ; comme une instruction SQL. Par ailleurs, dans les environnements d'exécution Oracle (comme SQL*Plus, SQL Developer...), il est nécessaire de séparer les blocs par un "/" (sur une nouvelle ligne). Une bonne habitude est donc de terminer les bloc PL/SQL par des "/". Complément

22 Théorie : Oracle. Variables Attention En PL/SQL les variables doivent être déclarées avant le (après DECLARE pour les blocs anonymes et IS pour les fonctions et procédures). Types de variables Scalaires VARCHAR, DATE, CHAR, LONG, BOOLEAN, INTEGER RECORD Déclaration d'un type RECORD : TYPE nom_type IS RECORD (déclaration de propriétés); Déclaration d'une variable enregistrement de ce type : nom_variable nom_type; Curseurs Permettent de manipuler des résultats de requête. Syntaxe : Déclaration des variables identifiant [CONSTANT] type [NOT NULL] [:= valeur]; Exemple : Déclaration des variables DECLARE v_deptno NUMBER() NOT NULL := 0; v_hiredate DATE; v_location VARCHAR() := 'Atlanta'; c_comm CONSTANT NUMBER := 00;... Syntaxe : Affectation des variables variable := valeur variable Exemple : Affectation des variables x:=0; x:=y; Conseil : Référence à un type de colonne existant On peut faire référence au type d'une colonne d'une table par la syntaxe suivante en remplacement du type de données : nom_table.nom_colonne%type. Exemple : Référence à un type de colonne existant vpersonne temploye.anom%type

23 Théorie : Oracle. Affichage à l'écran Syntaxe SET SERVEROUTPUT ON DBMS_OUTPUT.PUT_LINE ('Hello World'); END;. Structures de contrôle Syntaxe : Structure conditionnelle IF THEN instructions ELSIF THEN instructions ELSE instructions END IF; Syntaxe : Boucle FOR FOR compteur IN [REVERSE] inf...sup LOOP instructions END LOOP; Syntaxe : Boucle WHILE WHILE condition LOOP instructions END LOOP; Syntaxe : Boucle REPEAT LOOP instructions EXIT [WHEN condition]; END;. Blocs PL/SQL : Procédure, fonction, bloc anonyme Syntaxe : Procédure CREATE OR REPLACE PROCEDURE nom_proc IS [EXCEPTION]... END ;

24 Théorie : Oracle Exemple : Procédure CREATE OR REPLACE PROCEDURE phello (who VARCHAR) IS DBMS_OUTPUT.PUT_LINE('Hello ' who); END; / Syntaxe : Fonction 0 FUNCTION nom_func RETURN type_retourné IS RETURN valeur; [EXCEPTION]... END ; Exemple : Fonction CREATE OR REPLACE FUNCTION fdatedujour RETURN date IS vdate date; SELECT SYSDATE INTO vdate FROM DUAL; RETURN vdate; END; / Attention Le type de retourné par une fonction ne doit pas spécifier de taille : RETURN varchar et non RETURN varchar(0) Syntaxe : Anonyme [DECLARE] [EXCEPTION]... END ; Exemple : Script anonyme SET SERVEROUTPUT ON; phello('world'); DBMS_OUTPUT.PUT_LINE(fDateDuJour);

25 Théorie : Oracle END; /. Affectation par une requête SELECT INTO Syntaxe SELECT propriété, propriété,... INTO variable_name, variable_name,... FROM relations WHERE condition; A condition que la requête ne renvoie qu'un tuple et qu'elle projette autant de propriétés de ce tuple que de variables référencées dans la clause INTO. Exemple 0 DECLARE v_deptno dept.deptno%type; v_loc dept.loc%type; SELECT deptno, loc INTO v_deptno, v_loc FROM dept WHERE dname = 'SALES';... END; Remarque : Syntaxe %TYPE Cette syntaxe est largement recommandée pour l'affectation depuis une requête. Remarque : Affectation d'une variable RECORD Il est possible avec la clause INTO d'affecter des résultats de requête à plusieurs colonnes dans une variable RECORD. Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple : BD "Gestion des intervenants" : Fonction et affectation par une requête 0 CREATE OR REPLACE FUNCTION fintervient (pintervenant varchar) RETURN varchar IS vnbinterventions number; SELECT Count(fkintervenant) INTO vnbinterventions FROM tcours WHERE fkintervenant=pintervenant; IF vnbinterventions > 0 THEN RETURN 'OUI'; ELSE

26 Théorie : Oracle 0 RETURN 'NON'; END IF; END; / INSERT INTO tintervenant(pknom, prenom) VALUES ('JOUGLET', 'Antoine'); SELECT pknom, fintervient(pknom) AS I FROM tintervenant; PKNOM CROZAT JOUGLET I -----OUI NON. Exercice [Solution n p ] Soit la séquence d'instructions suivante sous Oracle : 0 0 CREATE TABLE t_personnes ( a_nom varchar(0), a_prenom varchar(0) ); INSERT INTO t_personnes VALUES ('dupond', 'paul'); INSERT INTO t_personnes VALUES ('dupond', 'pierre'); CREATE FUNCTION fcherche (p_nom varchar) RETURN varchar IS TYPE r_personne IS RECORD (nom varchar(0), prenom varchar(0)); v_personne r_personne; SELECT a_nom, a_prenom INTO v_personne FROM t_personnes WHERE a_nom=p_nom; RETURN v_personne.nom; EXCEPTION WHEN OTHERS THEN RETURN ('erreur'); END; Que renvoie la fonction "fcherche" si on lui passe en paramètre la chaîne 'dupond'?. Curseurs PL/SQL Définition : Curseur Un curseur est un pointeur sur un résultat de requête.

27 Théorie : Oracle Syntaxe : Syntaxe OPEN/FETCH 0 DECLARE CURSOR c_moncurseur IS SELECT prop, prop,... FROM relations; vprop relation.prop%type; vprop... OPEN c_moncurseur; LOOP FETCH c_moncurseur INTO vprop, vprop,...; EXIT WHEN c_moncurseur%notfound; instructions END LOOP; END; Remarque : Syntaxe FOR/IN DECLARE CURSOR c_moncurseur IS SELECT prop, prop,... FROM relations; FOR c_montuple IN c_moncurseur LOOP instructions END LOOP; END; Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple : BD "Gestion des intervenants" : Traitement de données et curseur 0 0 CREATE OR REPLACE PROCEDURE pafficheintervenants IS CURSOR cintervenants IS SELECT pknom, prenom FROM tintervenant; vnom tintervenant.pknom%type; vprenom tintervenant.prenom%type; DBMS_OUTPUT.PUT_LINE('** Liste des intervenants **'); OPEN cintervenants; LOOP FETCH cintervenants INTO vnom, vprenom; EXIT WHEN cintervenants%notfound; DBMS_OUTPUT.PUT_LINE('-' INITCAP(TRIM(vPrenom)) ' ' INITCAP(TRIM(vNom))); END LOOP; END; / CREATE OR REPLACE PROCEDURE pafficheintervenants IS CURSOR cintervenants IS SELECT pknom, prenom FROM tintervenant; DBMS_OUTPUT.PUT_LINE('** Liste des intervenants **'); FOR i IN cintervenants LOOP

28 Théorie : Oracle 0 DBMS_OUTPUT.PUT_LINE('-' INITCAP(TRIM(i.prenom)) ' ' INITCAP(TRIM(i.pknom))); END LOOP; END; / SET SERVEROUTPUT ON; pafficheintervenants; DBMS_OUTPUT.PUT_LINE(''); pafficheintervenants; END; / ** Liste des intervenants ** -Stéphane Crozat -Antoine Jouglet ** Liste des intervenants ** -Stéphane Crozat -Antoine Jouglet 0. Exercice [Solution n p ] Quelles instructions SQL renvoient la même valeur que la fonction PL/SQL sous Oracle suivante : 0 CREATE FUNCTION ftruc RETURN number IS CURSOR c IS SELECT a FROM t; x number; y number; y:=0; OPEN c; LOOP FETCH c INTO x; EXIT WHEN c%notfound; y:=y+x; END LOOP; RETURN y; END; SELECT a FROM t; SELECT count(a) FROM t; SELECT avg(a) FROM t;. Gestion d'exception Qu'est-ce qu'une exception? Un identifiant PL/SQL, de type erreur, déclenché pendant l'exécution du bloc. Comment est-elle déclenchée? 0 Implicitement, par une erreur Oracle (NO_DATAFOUND, INVALID_CURSOR,

29 Théorie : Oracle TOO_MANY_ROWS, etc.) Explicitement, par le programme (défini par l'utilisateur) : commande "RAISE nom_exception" Par le développeur : Raise_application_error( -00, 'message') Comment la traiter? En interceptant les exceptions En la propageant à l'environnement appelant Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple 0 0 : BD "Gestion des intervenants" : Gestion d'exception CREATE OR REPLACE PROCEDURE pinsertintervenant (pnom varchar, pprenom varchar) IS INSERT INTO tintervenant (pknom, prenom) VALUES (pnom, pprenom); EXCEPTION WHEN DUP_VAL_ON_INDEX then DBMS_OUTPUT.PUT_LINE('Intervenant déjà existant : ' pnom); WHEN OTHERS THEN RAISE; END; / SET SERVEROUTPUT ON DBMS_OUTPUT.PUT_LINE('*** Programme indépendant ***'); pinsertintervenant('jouglet', 'Antoine'); pinsertintervenant('vincent', 'Antoine'); pafficheintervenants; END; / *** Programme indépendant *** Intervenant déjà existant : JOUGLET ** Liste des intervenants ** -Stéphane Crozat -Antoine Jouglet -Antoine Vincent. Durée de tournage d'un film [0 min] Soit le modèle UML de la relation Film ci-après.

30 Théorie : Oracle Film (méthode) Soit la table Film implémentée sous Oracle et correspondant au modèle relationnel : Film(#isan:char(),titre:varchar,debut:date,fin:date) Question [Solution n p ] Écrire une fonction duree permettant de retourner un nombre entier de jours entre deux dates passées en argument. Indice : On pourra utiliser la conversion des dates en Julian day, c'est à dire le nombre de jours depuis le 0/0/-. to_char(d,'j') retourne le Julian day de la date d sous la forme d'une chaîne de caractères. Exemple : to_char( to_date('00000','yyyymmdd')) = '' to_number(to_char(d,'j'),'') retourne le Julian day de la date d sous la forme d'un entier de chiffres. Exemple : to_number(to_char( = to_date('00000','yyyymmdd'),'') Question [Solution n p ] Créer en SQL une vue vfilm affichant tous les attributs de Film, avec une colonne supplémentaire affichant la durée. C. Les triggers Objectifs Comprendre le fonctionnement événementiel des triggers. Savoir créer un trigger sous Oracle.. Principes des triggers Définition : Trigger Un trigger (ou déclencheur) est un bloc PL/SQL associé à une table permettant de

31 Théorie : Oracle déclencher une action avant ou après un INSERT, UPDATE ou DELETE sur cette table. Les triggers sont stockés dans la base. A quoi servent les triggers? Ils permettent de renforcer l'intégrité des données (mais on préférera des contraintes "check", "unique" ou "foreign key" quand c'est possible). Ils permettent d'auditer des actions sur une table. Ils permettent de calculer des valeurs dérivées pour d'autres colonnes de la table. Ils constituent ainsi une des solutions pour l'implémentation des attributs dérivés. Types de triggers Il existe deux types de triggers : Trigger sur ligne le trigger est exécuté pour chaque ligne concernée par l'instruction insert, update ou delete (option "for each row"). Trigger sur instruction le trigger est exécuté une seule fois pour l'instruction insert, update ou delete, même si elle traite plusieurs lignes d'un coup. Syntaxe : Trigger CREATE [OR REPLACE] TRIGGER nom_trigger {BEFORE AFTER} [INSERT OR][UPDATE [OF nom_colonne] OR][DELETE] ON nom_table [FOR EACH ROW [WHEN (condition)] ] DECLARE [variable declarations] instructions END; Remarque : Avant ou après? En général les triggers sont de type "before", en particulier pour les triggers sur ligne, c'est à dire qu'ils s'exécutent avant que l'action considérée soit exécutée, ce qui permet d'infléchir le résultat de cette action. Alors qu'un trigger "after" ne pourra plus modifier le tuple considéré et agira seulement sur d'autres tuples. Attention : Triggers multiples Une même table peut avoir plusieurs triggers, mais cela est à éviter en général, pour des raisons de facilité de maintenance et de performance. Attention : Exception Si l'exécution du trigger échoue, l'action (insert, update ou delete dans la table) est annulée (et retourne une exception Oracle).

32 Théorie : Oracle. Manipulation des anciennes et nouvelles valeurs dans les triggers Pour les triggers de type "for each row", les colonnes de la ligne courante doivent être référencées spécifiquement selon que l'on veut l' ancienne ou la nouvelle valeur : :old.nom_colonne :new.nom_colonne Fondamental Il ne faut pas lire des données d'une table en cours de modification autrement que par les accès ":old" et ":new". Attention : Anciennes valeurs en lecture seule Il n'est jamais possible de modifier une colonne ":old". Attention : Valeurs en lecture seule après Pour les trigger "after", il n'est plus possible de modifier les colonnes ":new". Remarque : Valeurs nulles Pour les triggers "on insert" les colonnes ":old" ont la valeur NULL. Pour les triggers "on delete" les colonnes ":new" ont la valeur NULL. Attention Il ne faut pas modifier de données dans les colonnes des "primary key", "foreign key", ou "unique key" d'une table. Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple : BD "Gestion des intervenants" : Trigger de calcul de valeur dérivée 0 CREATE OR REPLACE TRIGGER trcours BEFORE INSERT OR UPDATE OF debut ON tcours FOR EACH ROW :new.fin := :new.debut+; END; / UPDATE tcours SET debut=to_date('-0-00','dd-mm-yyyy') WHERE pknum=; INSERT INTO tcours (pkannee, pknum, titre, type, fkintervenant, debut) VALUES ('00', tcoursseq.nextval, 'SQL', 'C', 'CROZAT', TO_DATE('0-00','DD-MM-YYYY'));

33 Théorie : Oracle SELECT pknum, debut, fin FROM tcours; PKNUM ---- DEBUT JAN-0 0-JAN-0 -JAN-0 -JAN-0 FIN JAN-0 -JAN-0. Prédicats d'événement au sein des triggers INSERTING DELETING UPDATING UPDATING(nom_colonne) Prédicats pour savoir dans quel contexte d'appel du trigger on est, ce qui permet dans un même trigger de s'adapter aux différents cas de déclenchement. Rappel : BD "Gestion des intervenants" : Schéma relationnel tintervenant (#pknom, prenom, poste) tcours (#pkannee, #pknum, titre, type, fkintervenant=>tintervenant, debut, \fin) Exemple données 0 0 : BD "Gestion des intervenants" : Trigger d'archivage de CREATE TABLE tintervenantsav ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL ); CREATE OR REPLACE TRIGGER trintervenant BEFORE DELETE OR INSERT ON tintervenant FOR EACH ROW IF DELETING THEN INSERT INTO tintervenantsav VALUES (:old.pknom, :old.prenom); ELSIF INSERTING THEN DELETE FROM tintervenantsav WHERE pknom = :new.pknom; END IF; END; / DELETE FROM tcours; DELETE FROM tintervenant; SELECT * FROM tintervenantsav; PKNOM CROZAT JOUGLET VINCENT INSERT INTO tintervenant (pknom, prenom, poste) VALUES ('CROZAT', 'Stéphane', ''); PRENOM Stéphane Antoine Antoine SELECT * FROM tintervenantsav;

34 Théorie : Oracle PKNOM JOUGLET VINCENT PRENOM Antoine Antoine. Exercice [Solution n p ] Quelle valeur renvoie la dernière instruction de la liste ci-dessous, sous le SGBDR Oracle : 0 CREATE TABLE t (a integer, b integer); CREATE TRIGGER trig_t BEFORE UPDATE ON t FOR EACH ROW :new.b := :old.a; END; INSERT INTO t (a, b) VALUES (, ); UPDATE t SET a=a+, b=b+; UPDATE t SET a=a+, b=b+; SELECT sum(b) FROM t; D. Prise en main de Oracle SQL Developer. Installation de SQL Developer Site Web (Téléchargement pour Windows, Mac et Linux) Complément Documentation en ligne disponible à la même adresse.. Connexion avec SQL Developer Créer une connexion à la base de données Oracle de l'utc. Clic droit sur Connexions, puis Nouvelle connexion. Entrez vos paramètres : Nom libre Username / Password Hôte : sme-oracle.sme.utc SID : nf

35 Théorie : Oracle Image Fenêtre de connexion SQL Developer. Naviguer dans le catalogue de SQL Developer L'espace de gauche permet de naviguer dans le catalogue de la base de données et donc de visualiser les tables, vues, index, etc. Image Fenêtre principale SQL Developer

36 Théorie : Oracle Attention Pour rafraîchir la vue de gauche (catalogue) après une requête LDD, il faut faire un clic droit sur l'élément du catalogue (par exemple Tables après une création de table) puis sélectionner Régénérer.. Exécuter des requêtes SQL avec SQL Developer L'espace de droite permet d'écrire des requêtes SQL (en haut) et de visualiser le résultat de l'exécution (en bas). Appuyer sur le bouton Exécuter un script ou faire F pour exécuter les requêtes saisies. Image SQL (script) Remarque Pour effacer les résultats d'exécution précédents, cliquer sur Effacer. Exécuter une seule requête au sein d'un script Pour n'exécuter qu'une seule requête parmi celle saisies dans la zone du haut, la sélectionner, puis cliquer sur Exécuter un script ou faire F.

37 Théorie : Oracle Image SQL (instruction par instruction) Exécuter une seule requête SELECT Pour les requêtes SELECT, SQL Developer propose un affichage sous forme de tableau, plus lisible que l'affichage texte. Pour exécuter une requête SELECT et obtenir un tel affichage, cliquer sur Exécuter l'instruction ou faire F.

38 Théorie : Oracle Image SQL (une seule instruction SELECT) Attention Le bouton Exécuter l'instruction n'affiche pas les erreurs d'exécution ou les confirmations de création ou insertion (requêtes CREATE, INSERT, UPDATE), il est donc à réserver aux requêtes SELECT valides (si le résultat n'est pas correct, utiliser Exécuter un script). Conseil Dans le doute utilisez toujours F et jamais F.. Écrire du PL/SQL avec SQL Developer Pour créer des blocs PL/SQL, procéder comme pour le SQL, avec le bouton Exécuter un script. 0

39 Théorie : Oracle Image PL/SQL (Fonction compilée avec succès) Attention : Traiter les erreurs de compilation Pour voir les erreurs de compilation, il faut faire un clic droit sur le nom de la fonction ou de la procédure (zone de gauche), puis choisir Compiler pour le débogage. L'instruction show errors ne fonctionne pas.

40 Théorie : Oracle Image PL/SQL (Fonction en erreur). Exécution de fichiers SQL Méthode Pour enregistrer un script SQL ou PL/SQL écrit dans Oracle SQL Developer sous la forme d'un fichier utiliser la fonction file > save as. Méthode Pour exécuter un fichier SQL ou PL/SQL utiliser la Exemple @file.sql

41 Pratique : SQL sous Oracle II - II Migration d'une base Access vers Oracle Séquence Extension Médiathèque Transactions Questions avancées en SQL Maintenance de la base Vue Objectifs Apprendre à se servir d'oracle Approfondir SQL Dans cette première partie, vous allez aborder les aspects classiques des BD et du SQL, sur le cas particulier d'oracle. Il est demandé de prendre des notes au niveau de chaque question posée, afin de garder la trace des réalisations. Attention : Oracle est un système transactionnel, il faut terminer chaque séquence de requêtes par une instruction SQL "commit;". A. Migration d'une base Access vers Oracle Après un an de bons et loyaux services au sein de l'association "Objectifs", vous en laissez la présidence à Marc. En effet, suite à votre excellent travail de structuration des activités de l'association dans une base Access, l'association des anciens élèves vous invite à venir lui faire profiter de vos compétences, ce que vous avez accepté avec plaisir. Après une nouvelle année, Marc vous demande de bien vouloir revenir dans l'association "Objectifs" pour l'aider dans un projet ambitieux. La base de données que vous aviez créée sous Access doit être migrée sous Oracle, sur préconisation du service informatique. Question Prenez connaissance de la documentation (diagramme UML et code SQL de création et d'initialisation de la base de données), afin de préparer la migration de l'existant.

42 Pratique : SQL sous Oracle Vérifiez que les données dont vous disposez sont cohérentes. Vérifier que le code SQL LDD et LMD a été correctement adapté pour une implémentation sous Oracle. Image Modèle UML de la base de données de gestion de projets 0 0 create table SPECIALITE ( intitule varchar(0), constraint PK_SPECIALITE primary key (intitule) ); create table MEMBRE ( prenom varchar(0), nom varchar(0), specialite varchar(0), constraint PK_MEMBRE primary key (prenom), constraint FK_MEMBRE_SPECIALITE foreign key (specialite) references SPECIALITE(intitule) ); create table PROJET ( num number, nom varchar(0), debut date, fin date, chefprojet varchar(0), specialite varchar(0), constraint PK_PROJET primary key (num), constraint FK_PROJET_MEMBRE foreign key (chefprojet) references MEMBRE(prenom), constraint FK_PROJET_SPECIALITE foreign key (specialite) references SPECIALITE(intitule)

43 Pratique : SQL sous Oracle ); create table TACHE ( num number, projet number, nom varchar(0), debut date, fin date, constraint FK_TACHE_PROJET foreign key (projet) references PROJET(num), constraint PK_TACHE primary key (num, projet) ); create table PARTENAIRE ( nom varchar(0), description varchar(), constraint PK_PARTENAIRE primary key (nom) ); create table PARTICIPE ( prenom varchar(0), tache number, projet number, fonction varchar(0), constraint FK_PARTICIPE_MEMBRE foreign key (prenom) references MEMBRE(prenom), constraint FK_PARTICIPE_TACHE foreign key (tache, projet) references TACHE(num, projet), constraint PK_PARTICIPE primary key (prenom, tache, projet) ); create table ESTASSOCIE ( nom varchar(0), projet number, role varchar(), constraint FK_ESTASSOCIE_PARTENAIRE foreign key (nom) references PARTENAIRE(nom), constraint FK_ESTASSOCIE_PROJET foreign key (projet) references PROJET(num), constraint PK_ASTASSOCIE primary key (nom, projet) ); INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO Specialite Specialite Specialite Specialite Specialite Specialite INSERT INSERT INSERT INSERT INTO INTO INTO INTO Membre Membre Membre Membre VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES ('Ville'); ('Université'); ('Sport'); ('Entreprise'); ('Culture'); ('International'); ('Nathalie', 'Dupont', 'Culture'); ('Pierre', 'Perret', 'Sport'); ('Alain', 'Durand', 'Culture'); ('Julien', 'Dujnou', 'Université'); INSERT INTO Projet VALUES (, 'Comédie Musicale', to_date('0000','yyyymmdd'), to_date('000','yyyymmdd'), 'Nathalie', 'Culture'); INSERT INTO Projet VALUES (, 'Science en fête', to_date('0000','yyyymmdd'), to_date('0000','yyyymmdd'), 'Pierre', 'Ville'); INSERT INTO Projet VALUES (, 'Nuit du Picolo', to_date('000','yyyymmdd'), to_date('000','yyyymmdd'), 'Julien', 'Université'); INSERT INTO Tache VALUES (,, to_date('0000','yyyymmdd'), INSERT INTO Tache VALUES (,, to_date('0000','yyyymmdd'), INSERT INTO Tache VALUES (,, to_date('0000','yyyymmdd'), 'Dossier financement', to_date('0000','yyyymmdd')); 'Casting', to_date('0000','yyyymmdd')); 'Script', to_date('0000','yyyymmdd'));

44 Pratique : SQL sous Oracle INSERT INTO Tache VALUES (,, to_date('0000','yyyymmdd'), INSERT INTO Tache VALUES (,, to_date('0000','yyyymmdd'), INSERT INTO Tache VALUES (,, to_date('000','yyyymmdd'), INSERT INTO Tache VALUES (,, to_date('00','yyyymmdd'), INSERT INTO Tache VALUES (,, to_date('000','yyyymmdd'), 'Répétition', to_date('000','yyyymmdd')); 'Réservation salle', to_date('000','yyyymmdd')); 'Publicité', to_date('00','yyyymmdd')); 'Vente billets', to_date('000','yyyymmdd')); 'Programme', to_date('000','yyyymmdd')); INSERT INTO Participe VALUES ('Alain',,, 'Prospection'); INSERT INTO Participe VALUES ('Nathalie',,, 'Rédaction'); INSERT INTO Partenaire (Nom) INSERT INTO Partenaire (Nom) INSERT INTO Partenaire (Nom) INSERT INTO Partenaire (Nom, de fabrication de bière'); INSERT INTO EstAssocie INSERT INTO EstAssocie INSERT INTO EstAssocie INSERT INTO EstAssocie 'Publicitaire'); INSERT INTO EstAssocie bières'); VALUES ('Mairie'); VALUES ('Ministère'); VALUES ('Association des commerçants'); Description) VALUES ('', 'Entreprise VALUES VALUES VALUES VALUES ('Mairie',, ('Mairie',, ('Ministère', ('Association 'Financeur'); 'Financeur');, 'Logistique'); des commerçants',, VALUES ('',, 'Réduction sur les COMMIT; Indice : On notera que pour protéger l'insertion des dates sous Oracle, la solution la plus rigoureuse consiste à utiliser la fonction de conversion TO_DATE. Par exemple : INSERT INTO Projet VALUES (, 'Comédie Musicale', to_date('0000', 'YYYYMMDD'), to_date('000', 'YYYYMMDD'), 'Nathalie', 'Culture'); Question Procédez à la création et à l'initialisation de la base Oracle. B. Séquence Marc a une formation solide en marketing. Dans son discours pour sa seconde investiture à la présidence de l'association, il promet de donner un nouveau souffle à l'association suite à des malentendus avec les supports financiers. Après concertation des membres de l'association, Marc décide alors de donner une dimension commerciale aux activités de l'association dans le but d'autosubventionner ses projets. Dans cette perspective, Marc lance un nouveau projet intitulé "Médiathèque", spécialisé dans la vente de produits multimédia (CD-ROM, DVD, Vidéo, etc.) à distance (via Internet). Ce projet est composé de trois tâches : "Marketing", "Prospection" et "Service après-vente", et s'inscrit dans la spécialité "Commerce". Question [Solution n p ] Afin de profiter au mieux des fonctions proposées par Oracle, associez une séquence à la table Projet pour gérer l'itération automatique des numéros de projet. Indice :

45 Pratique : SQL sous Oracle La clause START WITH de l'instruction CREATE SEQUENCE permet de définir la première valeur de la séquence. Question [Solution n p ] Écrire et exécuter les requêtes LMD nécessaires à la gestion du nouveau projet "Médiathèque virtuelle", en utilisant la séquence. C. Extension Médiathèque Submergé par la demande de la clientèle, Marc fait appel à vous pour étendre le schéma de la base de données de l'association afin d'automatiser les tâches de marketing (analyse des ventes, analyse des profils des clients) et commerciales (facturation). Cette extension doit inclure les nouvelles entités : client, produit, et facture. Les règles suivantes doivent être respectées dans la conception du schéma : Une facture comporte un ou plusieurs produits. Un produit peut paraître dans plusieurs factures. Une facture est associée à un seul client. Un client peut établir plusieurs factures. Question [Solution n p ] Faites le schéma conceptuel de l'extension. Question [Solution n p ] Dériver le modèle relationnel. Vous demandez à un collègue de réaliser pour vous les instructions de création et d'initialisation des tables, sur la base des données dont vous disposez. Question [Solution n p ] Vérifier que les scripts de création et d'initialisation sont corrects, corrigez les sinon, puis exécutez les. D. Transactions Lors de la saisie d'une facture, le client peut changer d'avis : il n'a plus envie d'acheter un article, il se rend compte qu'il n'a pas assez d'argent avec lui, etc. Pour gérer ces cas (et d'autres plus critiques, comme les cas de panne), on utilise un mécanisme qui permet de valider ou d'annuler une transaction, c'est à dire une série d'instructions SQL. Question Le client souhaite acheter exemplaire du produit, mais il change d'avis au moment de valider. Exécutez le script SQL suivant et expliquez ce qui se passe. select * from facture;

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

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

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

Introduction à l'etl et application avec Oracle

Introduction à l'etl et application avec Oracle Introduction à l'etl et application avec Oracle Data warehouse http://dwh.crzt.fr Paternité - Partage des Conditions Initiales à l'identique : http://creativecommons.org/licenses/by-sa/4.0/fr/ 12 février

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

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

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

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

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

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

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

Introduction à la modélisation dimensionnelle

Introduction à la modélisation dimensionnelle Introduction à la modélisation dimensionnelle Data warehouse http://dwh.crzt.fr Paternité - Partage des Conditions Initiales à l'identique : http://creativecommons.org/licenses/by-sa/4.0/fr/ 11 février

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

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

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

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

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

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

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

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

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

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

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

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

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

Historisation des données

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

Plus en détail

Bases de données relationnelles

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

Plus en détail

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

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

Plus en détail

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

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

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

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

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

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

Les bases de données Page 1 / 8

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

Plus en détail

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

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données Base de Données Cours Introductif Base de Données Quelques chiffres Évolution annuelle moyenne 2004/2000 15% +20% 12% 5% 0.5% 2000 2004 L3G IA SG mono poste : Part de marché 5% 5% 10% Paradox 65% SG 15%

Plus en détail

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

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

Plus en détail

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

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

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

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

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

Bases de données avancées Introduction

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

Plus en détail

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

Ora2Pg. Présentation, bonnes pratiques et futur du projet

Ora2Pg. Présentation, bonnes pratiques et futur du projet Ora2Pg Présentation, bonnes pratiques et futur du projet Sommaire Historique et généralités Installation Bonnes pratiques Configuration générique Migration du schéma Migration des données Migration des

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

Création et Gestion des tables

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

Plus en détail

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

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

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

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

Plus en détail

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

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

Compétences Business Objects - 2014

Compétences Business Objects - 2014 Compétences Business Objects - 2014 «Mars-Juin 2014. Réf : Version 1 Page 1 sur 34 Sommaire CONTEXTE DE LA REMISE A NIVEAU EN AUTOFORMATION... 3 1. MODELISATION... 4 1.1 DESCRIPTION FONCTIONNEL DE L'APPLICATION

Plus en détail

Optimisation SQL. Quelques règles de bases

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

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Les bases de données

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

Plus en détail

SQL Serveur 2012+ Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

SQL Serveur 2012+ Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise SQL Serveur 2012+ Programme de formation France Belgique Suisse - Canada Microsoft Partner Formez vos salariés pour optimiser la productivité de votre entreprise Dernière mise à jour le : Avril 2014 Des

Plus en détail

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5 1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée

Plus en détail

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL Jean-Marie Pécatte jean-marie.pecatte@iut-tlse3.fr 16 novembre 2006 ISIS - Jean-Marie PECATTE 1 Valeur de clé

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

SQL Server 2014 Administration d'une base de données transactionnelle avec SQL Server Management Studio

SQL Server 2014 Administration d'une base de données transactionnelle avec SQL Server Management Studio Présentation 1. Introduction 13 2. Présentation de SQL Server 14 2.1 Qu'est-ce qu'un SGBDR? 15 2.2 Mode de fonctionnement client/serveur 16 2.3 Les plates-formes possibles 18 2.4 Les composants de SQL

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

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

1 Introduction et installation

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

Plus en détail

AGRÉGATION «ÉCONOMIE ET GESTION»

AGRÉGATION «ÉCONOMIE ET GESTION» AGRÉGATION «ÉCONOMIE ET GESTION» CONCOURS INTERNE SESSION 2002 ÉPREUVE SUR LES TECHNIQUES DE GESTION ET COMPORTANT DES ASPECTS PÉDAGOGIQUES DOMAINE : économie et gestion informatique Durée de préparation

Plus en détail

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

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

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Ce projet comporte trois parties sur les thèmes suivants : création de base de donnée, requêtes SQL, mise en œuvre

Plus en détail

Administration des bases de données

Administration des bases de données Administration des bases de données Mehdi Louizi 1 Pourquoi PL/SQL 2 Pourquoi PL/SQL? PL/SQL = PROCEDURAL LANGUAGE/SQL SQL est un langage non procédural Les traitements complexes sont parfois difficiles

Plus en détail

1 Position du problème

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

Plus en détail

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

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

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

Plus en détail

BASES DE DONNEES TP POSTGRESQL

BASES DE DONNEES TP POSTGRESQL 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique IUP 2 ème année et Formation Continue BASES DE DONNEES TP POSTGRESQL Maude Manouvrier La reproduction de ce document par tout

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

SQL Server 2012 - Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

SQL Server 2012 - Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos) Présentation 1. Introduction 13 2. Présentation de SQL Server 14 2.1 Qu'est-ce qu'un SGBDR? 14 2.2 Mode de fonctionnement Client/Serveur 16 2.3 Les plates-formes possibles 17 2.4 Les composants de SQL

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

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

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

Plus en détail

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

Stockage du fichier dans une table mysql:

Stockage du fichier dans une table mysql: Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre Bases de Données Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre Synthèse : conception de BD langage de modélisation famille de SGBD SGBD Analyse du

Plus en détail

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs Dans la série Les tutoriels libres présentés par le site FRAMASOFT Automatisation d'une Facture 4 Liste Déroulante Remises Case à cocher Calculs Logiciel: Version: Licence: Site: OpenOffice.org Calc :

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

TP3 : Creation de tables 1 seance

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

Plus en détail

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs, relations,

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

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

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

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

Plus en détail

Chapitre 10. Architectures des systèmes de gestion de bases de données

Chapitre 10. Architectures des systèmes de gestion de bases de données Chapitre 10 Architectures des systèmes de gestion de bases de données Introduction Les technologies des dernières années ont amené la notion d environnement distribué (dispersions des données). Pour reliér

Plus en détail