Oracle. SQL 3 - Objet - XML. Auteur : Clotilde Attouche. Version 1.1. Du 6 Mars 2010
|
|
|
- Sophie Samson
- il y a 10 ans
- Total affichages :
Transcription
1 Oracle SQL 3 - Objet - XML Auteur : Clotilde Attouche Version 1.1 Du 6 Mars 2010
2 Sommaire 1 La base de données Oracle 11g La documentation Les Outils d accés à la base L outil isql*plus L outil SQL*Plus Environnement de travail Le prompt SQL*Plus Quelques commandes SQL*Plus Générer un fichier résultat appelé «spool» Déclarer un éditeur Utilisation de paramètres Le dictionnaire de données Le langage SQL Notion de schema Rêgles de nommage L extension objet gérée par Oracle Le concept objet De UML à SQL Evolution de l objet à SQL Les associations de cardinalités Les associations de cardinalités 1-n Les associations de cardinalités n-n Les associations de cardinalités n-aire Les associations reflexives Les classes-associations Les associations d héritage Gestion des types objets dans oracle Remarques concernant les collections Les tables imbriquées Les types VARRAY et VARYING ARRAY Les types objet Les attributs l OID Les méthodes Modifier un type utilisé Héritage Page 2/66
3 10 Les procédures externes Les fonctions d agrégat Le XML Les méthodes du XML Manipuler les données d une colonne de type XML Extraire les données Génération de XML dans les requêtes Agréger les documents XML Paramètres de formatage pour SYS_XMLGEN et SYS_XMLAGG Création d un document à partir d une requête Page 3/66
4 1 La base de données Oracle 11g Oracle Database 11g représente la nouvelle génération de la gestion des informations en entreprise, qui permet de faire face aux exigences qu'imposent la croissance rapide des volumes de données, l'évolution constante de l'environnement et la nécessité de fournir une qualité de service maximale tout en réduisant et en contrôlant les coûts informatiques. Oracle Database 11g reste centré sur le grid computing : il permet de constituer des matrices de serveurs et de systèmes de stockage économiques capables de traiter les données de façon rapide, fiable et évolutive, en supportant les environnements les plus exigeants, qu'il s'agisse de datawarehouse, de transactionnel ou de gestion de contenus. Oracle Database 11g intègre de multiples nouveautés et améliorations. Ainsi, Oracle 11g offre une performance améliorée du stockage sur fichiers, des fonctionnalités renforcées pour la sécurité, d'importantes améliorations de performances pour Oracle XML DB, et des fonctions nouvelles pour l'olap et le datawarehouse. Oracle 11g multiplie les outils de gestion et introduits de nouvelles fonctionnalités d'auto gestion et d'automatisation. Automatic SQL, Partitioning Advisor ou Support Workbench accompagnent les administrateurs pour améliorer les performances et les informer le plus rapidement possible des incidents. Ainsi -- Oracle Flashback Transaction permet de revenir plus facilement sur une erreur de transaction et des dépendances. Parallel Backup and Restore augmente les performances des sauvegardes sur les grosses bases. -- Hot Patching permet d'appliquer les mises à jour sans arrêter les bases. -- Data Recovery Advisor accompagne les administrateurs pour déterminer intelligemment les plans de secours. -- Oracle Fast Files adopte un comportement proche des systèmes de fichiers (file systems), ce qui est un gage de performances avec les LOBs (Large Objects) ou des fichiers contenant du texte, des images, ou des données XML, objets tridimensionnels, etc. -- Oracle XML DB permet de stockées et manipulées nativement les données XML. Le langage XML se révèle lourd, et avec cette approche Oracle 11g limite la dégradation de ses performances. De même la base supporte les interfaces standard XQuery, Java Specification Requests (JSR)-170 et SQL/XML. -- Oracle Transparent Data Encryption permet de crypter les données des tables, des index ou encore les données stockées de type LOB. -- Cubes OLAP, apporte des fonctionnalités de datawarehouse (fermes de données), Oracle 11g embarque les cubes OLAP pour visualiser les informations stockées, ce qui autorise le développement de requêtes au format SQL. -- Continuous Query Notification notifie immédiatement les changements apportés dans la base. -- avec Query Result Caches, requêtes et fonctionnalité de la base ou d'applications tierces sont placées en cache afin de les accélérer ou de les réutiliser. -- Database Resident Connection Pooling est destiné aux applications qui ne sont pas multithreadées (ou les développeurs qui ne maîtrisent pas cette technologie parallèle), en particulier pour les systèmes web, Oracle 11g permet de créer des 'pool' de connexions. Page 4/66
5 Les différents produits d Oracle sont proposés en trois gammes : Enterprise Edition - La gamme pour les grosses applications critiques de l entreprise. Standard Edition - La gamme pour les applications des groupes de travail ou des départements de l entreprise, elle est destinée à des serveurs possédant 4 processeurs. Standard Edition ONE - la gamme destinée à un bi-processeur. Personal Edition - La gamme pour l utilisateur indépendant (développeur, consultant, ), elle utilise un noyau Enterprise Edition. Les composants développés par Oracle pour le Grid Computing sont : Real Application cluster (RAC) : Supporte l exécution d Oracle sur un cluster d ordinateurs qui utilisent un logiciel de cluster indépendant de la plate forme assurant la transparence de l interconnexion. Automatic Storage Management (ASM) : Regroupe des disques de fabricants différents dans des groupes disponibles pour toute la grille. ASM simplifie l administration car au lieu de devoir gérer de nombreux fichiers de bases de données, on ne gère que quelques groupes de disques. Oracle Ressource Manager : Permet de contrôler l allocation des ressources des nœuds de la grille Oracle Scheduler : contrôle la distribution des jobs aux nœuds de la grille qui disposent de ressources non utilisées. Oracle Streams : Transfère des données entre les nœuds de la grille tout en assurant la synchronisation des copies. Représente la meilleure méthode de réplication. Quatre nouvelles options offrent des possibilités exclusives de gestion des données pour Oracle Database 11g Enterprise Edition : Oracle Real Application Testing Oracle Advanced Compression Oracle Total Recall Oracle Active Data Guard Oracle Real Application Testing aide ces clients à réduire les délais, les risques et les coûts de test de ces modifications de leur environnement informatique, de façon contrôlée et économique. Outil de tests et de gestion des changements, cet outil est bienvenu là où les infrastructures et environnements sont plus que jamais multiples. Oracle Advanced Compression intègre de nouveaux mécanismes de compression applicables à tous les types de données permettant d'atteindre des taux de compression de 2x ou 3x, et parfois plus. Associé à de nouveaux mécanismes de partitionnement, Oracle Advanced Compression permet de déployer dans la base de données des stratégies de gestion du cycle de vie des informations, sans avoir à modifier les applications, afin de réduire encore plus les besoins de stockage. Oracle Total Recall permet de conserver et de retrouver les historiques des données modifiées, mais aussi d'en simplifier l'accès.les administrateurs peuvent intervenir plus tôt dans les processus, ce qui apporte une nouvelle dimension de temps dans la gestion des données, comme le tracking (suivi, en temps réel des flux d'informations), les audits ou le respect des règles. Oracle DATA GUARD porte la protection des données jusqu'aux risques de défaillances des systèmes et de désastres. L'application permet simultanément d'écrire et récupérer les données Page 5/66
6 d'une base de données, ce qui augmente les performances et apporte une solution économique de 'Disaster Recovery'. Oracle Active Data Guard peut être employé pour améliorer la performance des bases de données de production en transférant vers une base de données physique secondaire des opérations requérrant beaucoup de ressources, telles que certaines requêtes ou les sauvegardes. Cette solution améliore fortement le retour sur investissement pour une base de données physique de secours, car celle-ci peut être utilisée à la fois pour la protection en cas de panne générale et pour l'amélioration de la qualité de service de l'environnement de production. Notion de Grid Computing La base de données intègre la notion de Grid Computing (réseau distribué d ordinateurs hétérogènes en grille). Le but du Grid est de créer des pools de ressources : de stockage de serveurs Le Grid Computing autorise un accès transparent et évolutif (en termes de capacité de traitement et de stockage) à un réseau distribué d ordinateurs hétérogènes. Oracle 11g permet à ces machines d intéropérer ; l ensemble étant considéré comme une seule ressource unifiée. Chaque ressource est vue comme un service. Il est possible de mettre en place des réseaux grille nationaux, voire mondiaux. Ainsi chaque nouveau système peut être rapidement mis à disposition à partir du pool de composants Exemple d application en Grid Computing Les deux applications présentées ci-dessous, Facturation et Comptabilité se partagent des ressources de deux serveurs. Chacune peut être hébergée sur n importe lequel d entre eux et les fichiers de base de données peuvent se trouver sur n importe quel disque. Page 6/66
7 La nouvelle fonctionnalité Automatic Storage Management (ASM) permet à la base de données de gérer directement les disques bruts, elle élimine le besoin pour un gestionnaire de fichier de gérer à la fois des fichiers de données et des fichiers de journaux. L ASM répartit automatiquement toutes les données de bases de données entre tous les disques, délivrant le débit le plus élevé sans aucun coût de gestion. Au fur et à mesure de l ajout et de l abandon de disques, l ASM actualise automatiquement la répartition des données. Pour utiliser ASM vous devez démarrer une instance appelée «ASM instance» qui doit être démarrée avant de démarrer l instance de votre propre base de données. Les instances ASM ne montent pas de base de données (ensemble de fichiers constituant la base) mais gère les metadatas requises pour rendre les fichiers ASM disponibles à n importe quelle instance de base de données. Les deux, instance ASM et instance «ordinaire» ont accès au contenu des fichiers. Communicant avec l instance ASM seulement pour connaître le layout des fichiers utilisés. Page 7/66
8 Outils de développement Oracle offre l'accès à un choix d'outils et processus de développement, avec de nouvelles fonctionnalités comme Client Side Caching, Binary XML, un nouveau compilateur Java, l'intégration native avec Microsoft Visual Studio 2005 pour les applications.net, Oracle Application Express pour les outils de migration, ou encore SQL Developer pour coder rapidement les routines SQL et PL/SQL. Page 8/66
9 2 La documentation La documentation Oracle est également consultable à partir du serveur : La documentation Oracle est également consultable à partir du serveur : Page 9/66
10 3 Les Outils d accés à la base Trois outils sont présents pour accéder à une base de données Oracle isql*plus, peut être utilisé en application indépendante ou connecté à un référentiel Oracle Management Server (OMS) SQL*Plus (sqlplus), interface d accés à la base de données en mode commande Oracle Enterprise Manager (OEM), appelé Grid Control ou Database Control. o o Database control est créé à la création d une base oracle et ne permet d administrer graphiquement que cette base de données Grid control est un outil qui permet d administrer une ferme de bases de données (oracle ou non oracle). 1.1 L outil isql*plus Outil Internet d accès à une base de données Oracle, permettant d écrire des requètes SQL (d une façon plus ou moins graphique). Par défaut, seule la connexion en tant qu utilisateur «normal» (non SYSDBA ou SYSOPER) est autorisée. Par contre, la connexion en tant qu utilisateur SYSDBA ou SYSOPER est protégée par une authentification au niveau du serveur HTTP Page 10/66
11 Pour l autoriser, il faut au choix : Ajouter des entrées (utilisateur / mot de passe) à l aide de l utilitaire htpasswd dans un fichier d authentification du serveur HTTP (défini par défaut dans le fichier de configuration isqlplus.conf à : ORACLE_HOME\sqlplus\admin\iplusdba.pw Désactiver l authentification du serveur HTTP pour ce type de connexion (directive <Location /isqlplusdba> dans le fichier de configuration isqlplus.conf) Lors d une connexion SYSDBA ou SYSOPER, l URL est modifiée en : L outil SQL*Plus Outil ligne de commande nommé SQLPLUS. SQLPLUS [ connexion ] [argument [, ]] ] Il permet de saisir et d exécuter des ordres SQL ou du code PL/SQL et dispose en plus d un certain nombre de commandes. -- sans connexion C:\> SQLPLUS /NOLOG -- avec connexion C:\> SQLPLUS system/tahiti@tahiti -- avec connexion et lancement d un script sur la ligne de commande C:\> SQLPLUS -- sous dos set ORACLE_SID=TAHITI -- connection sans fichier de mot de passe SQL> connect /as sysdba ConnectÚ. SQL> show user USER est "SYS" -- sous unix Export ORACLE_SID=TAHITI -- Connexion avec un fichier de mots de passe SQL> connect sys/secret as sysdba ConnectÚ. SQL> show user USER est "SYS" SQL> Page 11/66
12 1.2.1 Environnement de travail SQL*PLUS est avant tout un interpréteur de commandes SQL. Il est également fortement interfacé avec le système d'exploitation. Par exemple, sous UNIX, on pourra lancer des commandes UNIX sans quitter sa session SQL*PLUS. Un SGBDR est une application qui fonctionne sur un système d exploitation donné. Par conséquent, il faut se connecter au système avant d ouvrir une session ORACLE. Cette connexion peut être implicite ou explicite. Pour lancer SQL Plus sans se connecter à une base de données utilisez la commande : C:\> sqlplus /nolog Pour démarrer une session SQL Plus sous dos il suffit de se mettre en commande DOS puis d exécuter la commande SQL PLUS. -- avec connexion C:\> SQLPLUS charly/secret@tahiti SQL> show user USER est "charly" SQL> Page 12/66
13 Nous avons installé au préalable les couches clients ORACLE sur le Poste Client. Cette installation est simple, il suffit de renseigner les modules à installer et le protocole TCP/IP à utiliser (il peut y en avoir plusieurs sur une même machine). Depuis le groupe ORACLE, double cliquer sur l icône SQL*Plus... La boîte de dialogue suivante permet de saisir un compte et un mot de passe ORACLE... Le nom de la «Chaîne hôte» correspond au nom du service Oracle Net de la base de donnée à laquelle l utilisateur veut se connecter. Celle ci se trouve le plus souvent sur un serveur distant. La session SQL*PLUS est ouverte... Pour se positionner dans le répertoire courant il suffit d effectuer la manipulation suivante : Fichier Ouvrir (jusqu à se que l on voit le contenu du répertoire de travail dans la boîte de dialogue) OK pour sortir de la boîte de dialogue Oracle mémorise le chemin du répertoire affiché. Page 13/66
14 1.2.2 Le prompt SQL*Plus Une fois une session SQL*PLUS débutée l utilisateur peut travailler en interactif ou non. Dans le premier cas il saisira ses commandes sous le prompt SQL et devra les terminer par le caractère «;» pour lancer l interprétation. Dans le second cas, il construit ses scripts (avec l extension «.sql») et les lance sous le prompt SQL en les faisant précéder de start Une session SQL*PLUS se termine par la commande exit. La transaction en cours est alors validée. Une requête peut s écrire sur plusieurs lignes. A chaque retour chariot l interpréteur incrémente le numéro de ligne jusqu au «;» final qui marque la fin de la saisie. SQL> select * 2 from 3 avion; ID_AVION NOM_AVION Caravelle 2 Boeing 3 Planeur 4 A_Caravelle_2 Un script se lance par la commande start nom_script nom_script... SQL> start all_avion; ID_AVION NOM_AVION Caravelle 2 Boeing 3 Planeur 4 A_Caravelle_2 L éditeur par défaut avec lequel s interface SQL*PLUS est le «Bloc Notes» (c:\windows\notepad.exe). Les principes précédents restent les mêmes. SQL*Plus est un outil composé de commandes de mise en forme et d affichage A ne pas confondre avec des commandes SQL. Page 14/66
15 1.2.3 Quelques commandes SQL*Plus COL ADRESSE FORMAT A20, formater l affichage d une colonne ADRESSE sur 20 caractères COL PRIXUNIT FORMAT 99.99, formater l affichage d une colonne PRIXUNIT CLEAR COL, ré-initialiser la taille des colonnes par défaut SET LINESIZE 100, reformater la taille de la ligne à 100 caractères SET PAUSE ON, afficher un résultat page par page SHOW USER, visualiser le user sous lequel on est connecté CONNECT, se connecter à l instance User/MotPass@adresseServeur, permet de changer de session utilisateur CLEAR SCREEN, ré-initialiser l écran SET SQLPROMPT TEST>, afficher le prompt SQL en : TEST> DESC Nom_Table, afficher la structure d une table ou d une nom_ficher, permet d exécuter le contenu d un fichier sql /, ré-active la dernière commande SET ECHO ON/OFF, affiche ou non le texte de la requête ou de la commande à exécuter SAVE nom_ficher [append create replace], permet de sauvegarder le contenu du buffer courant dans un fichier «.sql». TIMING ON OFF, provoque l affichage d informations sur le temps écoulé, le nombre d E/S après chaque requête TI ON OFF, provoque l affichage de l heure avec l invite TERM [ON OFF], supprime tout l affichage sur le terminal lors de l exécution d un fichier VER [ON OFF], provoque l affichage des lignes de commandes avant et après chaque substitution de paramètre. SQL }, spécifie le caractère «}» comme étant le caractère de continuation d une commande SQL*Plus. SUFFIX txt, spécifie l extension par défaut des fichiers de commande SQL*Plus Générer un fichier résultat appelé «spool» La commande SPOOL permet de générer un fichier résultat contenant toutes les commandes passées à l écran SPOOL NomFichier.txt, permet d activer un fichier de format texte dans lequel on retrouvera les commandes et résultas affichés dans SQL Plus. Page 15/66
16 SPOOL OFF, permet de désactiver le spool ouvert précédemment. SPOOL MonFichier.txt -- commandes SQL affichées -- commandes SQL affichées -- commandes SQL affichées Spool OFF Déclarer un éditeur Pour déclarer NotPad comme éditeur SQL*PLUS, et l extension «.txt» pour exécuter un script il suffit de saisir ces deux lignes de commandes : SET SUFFIX TXT DEFINE _EDITOR = NOTPAD Après avoir tapé ces 2 lignes de commandes taper : ED Pour afficher l éditeur NotPad. 1.3 Utilisation de paramètres L instruction ACCEPT permet de saisir des valeurs de paramètres (ce ne sont pas des variables et à ce titre ne nécessitent aucune déclaration). ACCEPT reference NUMBER PROMPT 'Entrez la référence d un avion: ' select * from avion where Id_avion=&reference; Entrez la référence d un avion: 1 ID_AVION NOM_AVION Caravelle Page 16/66
17 4 Le dictionnaire de données C est un ensemble de tables et de vues qui donne des informations sur le contenu d une base de données. Il contient : Les structures de stockage Les utilisateurs et leurs droits Les objets (tables, vues, index, procédures, fonctions, ) Le dictionnaire de données chargé en mémoire est utilisé par Oracle pour traiter les requêtes. Il appartient à l utilisateur SYS et est stocké dans le tablespace SYSTEM. Sauf exception, toutes les informations sont stockées en MAJUSCULE. Il contient plus de 866 vues. Il est créé lors de la création de la base de données, et mis à jour par Oracle lorsque des ordres DDL (Data Définition Langage) sont exécutés, par exemple CREATE, ALTER, DROP Il est accessible en lecture par des ordres SQL (SELECT) et est composé de deux grands groupes de tables/vues : Les tables et vues statiques Basées sur de vraies tables stockées dans le tablespace SYSTEM Accessible uniquement quand la base est ouverte «OPEN» Les tables et vues dynamiques de performance Sont en fait uniquement basées sur des informations en mémoire ou extraites du fichier de contrôle S interrogent néanmoins comme de vraies tables/vues Donnent des informations sur le fonctionnement de la base, notamment sur les performances (d où leur nom) Pour la plupart accessibles même lorsque la base n est pas complètement ouverte (MOUNT) Les vues statiques de performances sont stockées dans le fichier de contrôle, et disponibles à l ouverture de celui-ci (voir démarrage et arret d une base Oracle). Page 17/66
18 Les vues statiques sont constituées de 3 catégories caractérisées par leur préfixe : USER_* : Informations sur les objets qui appartiennent à l utilisateur ALL_* : Information sur les objets auxquels l utilisateur a accès (les siens et ceux sur lesquels il a reçu des droits) DBA_* : Information sur tous les objets de la base Derrière le préfixe, le reste du nom de la vue est représentatif de l information accessible. Les vues DICTIONARY et DICT_COLUMNS donnent la description de toutes les tables et vues du dictionnaire. Oracle propose des synonymes sur certaines vues : Synonyme cols dict ind obj seq syn tabs Vue correspondante User_tab_columns Dictionnary User_indexes User_objects User_sequences User_synonyms User_tables Les vues dynamiques de performance sont : Préfixées par «V$» Derrière le préfixe, le reste du nom de la vue est représentatif de l information accessible Décrites dans les vues DICTIONARY et DICT_COLUMNS Exemple de vues dynamiques V$INSTANCE V$DATABASE V$SGA V$DATABASE V$PARAMETER Page 18/66
19 5 Le langage SQL Le langage SQL (Structured Query Langage) s appuie sur les normes SQL ANSI en vigueur et est conforme à la norme SQL92 ou SQLV2 (ANSI X n, ISO Standard 9075, FIPS 127). Il a été développé dans le milieu des années 1970 par IBM (System R). En 1979 Oracle Corporation est le premier à commercialiser un SGBD/R comprenant une incrémentation de SQL. Oracle comme acteur significatif intègre ses propres extensions aux ordres SQL. Depuis l arrivée d internet et de l objet Oracle fait évoluer la base de données et lui donne une orientation objet, on parle SGBDR/O : System de Base de Données relationnel Objet. Les sous langages du SQL sont : LID : Langage d Interrogation des données, verbe SELECT LMD : Langage de Manipulation des Données, utilisé pour la mise à jour des données, verbes INSERT, UPDATE, DELETE, COMMIT, ROLLBACK LDD : Langage de définition des données, utilisé pour la définition et la manipulation d objets tels que les tables, les vues, les index, verbe CREATE, ALTER, DROP, RENAME, TRUNCATE LCD : Langage de Contrôle des Données, utilisé pour la gestion des autorisations et des privilèges, verbe GRANT, REVOKE 1.4 Notion de schema Le terme SCHÉMA désigne l ensemble des objets qui appartiennent à un utilisateur, ces objets sont préfixés par le nom de l utilisateur qui les a créés. En général on indique sous le terme de schéma, l ensemble des tables et des index d une même application. Principaux types d objets de schéma : Tables et index Vues, séquences et synonymes Programmes PL/SQL (procédures, fonctions, packages, triggers) 1.5 Rêgles de nommage Un nom de structure Oracle doit respecter les règles suivantes : 30 caractères maximums Doit commencer par une lettre Peut contenir des lettres, des chiffres et certains caractères spéciaux (_$#) N est pas sensible à la casse Ne doit pas être un mot réservé Oracle Page 19/66
20 6 L extension objet gérée par Oracle Oracle supporte l extension objet dans : Les requêtes SQL Les blocs PL/SQL Les programmes en OCI (Oracle Call Interface) Les pré-compilateurs Il est possible de déclarer des paramètres et des variables de types objet, d utiliser des méthodes et des procédures stockées qui opèrent sur des objets et référencer des attributs de types objet. Il est également possible d utiliser les ordres DML (INSERT, UPDATE, DELETE ) sur les types objets dans les procédures PL/SQL. 1.6 Le concept objet La notion d objet complète la notion de type abstrait de données. Un objet détient deux types d éléments : des attributs (la valeur de ses données) et un comportement (ses opérations ou méthodes). Les premiers décrivent un objet et le distinguent des autres. Le second est la description des actions d un objet (les procédures). Ainsi un objet est une pièce de logiciel constituée de données et de procédures qui agissent sur ces données. Les procédures sont appelées les méthodes et les données les attributs. Une méthode est une «manière» d accomplir une tâche (ensemble des démarches raisonnées pour parvenir à un but). C est la réalisation d une opération. Un objet a un état (l'ensemble des valeurs de ses attributs à un moment donné) et un comportement (l'ensemble des algorithmes décrits dans ses méthodes). L'encapsulation est le procédé qui permet de séparer clairement l'interface (partie publique) de l'objet de son implémentation (partie privée). L'idée est de masquer tout ce qui pourrait rendre les autres objets dépendants (principe de faible couplage entre objets). La contrepartie est qu'un objet doit avoir une forte cohésion interne (il ne doit traiter que ce qui le concerne, mais tout ce qui le concerne). Un objet est rarement utile isolément. Il faut voir la programmation objet comme une collection d'objets qui coopèrent ensemble. On dit que les objets s'échangent des messages. En fait, ils se rendre des services entre eux par appel de méthodes. Page 20/66
21 Les états et les comportements des objets sont définis par des classes qui sont des modèles pour la construction des objets. Ainsi la classe est un prototype qui définit un type d'objet. On dira qu'un objet est une instance de classe (en fait, une variable d'un certain type). De la même façon que différentes maisons peuvent avoir le même plan, différents objets peuvent être instances de la même classe (ils ont le même type mais pas forcément le même état). Chaque objet d'une même classe a ses propres valeurs d'attributs mais un comportement identique (les mêmes méthodes). Un constructeur est une méthode spéciale qui est utilisée pour initialiser un objet nouvellement créé. 1.7 De UML à SQL3 Un type regroupe un ensemble d objets qui possèdent les mêmes structures et comportent les mêmes caractéristiques. Oracle 8 permet la création de types et ajoute de nouveau types pour supporter les objets volumineux (LOB). Les types définis par l utilisateur peuvent être une combinaison de types prédéfinis ou de types définis antérieurement. Il existe des bibliothèques contenant des définitions de types qui peuvent être fournies par Oracle ou des sociétés partenaires. Le terme de «cartouches» est généralement employé (Cartridge). Par exemple Oracle fournit une «image data cartridge» qui est un groupe de datatypes utilisables par les réalisateurs pour manipuler des images. Un nouveau format de ROWID permet l adressage dans les partitions et repousse les limites de taille. Page 21/66
22 7 Evolution de l objet à SQL3 Les outils de conception UML génèrent des classes C++ et JAVA mains sont moins adaptés aux base de données. Les scripts SQL3 permettent de générer un schéma objet vers unes base de données objet relationnelle. La syntaxe Oracle est trés proche de la norme SQL3. Ainsi une classe UML du diagramme de classe se traduit en un type de données avec la syntaxe : CREATE TYPE et une table objet relationnelle issue de ce type. La commande CREATE TYPE permet la déclaration d une structure de données simple ou complexe pouvant contenir des déclarations de méthodes. Cette structure peut être utilisée dans un programme ou peut former une table objet-relationnelle. La commande DROP TYPE permet de détruire le type. Dans l exemple ci-dessous le type pilote_type déclare 2 pointeurs par un attribut de type REF vers un type défini auparavant. Exemple Create type pilote_type as object (numpilote NUMBER, Nom CHAR(10), Grade CHAR(10), RefSani REF sanitaire_type, Refentraine REF entraine_type ) ; La commande CREATE TABLE nomtable OF nomtype, déclare une table objet-relationnelle issue d un type. Ainsi chaque ligne de la table sera doté d un unique OID (Object Identifier) qui pourra être utilisé comme un pointeur. La table objet-relationnelle Pilote, peut stocker des objets de type pilote_type comme le montre l exemple ci-dessous. Exemple Create table pilote OF pilote_type ; La commande DROP TABLE pilote ; permet de supprimer la table. La commande DESC affiche la structure de la table objet-relationnelle. Page 22/66
23 Exemple DESC pilote Nom Null Type NUMPILOTE NUMBER NOM CHAR(10) GRADE CHAR(10) SANI REF OF SANITAIRE_TYPE ENTRAINE REF OF ENTRAINE_TYPE 1.8 Les associations de cardinalités 1-1 Le diagramme de classe UML ci-dessous représente la possibilité pour un étudiant d effectuer 1 stage. STAGE ETUDIANT 1 effectue Nstage Theme Netu Nom Age 1 ère solution : Définition d un attribut REF ou d une contrainte de type FOREIGN KEY dans le type qui décrit STAGE et qui pointe vers le type qui décrit ETUDIANT. 2 ème solution : Définition d un type qui contient 2 attributs REF ou FOREIGN KEY vers les types décrivant STAGE et ETUDIANT. En utilisant 2 attribut REF dans la 2 ème solution, on retrouve la solution universelle qui convient à tous les types d association. Afin de maintenir la cohérence des cardinalités 1, il conviendrait de définir une contrainte UNIQUE sur chaque pointeur. Pour les attributs de type FOREIGN KEY c est possible, mais pas toujours pour les attributs de type REF. Page 23/66
24 Implémentation de la 1 ère solution sous SQL3, en utilisant un attribut de type REF. La cardinalité 1 de l association effectue, se traduit par un contrainte NOT NULL sur le pointeur. Oracle permet de limiter la portée à une table donnée par la directive SCOPE IS. Ces 2 sont en gras dans le scripts SQL3. Exemple Create type stage_type AS OBJECT (nstage CHAR(4), Theme CHAR(30) ); Create type etudiant_type AS OBJECT (netu CHAR(4), nom CHAR(30), age NUMBER, refsta REF refstage_type ); Create table stage OF stage_type ( constraint pk_stage PRIMARY KEY(nstage) ); Create table etudiant OF etudiant_type ( CONSTRAINT pk_etudiant PRIMARY KEY(netu), CONSTRAINT nn_refsta CHECK(refsta IS NOT NULL), CONSTRAINT scope_refsta refsta SCOPE IS stage ); Même si les pointeurs permettent d implémenter une association entre 2 tables (une de type père et une de type fils), comme les contraintes FOREIGN KEY, ils n offrent pas les dépendances de celles-ci. Ainsi on peut détruire le père même si des fils le référencent. L intégrité référentielle est à programmée. Avec Oracle il est possible de savoir si un objet fils n est rattaché à aucun père en utilisant la directive DANGLING dans une requête SQL. Il n est pas possible de définir une clé primaire, une contrainte UNIQUE ou un index sur une colonne de type pointeur. Page 24/66
25 1.9 Les associations de cardinalités 1-n Ces association sont preprésentées par des collections. Une collection est une liste dans une cellule. Pour décrire une association de type 1-N entre 2 classes il existe 3 solutions : 1 ère solution : Définition d une collection (NESTED TABLE ou VARRAY pour Oracle) dans le type dérivé de la classe père Cette collection contient un attribut REF qui référence le type dérivé de la classe fils. 2 ème solution : Définition d un attribut REF ou FOREIGN KEY dans le types dérivé de la classe fils qui référence le type dérivé de la classe père. Page 25/66
26 3ème solution : Définition d un troisième type contenant 2 attributs REF ou FOREIGN KEY qui référencent les types dérivé de la classe fils et de la classe père. La 3 ème solution correspond à la solution universelle. SANITAIRE PILOTE 0..* Detachement codesan Nstage Theme 0..1 Operation ENTRAINEMEN T codent dateent Dans notre exemple la première association détachement est réalisée avec la solution 1, et l association opération avec la solution 2. Pour traduire l association détachement, le pointeur refsani est implanté dans le fils, correspondant à pilote_type. La cardinalité 1 du coté Sanitaire est implémenté avec une contrainte NOT NULL. (les lignes concernées sont en gras). Pour traduire l association Opération, une collection contenant un pointeur est utilisée. Exemple Create type sanitaire_type as object (codesan CHAR(10), organisme CHAR(20) Create type entrainement_type as object (codent CHAR(10), datent DATE, region CHAR(20) Create type elt_collection_ent as object (refent REF entrainement_type) Page 26/66
27 Create type collection_ent as table of _collection_ent ; Create type pilote_type as object (numpi1 NUMBER, Nom CHAR(10), Grade CHAR(10), RefSani REF sanitaire_type, Operation collection_ent) ; Create table sanitaire of sanitaire_type (constraint pk_sanitaire PRIMARY KEY(codesan) Create table entrainement OF entrainement_type (constraint pk_entrainement PRIMARY KEY(codent) Create table pilote OF pilote_type (constraint pk_pilote_sanitaire PRIMARY KEY(numpi1), Constraint nn_refsani CHECK (refsani IS NOT NULL) NESTED table operation STORE AS temp ; Une collection n est pas sans effet au niveau de la base de données, elle privilégie un accés aux données via la table qui la contient. L extraction des missions d entraînement pour le pilote dans notre exemple sera immédiate, par contre la liste des pilotes concernés par un mission sera très coûteuse car elle sera faite par NESTED LOOP (curseurs imbriqués) Les associations de cardinalités n-n Pour SQL3 ill y a 2 solutions pour décrire une associétion N-N entre 2 classes. La première solution privilègie un accés aux données par une table. 1 ère solution : Définition d une collection (NESTED TABLE ou VARRAY pour Oracle) dans le type dérivé de la classe père Cette collection contient un attribut REF qui référence le type dérivé de la classe fils. L autre solution est symétrique à la première, c'est-à-dire que la collection se trouve dans le fils et référence le père. 2 ème solution : Définition d un type contenant 2 attributs REF ou FOREIGN KEY qui référencent les types dérivés des classes père et fils. Cette dernière solution correspond à la solution universelle. Page 27/66
28 Dans l exemple ci-dessous nous dérivons l association AFFRETER avec la première solution en privilègiant les accés aux données par les compagnies. AVION Immat Typeav AFFRETER 1..* O..* Dateaff COMPAGNIE Comp Nomcomp L association AFFRETER par la première solution nécessite une collection collavi contenant le pointeur refavi Exemple Create type avion_type as object (immatn VARCHAR(6), typvar VARCHAR(10) Create type elt_collection_avi as object (refavi REF avion_type Dateaff DATE Create type collection_avi_type as table of elt_collection_avi; Create type compagnie_type as object (comp VARCHAR(4), nomcomp VARCHAR(30), collavi collection_avi_type, Page 28/66
29 Create table avion of avion_type (constraint pk_avion PRIMARY KEY(immat) Create table compagnie OF compagnie_type (constraint pk_compagnie PRIMARY KEY(comp)) NESTED TABLE collavi STORE AS tempavi) ; 1.11 Les associations de cardinalités n-aire Pour SQL3 il y a plusieurs solutions pour décrire une association N-aire, autant de solutions que N. La première solution privilègie un accés aux données par une table. 1 ère solution : Définition d un type contenant n attributs REF ou FOREIGN KEY qui référencent les N types dérivés de la classe père et ses fils. 2 ème solution et N : Définition d une collection (NESTED TABLE ou VARRAY pour Oracle) dans le type dérivé de la classe père Cette collection contient n-1 attributs REF qui référencent les types dérivés des n-1autres classes fils. Dans l exemple ci-dessous nous modélisons le fait de stocker les temps de vol des avions sur chaque tronçon. Un tronçon est caractérisé par un aéroport de départ et un aéroport d arrivée. Le temps de vol dépend des 5 identifiants des classes. Il faut connaître la compagnie qui a affrété le vol, la date du vol, le tronçon et l appareil pour déterminer un temps de vol. Nous dérivons l association TRONCON de l exemple dans un premier temps avec la première solution puis en privilégiant dans un second temps les accés aux données par les compagnies Page 29/66
30 AVION dépar 1 AEROPORT appareil Immat Typeav 1 1..* 1..* Association TRONCON Code0ACI nomaero 1 affreteur 1 1..* Tempsvol 1..* arrivée COMPAGNIE 0..* DATEVOL Comp Nomcomp moment 1 datv Script représentant la solution universelle Create type avion_type as object (immatn VARCHAR(6), typvar VARCHAR(10) Create type aeroport_type as object (code0aci VARCHAR(6), nomaero VARCHAR(30) Create type compagnie_type as object (comp VARCHAR(4), nomcomp VARCHAR(30) CREATE TYPE tronçon_type AS OBJECT ( refavi REF avion_type, Refdaepart REF aeroport_type, Refarrivee REF aeroport_type, Refcomp REF compagnie_type, datev DATE, tempsvol NUMBER Page 30/66
31 Create table avion of avion_type (constraint pk_avion PRIMARY KEY(immat) Create table compagnie OF compagnie_type (constraint pk_compagnie PRIMARY KEY(comp) Create table aeroport of aeroport_type (constraint pk_aeroport PRIMARY KEY(code0ACI) Create table tronçon OF tronçon_type ( constraint nn_refavi CHECK (refavi is not null), constraint nn_refdepart CHECK (refdepart is not null), constraint nn_refarrivee CHECK (refarrivee is not null), constraint nn_refcomp CHECK (refcomp is not null), constraint nn_datev CHECK (datev is not null), Script représentant un accès L implantation tronçon, en privilégiant les accès aux données par les compagnies nécessite la définition de la collection collvols contenant les pointeurs vers les trois classes (Aéroport départ, Aéroport arrivée, Avion). Ainsi que les attributs tempsvol et datev. Create type avion_type as object (immatn VARCHAR(6), typvar VARCHAR(10) Create type aeroport_type as object (code0aci VARCHAR(6), nomaero VARCHAR(30) CREATE TYPE elt_collvols AS OBJECT ( refavi REF avion_type, Refdepart REF aeroport_type, Refarrivee REF aeroport_type, datev DATE CREATE TYPE collvols_type AS TABLE OF elt_collvols ; Create type compagnie_type as object (comp VARCHAR(4), collvols collvols_type Create table aeroport of aeroport_type (constraint pk_aeroport PRIMARY KEY(code0ACI) Page 31/66
32 Create table avion of avion_type (constraint pk_avion PRIMARY KEY(immat) Create table compagnie OF compagnie_type (constraint pk_compagnie PRIMARY KEY(comp)) NESTED TABLE collvols STORE AS tempvols; 1.12 Les associations reflexives Pour SQL3 il faudra utiliser une des solution proposée en association N-aire. 1 ère solution : Définition d un type contenant n attributs REF ou FOREIGN KEY qui référencent les N types dérivés de la classe père et ses fils. 2 ème solution et N : Définition d une collection (NESTED TABLE ou VARRAY pour Oracle) dans le type dérivé de la classe père Cette collection contient n-1 attributs REF qui référencent les types dérivés des n-1autres classes fils. La solution universelle (le 1ere exemple) convient dans tous les cas. Rappel : Dans l exemple ci-dessous nous modélisons le fait de stocker les temps de vol des avions sur chaque tronçon. Un tronçon est caractérisé par un aéroport de départ et un aéroport d arrivée. Le temps de vol dépend des 5 identifiants des classes. Il faut connaître la compagnie qui a affrété le vol, la date du vol, le tronçon et l appareil pour déterminer un temps de vol. Nous dérivons l association TRONCON de l exemple dans un premier temps avec la première solution puis en privilégiant dans un second temps les accés aux données par les compagnies. Page 32/66
33 AVION dépar 1 AEROPORT appareil Immat Typeav 1 1..* 1..* Association TRONCON Code0ACI nomaero 1 affreteur 1 1..* Tempsvol 1..* arrivée COMPAGNIE 0..* DATEVOL Comp Nomcomp moment 1 datv Script représentant la solution universelle Create type avion_type as object (immatn VARCHAR(6), typvar VARCHAR(10) Create type aeroport_type as object (code0aci VARCHAR(6), nomaero VARCHAR(30) Create type compagnie_type as object (comp VARCHAR(4), nomcomp VARCHAR(30) CREATE TYPE tronçon_type AS OBJECT ( refavi REF avion_type, Refdaepart REF aeroport_type, Refarrivee REF aeroport_type, Refcomp REF compagnie_type, datev DATE, tempsvol NUMBER Page 33/66
34 Create table avion of avion_type (constraint pk_avion PRIMARY KEY(immat) Create table compagnie OF compagnie_type (constraint pk_compagnie PRIMARY KEY(comp) Create table aeroport of aeroport_type (constraint pk_aeroport PRIMARY KEY(code0ACI) Create table tronçon OF tronçon_type ( constraint nn_refavi CHECK (refavi is not null), constraint nn_refdepart CHECK (refdepart is not null), constraint nn_refarrivee CHECK (refarrivee is not null), constraint nn_refcomp CHECK (refcomp is not null), constraint nn_datev CHECK (datev is not null), 1.13 Les classes-associations La traduction des classes association, en SQL3 ; pour chaque association il faut utiliser une des méthodes proposée en fonction de la nature de l association vu précédemment, (1-1, 1-*, *-*) 1.14 Les associations d héritage SQL3 inclus des notions d héritages de type et d héritage de tables. ORACLE ne prend pas en comppte la notion d héritage mais DB2 ou Informix le font. Le schéma ci-dessous représentent PNC et PNT qui héritent de PERSONNEL. La directive UNDER permet aux types PNC et PNT d hériter de PERSONNEL La table PERSONNEL stockera les Personnels n étant ni PNT ni PNC. L avantage de l héritage par type permet une fois déclarée entrer dans la composition d un autre type, ou peut permettre de définir plusieurs tables. Page 34/66
35 Par contre il ne permet pas de modifications de structures comme l héritage par tables (ajout de colonnes par exemple). PERSONNEL Numpers PNT PNC Brevet Indice Héritage par type Create type personnel_type (numpers NUMBER, nompers VARCHAR(20) Create type PNC_type UNDER Personnel_type (indice NUMBER, prime NUMBER(8,2) Create type PNT_type UNDER Personnel_type (brevet VARCHAR(10), validitelicence DATE Create table Personnel of Personnel_type (constraint pk_personnel PRIMARY KEY(numpers) Create table PNC OF PNC_type ; Create table PNT OF PNT_type ; Page 35/66
36 Héritage par table Create table personnel (numpers NUMBER, nompers VARCHAR(20), constraint pk_personnel PRIMARY KEY(numpers) Create table PNC UNDER Personnel (indice NUMBER, prime NUMBER(8,2) Create table PNT UNDER Personnel (brevet VARCHAR(10), validitelicence DATE PERSONNEL Numpers PNT PNC Brevet Indice Page 36/66
37 8 Gestion des types objets dans oracle Remarques concernant les collections Une collection peut être considérée comme un ensemble d enregistrements identiques. Il existe deux catégories de collections : Les tableaux (Varying length array : VARRAY Les tables imbriquées (Nested tables) Les éléments d une collection peuvent être de type pré-défini ou de type créé par l utilisateur. Restrictions sur les collections : Un index ne peut pas porter sur une collection, mais les attributs individuels des tables imbriquées peuvent être indexés Les attributs des tables imbriquées et des VARRAYS (tableaux de collections) ne peuvent pas être utilisés comme critères de partitionnement Une contrainte ne peut pas porter sur une collection La collection ne peut pas être utilisée dans une clause DISTINCT, GROUP BY ou ORDER BY Une collection ne peut pas être indiquée dans la projection d un SELECT avec UNION, UNION ALL, INTERSECT ou MINUS. Pas d utilisation des opérateurs de comparaison (=, <=, >=, IN, =, ANY) Les consultations parallélisées, les ordres DML parallélisés, la distribution et la réplication ne sont pas supportés 1.15 Les tables imbriquées Les types valides de l élément inclut les types Oracle et les types PL/SQL exceptés BOOLEAN, NCHAR, NCLOB, NVARCHAR2, REF CURSOR, TABLE et VARRAY ; ainsi que les types objets exceptés ceux contenant des attributs de type TABLE ou VARRAY. Create type nom_type as table of type_element ; Create type individu_type ( nom varchar2(30), prenom varchar2(30), date_nais date create type table_individu_type as table of individu_type ; create table departement ( Page 37/66
38 deptno number(5), dname varchar2(20), employes table_individu_type ) nested table employes store as t_employes ; create index I_nom on t_employes(nom La clause obligatoire NESTED TABLE STORE AS permet d indiquer le nom de la table qui contiendra les lignes de la table imbriquée. Un index peut être créé sur un attribut de la table imbriquée, l index devra porter sur le nom de table indiqué dans la clause STORE AS. Une table imbriquée peut être manipulée soit comme un enregistrement simple, soit comme une table distincte. Il existe deux nouveaux opérateur pour la manipulation des tables imbriquées : CAST : permet de traiter une requête retournant un ensemble de lignes comme une collection nommée. THE ou TABLE : permet de traiter le contenu d une table imbriquée comme s il s agissait d une table externe. Exemple 1 Insert into departement values ( 50, marketing, CAST (multiset ( select * from table_emp p where p.name = marketing ) as emp_type ) L opérateur MULTISET doit être employé lorsque plusieurs lignes sont sélectionnées. Exemple 2 Insert into the (select employes from dept where deptno = 10 ) values ( sinatra, emmanuelle, 12/08/67 Insertion d une ligne dans la table imbriquée de la ligne du département numéro 10. Page 38/66
39 1.16 Les types VARRAY et VARYING ARRAY Ce type est une collection d éléments similaires, qui permet d agréger plusieurs valeurs stockées dans une colonne. C est un ensemble ordonné d éléments qui comportent les attributs suivants : COUNT : numéro courant de l élément LIMIT : nombre maximum que le VARRAY peut contenir (défini à la création), entre 1 et 2 (puissance 31) 1. Un élément est une valeur qui a une position unique dans le VARRAY. Chaque élément possède l attribut : POSITION qui est l ordre de l élément par rapport aux autres éléments, indiqué par un numéro. Les valeurs par défaut et les contraintes ne peuvent pas être déclarées sur les VARRAYS ni sur ses éléments.. Caractéristiques d un type VARRAY : Accès : les éléments ne peuvent pas être accédés individuellement en SQL mais peuvent être accédés en utilisant les arrays PL/SQL avec indice. Stockage : si le stockage des données de l array nécessite moins de 4 Ko, les données sont stockées avec la table, sinon, les données sont stockées en dehors comme les LOB. Types des éléments : il peut être une table scalaire (pas de LOB), une référence (REF), un type objet qui ne contient pas de table imbriquée mais qui peut contenir un VARRAY, par contre il ne peut pas être un VARRAY ou une table imbriquée. Le constructeur : il est défini implicitement, c est ce constructeur qui peut être utilisé dans les requêtes DML (INSERT, UPDATE..). Un constructeur est une méthode spéciale qui est utilisée pour initialiser un objet nouvellement créé. Page 39/66
40 Create [or replace] type [schema.]nom_type As {varray varying array} (limite) Of datatype ; Create type enfant_type as objext ; (prenom varchar2(30), date_nais date ); create type enfants_typ as varray(10) of enfant_type ; create table emp ( empno number, nom varchar2(30), enfants enfants_typ insert into emp values ( 7839, enfants_typ (enfant_typ( sandra, 05-JAN-77 ), enfant_typ( adeline, 15-MAR-80 ), enfant_typ( gaelle, 05-JAN-87 ) ) update emp set enfants = enfants_typ (enfant_typ( sandra, 05-JAN-77 ), enfant_typ( adeline, 15-MAR-80 ), enfant_typ( gaelle, 05-JAN-87 ) ) ; L insertion ou la modification de valeurs dans un VARRAY doit être réalisée sur la totalité des valeurs, mais ne peut pas se faire sur un élément seul. A partir de la version 9i, il est possible d avoir une collection de collections ou une collection d objets ayant un attribut collection : -- création d'un type VARRAY pour stocker des numéros de téléphone CREATE OR REPLACE TYPE type_telephone IS VARRAY(5) OF VARCHAR2(15) / -- création d'un type objet pour stocker des personnes CREATE OR REPLACE TYPE type_personne IS OBJECT ( nom VARCHAR2(20), prenom VARCHAR2(20), telephones type_telephone -- téléphones de la personne = VARRAY ) / Page 40/66
41 -- création d'un type table imbriquée pour stocker -- une liste de personnes -- c est une collection multi-niveau puisque basée sur un type -- qui contient lui même une collection CREATE OR REPLACE TYPE type_table_personne IS TABLE OF type_personne / Page 41/66
42 9 Les types objet Un type doit avoir un ou plusieurs attributs. Chaque attribut doit posséder un nom et un type. L utilisateur doit posséder le privilège EXECUTE sur le type utilisé. Create type individu_type (nom varchar2(30), prenom varchar2(30), date_nais date Création de type composé Create type employe_type (individu_info individu_type, Salaire number(7,2) Création de type cyclique Create type employe_type as object ; Create type departement_type as object ( depno number(2) mgr ref employe_type create or replace type employe_type as object (empno number, ename varchar2(30), dept ref departement_type Création de table utilisant les types définis Create table emp ( empno number, Ename varchar2(30), Dept ref departement_type Page 42/66
43 Résolution des noms attributs Select e.empno, e.employe_info.ename From emp e ; Update emp Set employe_info.deptno = 10 Where employe_info.ename = Jones ; 1.17 Les attributs Les attributs peuvent être indexés comme s il s agissait de colonnes élémentaires. La colonne objet ne peut pas être indexée directement mais vous pouvez concaténer tous les attributs du type. Un index ne peut être créé sur les types suivants : LOB Attributs table imbriquée Attribut VARRAY 1.18 l OID L OID est l identifiant qu Oracle assigne à chaque ligne d une table objet, il garanti l unicité de chaque objet, si l objet disparaît complètement l OID n est jamais réutilisé. L existence de cet OID permet de rendre l objet référençable avec la clause REF. Opérateurs sur objet : - REF(nom table) : permet de construire une référence à un objet - REF INTO : permet de capturer la référence d un objet dans une nouvelle ligne insérée - DEREF (reference) : retourne la valeur stockée dans une référence - IS DANGLING : si l instance de l objet référencé par REF est supprimée, la référence est dite «dangling». L opérateur IS DANGLING permet de tester l absence de l instance de l objet référencé. - VALUE(nom_table) : retourne la valeur contenue dans la ligne de la table. Page 43/66
44 1.19 Les méthodes Les méthodes sont des procédures ou des fonctions qui font partie de la définition du type. Parce qu elles sont incluses dans cette définition elles sont dites des méthodes membres (MEMBER) du type. Les méthodes doivent être déclarées dans la partie spécification du type et doivent être définies dans la partie body comme les packages. Les méthodes peuvent être : Des constructeurs Des méthodes MAP Des méthodes ORDER La méthode constructeur est une fonction qui crée une instance du type, elle est nommée comme le type et est créée implicitement pour permettre la création des instances du type. Elle est appelée à la création d une instance du type. Create type emp_type as object ( empno number, ename varchar2(30) DECLARE new_emp emp_type ; BEGIN New_emp := emp_type(3682, Dupont END; / 1.20 Modifier un type utilisé Un type objet peut-être référencé dans tous les objets d un schéma, à la place d un type prédéfini (table, type, sous-type, unité de programme PL/SQL, ) Avant Oracle9i, un type ne peut pas être modifié s il est utilisé dans une table ou dans un autre type Car des données persistantes dépendent de la définition du type Page 44/66
45 Avec Oracle9i, des options dans les ordres SQL ALTER TYPE et ALTER TABLE permettent de modifier la définition d un type et de propager les modification dans les types et tables dépendants Les modifications autorisées sont les suivantes Ajouter ou supprimer des attributs et/ou des méthodes Augmenter la longueur ou la précision d un attribut de type NUMBERAugmenter la longueur d un attribut de type VARCHAR2Modifier les propriétés FINAL et INSTANTIABLE du type Syntaxe simplifiée de la clause de gestion des dépendances de l ordre SQL ALTER TYPE ALTER TYPE INVALIDATE CASCADE [ [NOT] INCLUDING TABLE DATA ] - INVALIDATE : invalide tous les objets dépendants - CASCADE : propage les modifications dans les types et tables dépendants - INCLUDING TABLE DATA : convertit toutes les données concernées dans les tables (valeur par défaut) - NOT INCLUDING TABLE DATA : seul le dictionnaire est mis à jour, pas les données Remarques sur la clause NOT INCLUDING TABLE DATA À chaque interrogation, les données sont converties dynamiquement dans la nouvelle version du type, mais pas réécrites dans la base Les données peuvent ensuite être converties dans les tables par un ordre UPDATE ou grâce à la clause UPGRADE de l ordre SQL ALTER TABLE Syntaxe de la clause de la clause UPGRADE de l ordre SQL ALTER TABLE ALTER TABLE UGRADE [ [NOT] INCLUDING DATA ] -- modification du type TYPE_ARTICLE ALTER TYPE type_article DROP ATTRIBUTE reference, -- suppression d'un attribut ADD ATTRIBUTE -- ajout de deux attributs ( nom VARCHAR2(20), devise VARCHAR2(3) ), MODIFY ATTRIBUTE prix_ht NUMBER(8,2) -- modification -- d'un attribut CASCADE NOT INCLUDING TABLE DATA -- pas de conversion -- des données / -- conversion ultérieure des données dans la table ARTICLE ALTER TABLE article UPGRADE INCLUDING DATA / Page 45/66
46 1.21 Héritage Un type objet peut être créé comme sous-type d un type objet existant. Qui peut être lui même un sous-type d un autre type (hiérarchie de types) Par contre l héritage multiple n est pas supporté Types FINAL ou NOT FINALUn type doit être déclaré NOT FINAL pour pouvoir avoir des sous-types Par défaut, un type est défini FINAL (pas d héritage possible) Dans l ordre SQL de création d un type, la clause UNDER nom_type_parent remplace la clause IS OBJECT pour créer un sous-type d un autre type. Types INSTANTIABLE ou NOT INSTANTIABLEUn type déclaré NOT INSTANTIABLE ne peut être instancié (pas de méthode constructeur) Par contre, il doit être déclaré NOT FINAL et peut donc avoir des sous-types INSTANTIABLEPar défaut, un type est défini INSTANTIABLE (instanciation possible) Méthode FINAL ou NOT FINALUne méthode peut elle même être déclarée FINAL pour indiquer qu elle ne peut pas être surchargée dans un sous-type Par défaut, une méthode est définie NOT FINAL Méthode INSTANTIABLE ou NOT INSTANTIABLEUne méthode d un type NOT INSTANTIABLE peut ellemême être déclarée NOT INSTANTIABLEL implémentation d une telle méthode n est pas fournie Un sous-type peut surcharger une méthode NOT INSTANTIABLE du type parent et fournir l implémentation Méthode OVERRIDING ou NOT OVERRIDINGUne méthode doit être déclarée OVERRIDING si elle surcharge une méthode du type parent (qui doit être NOT FINAL) Par défaut, une méthode est définie NOT OVERRIDING Page 46/66
47 CREATE OR REPLACE TYPE type_article IS OBJECT ( reference CHAR(3), -- référence de l'article prix_ht NUMBER(6,2), -- prix HT de l'article taux_tva NUMBER(4,2), -- taux de TVA de l'article -- méthode qui retourne le prix TTC de l'article -- NOT FINAL => possibilité de la surcharger dans un sous-type -- INSTANTIABLE => appelable (car implémentée) pour ce type NOT FINAL INSTANTIABLE MEMBER FUNCTION prix_ttc RETURN NUMBER ) NOT FINAL -- possibilité de définir des sous-types sur le type INSTANTIABLE -- possibilité d'instancier le type / CREATE OR REPLACE TYPE type_article_en_solde UNDER type_article ( taux_remise -- la méthode de calcul du prix TTC est surchargée dans le sous-type OVERRIDING MEMBER FUNCTION prix_ttc RETURN NUMBER ) / NUMBER(4,2), -- attribut supplémentaire pour le taux de remise NOT FINAL -- possibilité de définir des sous-types sur le type INSTANTIABLE -- possibilité d'instancier le type Page 47/66
48 10 Les procédures externes Les procédures externes sont des routines en langage de 3ème génération stockées dans des bibliothèques partagées, par exemple des DLL sous Windows. Ces bibliothèques sont enregistrées dans la base de données (CREATE LIBRARY) et appelées directement en PL/SQL pour exécuter des fonctions spécifiques. A L exécution des types objets et des types scalaires sont utilisés pour passer des arguments. Ces procédures externes peuvent être utilisées pour : Effectuer des calculs scientifiques L analyse complexe de données La transmission de signaux entre process L envoi d instructions à des périphériques Pour appeler une procédure externe Oracle doit savoir dans quelle bibliothèque partagée elle est. Oracle 8i supporte Java, http, C++, et corba. Dans les release actuelles les fonctions C sont utilisables. Create [or replace] library [schema.]libname {is as} filespec ; Create or replace library lib_ext Is c:\appli\lib_ext.dll ; Create function valeur (x_val in binary_integer, y_val in binary_integer, image in long raw ) return binary_integer as external library lib_ext name get_valeur langage C ; 1.22 Les fonctions d agrégat Oracle9i permet de définir ces propres fonctions d agrégat qui peuvent être utilisées comme les fonctions agrégats prédéfinies (MAX, MIN, SUM, AVG, COUNT, ). Elles sont utiles pour définir des fonctions d agrégat sur des types objet, mais aussi sur les types scalaires en cas de besoin spécifique (analyses financières ou statistiques avancées par exemple). La mise œuvre n est pas immédiate Étape 1 : définir un type objet qui implémente 4 méthodes bien précises référencées par l appellation «méthodes ODCI Aggregate» Page 48/66
49 Étape 2 : définir la fonction d agrégat proprement dite Les 4 méthodes ODCI Aggregate nécessaires pour ce type de fonctions et qui permettent d implémenter les traitements réalisés lors d un agrégat, sont : - ODCIAggregateInitialize : initialisation - ODCIAggregateIterate : itération - ODCIAggregateMerge : fusion - ODCIAggregateTerminate : terminaison Elles seront appelées automatiquement par Oracle pour chaque étape du traitement. Exemple de fonction d agrégat prédéfinie SUM -- Initialisation : initialiser la variable somme à 0 somme := 0; -- Itération : incrémenter la variable somme -- avec la valeur courante somme := somme + valeur_courante; -- Terminaison : retourner la valeur de la variable somme Les variables nécessaires au calcul (sur l exemple ci-dessus, la variable somme) sont définies comme attributs du type objet. Définition de la fonction proprement dite Après avoir défini et implémenté le type objet, la fonction est définie de manière très simple par un ordre SQL CREATE FUNCTION : CREATE [ OR REPLACE ] FUNCTION nom_fonction(spécification_paramètre) RETURN type_résultat [ PARALLEL_ENABLE ] AGGREGATE USING type_objet; / - nom_fonction : nom de la fonction agrégat - spécification_paramètre : nom et type de données du paramètre (obligatoirement un seul paramètre définit le type des données qui font l objet du calcul d agrégat - type_résultat : type de données du résultat de la fonction d agrégat - AGGREGATE USING type_objet : indique que la fonction est une fonction d agrégat et spécifie le nom du type objet qui implémente les méthodes ODCI Aggregate - PARALLEL_ENABLE : indique que la fonction peut être exécutée dans une requête parallèle Page 49/66
50 SQL> SET LINESIZE 65 SQL> SET TRIMSPOOL ON SQL> SQL> -- objectif SQL> -- avoir une fonction de groupe qui donne l'écart entre la plus grande valeur SQL> -- du groupe et la plus petite valeur du groupe, soit MAX(valeur)-MIN(valeur) SQL> -- * OK, pas besoin d'écrire une fonction agrégat pour faire cela SQL> -- mais c est un exemple SQL> SQL> -- définition du type sous-jacent avec ces quatre méthodes et deux attributs SQL> -- * un pour la plus petite valeur rencontrée (le MIN) SQL> -- * un pour la plus grande valeur rencontrée (le MAX) SQL> CREATE OR REPLACE TYPE type_ecart_min_max IS OBJECT 2 ( 3 valeur_max NUMBER, -- plus grande valeur rencontrée 4 valeur_min NUMBER, -- plus petite valeur rencontrée 5 STATIC FUNCTION ODCIAggregateInitialize 6 (p_ecart IN OUT type_ecart_min_max) 7 RETURN NUMBER, 8 MEMBER FUNCTION ODCIAggregateIterate 9 ( 10 self IN OUT type_ecart_min_max, 11 p_valeur IN NUMBER 12 ) 13 RETURN NUMBER, 14 MEMBER FUNCTION ODCIAggregateTerminate 15 ( 16 self IN OUT type_ecart_min_max, 17 p_resultat OUT NUMBER, 18 indicateurs IN NUMBER 19 ) 20 RETURN NUMBER, 21 MEMBER FUNCTION ODCIAggregateMerge 22 ( 23 self IN OUT type_ecart_min_max, 24 p_ecart2 IN OUT type_ecart_min_max 25 ) 26 RETURN NUMBER 27 ) 28 / Type créé. SQL> SHOW ERRORS Pas d'erreur. SQL> SQL> -- implémentation du type objet SQL> CREATE OR REPLACE TYPE BODY type_ecart_min_max IS initialisation 4 STATIC FUNCTION ODCIAggregateInitialize 5 (p_ecart IN OUT type_ecart_min_max) 6 RETURN NUMBER 7 IS 8 BEGIN 9 -- créer un objet avec des attributs à NULL 10 p_ecart := type_ecart_min_max(null,null); 11 RETURN ODCIConst.Success; 12 END ODCIAggregateInitialize; Page 50/66
51 itération 15 MEMBER FUNCTION ODCIAggregateIterate 16 ( 17 self IN OUT type_ecart_min_max, 18 p_valeur IN NUMBER 19 ) 20 RETURN NUMBER 21 IS 22 BEGIN si les valeurs MIN et MAX sont NULL, c'est que c'est la première valeur rencontrée 25 IF self.valeur_max IS NULL THEN dans ce cas, initialiser les deux valeurs avec la valeur courante (c'est le MIN et le MAX pour l'instant) 29 self.valeur_min := p_valeur; 30 self.valeur_max := p_valeur; 31 ELSE dans le cas contraire 33 IF p_valeur > self.valeur_max THEN si la valeur courante est supérieure au MAX actuel, modifier le MAX actuel 36 self.valeur_max := p_valeur; 37 ELSIF p_valeur < self.valeur_min THEN si la valeur courante est inférieure au MIN actuel, modifier le MIN actuel 40 self.valeur_min := p_valeur; 41 END IF; 42 END IF; 43 RETURN ODCIConst.Success; 44 END ODCIAggregateIterate; terminaison 47 MEMBER FUNCTION ODCIAggregateTerminate 48 ( 49 self IN OUT type_ecart_min_max, 50 p_resultat OUT NUMBER, 51 indicateurs IN NUMBER 52 ) 53 RETURN NUMBER 54 IS 55 BEGIN calculer l'écart entre le MAX et le MIN 57 p_resultat := self.valeur_max - self.valeur_min; 58 RETURN ODCIConst.Success; 59 END ODCIAggregateTerminate; fusion 62 MEMBER FUNCTION ODCIAggregateMerge 63 ( 64 self IN OUT type_ecart_min_max, 65 p_ecart2 IN OUT type_ecart_min_max 66 ) 67 RETURN NUMBER 68 IS 69 BEGIN mettre dans le MIN et le MAX de l'objet SELF le plus petit des deux MIN et le plus grand des deux MAX 73 IF p_ecart2.valeur_max > self.valeur_max THEN Page 51/66
52 74 self.valeur_max := p_ecart2.valeur_max; 75 END IF; 76 IF p_ecart2.valeur_min < self.valeur_min THEN 77 self.valeur_min := p_ecart2.valeur_min; 78 END IF; 79 RETURN ODCIConst.Success; 80 END ODCIAggregateMerge; 81 END; 82 / Corps de type créé. SQL> SHOW ERRORS Pas d'erreur. SQL> SQL> -- définir la fonction d'agrégat proprement dite, basée sur le type objet SQL> CREATE OR REPLACE FUNCTION ecart_min_max 2 (p_valeur NUMBER) 3 RETURN NUMBER 4 PARALLEL_ENABLE AGGREGATE USING type_ecart_min_max; 5 / Fonction créée. SQL> SHOW ERRORS Pas d'erreur. SQL> SQL> -- tester SQL> -- * en comparant avec MAX-MIN puisque c'est ce que la fonction doit SQL> -- calculer SQL> SELECT 2 ecart_min_max(numero), 3 MAX(numero)-MIN(numero) 4 FROM 5 employe 6 / ECART_MIN_MAX(NUMERO) MAX(NUMERO)-MIN(NUMERO) SQL> SELECT 2 ref_categorie, 3 ecart_min_max(numero), 4 MAX(numero)-MIN(numero) 5 FROM 6 employe 7 GROUP BY 8 ref_categorie 9 / REF_CATEGORIE ECART_MIN_MAX(NUMERO) MAX(NUMERO)-MIN(NUMERO) Page 52/66
53 11 Le XML Le XML est un type de données objet destiné à stocker des documents XML Appartient à SYS Pas de synonyme public le qualifier par SYS : SYS.XMLType Il peut être utilisé comme type de données d une colonne dans une table, ou comme type de données d une variable en PL/SQL (ou en Java). Il comporte un ensemble de méthodes qui peuvent manipuler le contenu XML. Physiquement, les données sont stockées dans une colonne cachée de type CLOB, dont les caractéristiques peuvent être précisées lors de la création de la table 1.23 Les méthodes du XML createxml Crée une instance du type XMLType à partir d une chaîne de caractères ou d un CLOB Vérifie que le document XML est bien formé spécification STATIC FUNCTION createxml(document_xml IN VARCHAR2 CLOB) RETURN SYS.XMLType existsnode Teste si un chemin XPath appliqué au document retourne des nœuds valides Spécification MEMBER FUNCTION existsnode(expression_xpath IN VARCHAR2) RETURN NUMBER extract Retourne un fragment XML (de type XMLType) du document à partir d un chemin Xpath Spécification MEMBER FUNCTION extract(expression_xpath IN VARCHAR2) RETURN SYS.XMLType Page 53/66
54 getclobval Retourne le document XML en tant que CLOB Spécification MEMBER FUNCTION getclobval() RETURN CLOB getstringval Retourne le document XML (ou le nœud texte) en tant que chaîne Spécification MEMBER FUNCTION getstringval() RETURN VARCHAR2 getnumberval Retourne la valeur numérique contenue dans le nœud texte pointé dans le document XML Spécification MEMBER FUNCTION getnumberval() RETURN NUMBER Il existe aussi deux fonctions SQL EXISTSNODE et EXTRACT Manipuler les données d une colonne de type XML L ordre SQL INSERT peut être utilisé pour insérer des données dans une colonne XMLType En utilisant la méthode constructeur SYS.XMLType.createXML En copiant d une donnée d une autre colonne XMLType En utilisant les fonctions SYS_XMLGEN et/ou SYS_XMLAGG L ordre SQL UPDATE peut être utilisé pour mettre à jour la totalité du document XML contenu dans une colonne XMLType Avec les mêmes méthodes qu avec l ordre INSERT La suppression s effectue de manière classique avec l ordre SQL DELETE à travers la suppression de la totalité de la ligne SQL*Loader peut aussi être utilisée pour charger des données XML. Page 54/66
55 L ordre SQL UPDATE ne permet pas de modifier une portion d un document XML. Créer et alimenter deux tables contenant une colonne de type XMLType SQL> SET LINESIZE 65 SQL> SET PAGESIZE 1000 SQL> SET LONG SQL> SET FEEDBACK 1 SQL> SET TRIMSPOOL ON SQL> SET SERVEROUTPUT ON SQL> SQL> -- création de deux tables de démonstration avec une colonne de type XMLType SQL> -- * une table d'employés décrits par un document XML SQL> DROP TABLE employe_xml 2 / Table supprimée. SQL> CREATE TABLE employe_xml ( 2 numero NUMBER(3), 3 description SYS.XMLTYPE 4 ) 5 / Table créée. SQL> -- * une table contenant une liste d'employés sous la forme d'un SQL> -- document XML SQL> DROP TABLE liste_employes_xml 2 / Table supprimée. SQL> CREATE TABLE liste_employes_xml ( 2 description SYS.XMLTYPE 3 ) 4 / Table créée. SQL> -- exemples de création d'instances XMLType à partir d'une chaîne SQL> -- * 1er employé SQL> INSERT INTO employe_xml 2 ( 3 numero, 4 description 5 ) 6 VALUES 7 ( 8 10, 9 sys.xmltype.createxml -- utilisation de la méthode createxml 10 ( 11 '<?xml version="1.0"?> 12 <EMPLOYE numero="10"> 13 <NOM>BOUCHARD</NOM> 14 <PRENOM>Sébastien</PRENOM> 15 <SEXE>M</SEXE> 16 <DATE_NAISSANCE>26/08/1966</DATE_NAISSANCE> 17 <TELEPHONE> </TELEPHONE> 18 <REF_CATEGORIE>1</REF_CATEGORIE> 19 </EMPLOYE>' 20 ) 21 ) 22 / 1 ligne créée. SQL> -- * 2ème employé SQL> INSERT INTO employe_xml 2 ( 3 numero, Page 55/66
56 4 description 5 ) 6 VALUES 7 ( 8 20, 9 sys.xmltype.createxml -- utilisation de la méthode createxml 10 ( 11 '<?xml version="1.0"?> 12 <EMPLOYE numero="20"> 13 <NOM>BOULANGER</NOM> 14 <PRENOM>Jean</PRENOM> 15 <SEXE>M</SEXE> 16 <DATE_NAISSANCE>09/12/1967</DATE_NAISSANCE> 17 <TELEPHONE> </TELEPHONE> 18 <REF_CATEGORIE>1</REF_CATEGORIE> 19 </EMPLOYE>' 20 ) 21 ) 22 / 1 ligne créée. SQL> -- * liste d'employés SQL> INSERT INTO liste_employes_xml 2 ( 3 description 4 ) 5 VALUES 6 ( 7 sys.xmltype.createxml -- utilisation de la méthode createxml 8 ( 9 '<?xml version="1.0"?> 10 <LISTE_EMPLOYES> 11 <EMPLOYE numero="10"> 12 <NOM>BOUCHARD</NOM> 13 <PRENOM>Sébastien</PRENOM> 14 <SEXE>M</SEXE> 15 <DATE_NAISSANCE>26/08/1966</DATE_NAISSANCE> 16 <TELEPHONE> </TELEPHONE> 17 <REF_CATEGORIE>1</REF_CATEGORIE> 18 </EMPLOYE> 19 <EMPLOYE numero="20"> 20 <NOM>BOULANGER</NOM> 21 <PRENOM>Jean</PRENOM> 22 <SEXE>M</SEXE> 23 <DATE_NAISSANCE>09/12/1967</DATE_NAISSANCE> 24 <TELEPHONE> </TELEPHONE> 25 <REF_CATEGORIE>1</REF_CATEGORIE> 26 </EMPLOYE> 27 </LISTE_EMPLOYES>' 28 ) 29 ) 30 / 1 ligne créée. SQL> -- à suivre Page 56/66
57 1.25 Extraire les données Les données d une colonne XMLType peuvent être extraites et retournées grâce aux différentes méthodes du type XMLType Totalité d un document sous la forme d un CLOB ou d une chaîne alias_table.colonne_xmltype.getclobval() alias_table.colonne_xmltype.getstringval() Fragment d un document sous la forme d un CLOB ou d une chaîne alias_table.colonne_xmltype.extract(expression_xpath).getclobval() alias_table.colonne_xmltype.extract(expression_xpath).getstringval() Valeur chaîne ou numérique d un nœud texte d un document alias_table.colonne_xmltype.extract(expression_xpath).getstringval() alias_table.colonne_xmltype.extract(expression_xpath).getnumberval() Le chemin Xpath doit se terminer par la fonction text() qui identifie les nœuds texte d un fragment '/EMPLOYE/NOM/text() Les données d une colonne XMLType peuvent aussi être extraites et retournées grâce à la nouvelle fonction SQL EXTRACT : EXTRACT (instance_xmltype IN SYS.XMLType, expression_xpath IN VARCHAR2) RETURN SYS.XMLType Retourne un fragment XML (de type XMLType) du document à partir d un chemin Xpath. Les méthodes get*val peuvent ensuite être appliquées au résultat de cette fonction pour afficher les données dans un type particulier : EXTRACT(colonne_XMLType,expression_XPath).getClobVal() EXTRACT(colonne_XMLType,expression_XPath).getStringVal() EXTRACT(colonne_XMLType,expression_XPath).getNumberVal() Page 57/66
58 Il existe également une fonction SQL EXISTSNODE. Dans la version actuelle, toutes les constructions XPath standards ne sont pas supportées. Construction Traversée d enfants /EMPLOYE/NOM Traversée d attributs /EMPLOYE/@numero Accès par indice /LISTE_EMPLOYES/EMPLOYE[2] Texte d un nœud /EMPLOYE/NOM/text() Sélection Interroger les colonnes de type XMLType SQL> -- exemples d'interrogation d'une colonne XMLType grâce aux méthodes du type SQL> -- * extraction d'un document complet SQL> SELECT 2 a.description.getstringval() "Description" 3 FROM 4 employe_xml a 5 / Description <?xml version="1.0"?> <EMPLOYE numero="10"> <NOM>BOUCHARD</NOM> <PRENOM>Sébastien</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>26/08/1966</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> <?xml version="1.0"?> <EMPLOYE numero="20"> <NOM>BOULANGER</NOM> <PRENOM>Jean</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>09/12/1967</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> 2 ligne(s) sélectionnée(s). SQL> -- * extraction d'un fragment XML grâce à un chemin XML (1) SQL> SELECT 2 a.description.extract('/employe').getstringval() "Employé" 3 FROM 4 employe_xml a 5 / Employé <EMPLOYE numero="10"> <NOM>BOUCHARD</NOM> <PRENOM>Sébastien</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>26/08/1966</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> <EMPLOYE numero="20"> <NOM>BOULANGER</NOM> <PRENOM>Jean</PRENOM> Page 58/66
59 <SEXE>M</SEXE> <DATE_NAISSANCE>09/12/1967</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> 2 ligne(s) sélectionnée(s). SQL> -- * extraction d'un fragment XML grâce à un chemin XML (2) SQL> SELECT 2 a.description.extract('/employe/nom').getstringval() "Nom" 3 FROM 4 employe_xml a 5 / Nom <NOM>BOUCHARD</NOM> <NOM>BOULANGER</NOM> 2 ligne(s) sélectionnée(s). SQL> -- * extraction d'un fragment XML grâce à un chemin XML (3) SQL> SELECT 2 a.description.extract('/employe/nom/text()').getstringval() "Nom" 3 FROM 4 employe_xml a 5 / Nom BOUCHARD BOULANGER 2 ligne(s) sélectionnée(s). SQL> -- * utilisation dans la clause WHERE SQL> SELECT 2 a.description.extract('/employe/prenom/text()').getstringval() "Prénom" 3 FROM 4 employe_xml a 5 WHERE 6 a.description.extract('/employe/nom/text()').getstringval() 7 = 'BOULANGER' 8 / Prénom Jean 1 ligne sélectionnée. SQL> -- * utilisation dans la clause WHERE (autre exemple) SQL> SELECT 2 a.description.extract('/employe/nom/text()').getstringval() "Nom" 3 FROM 4 employe_xml a 5 WHERE -- le chemin XPath accède à l'attribut d'un noeud 6 a.description.extract('/employe/@numero').getnumberval() = 10 7 / Nom BOUCHARD 1 ligne sélectionnée. SQL> -- mêmes exemples avec le document XML contenant la liste des employés SQL> SELECT 2 l.description.getstringval() "Description" 3 FROM 4 liste_employes_xml l 5 / Description <?xml version="1.0"?> <LISTE_EMPLOYES> <EMPLOYE numero="10"> <NOM>BOUCHARD</NOM> <PRENOM>Sébastien</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>26/08/1966</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> Page 59/66
60 <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> <EMPLOYE numero="20"> <NOM>BOULANGER</NOM> <PRENOM>Jean</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>09/12/1967</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> </LISTE_EMPLOYES> 1 ligne sélectionnée. SQL> SELECT 2 l.description.extract('/liste_employes').getstringval() "Employé" 3 FROM 4 liste_employes_xml l 5 / Employé <LISTE_EMPLOYES> <EMPLOYE numero="10"> <NOM>BOUCHARD</NOM> <PRENOM>Sébastien</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>26/08/1966</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> <EMPLOYE numero="20"> <NOM>BOULANGER</NOM> <PRENOM>Jean</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>09/12/1967</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> </LISTE_EMPLOYES> 1 ligne sélectionnée. SQL> SELECT 2 l.description.extract('/liste_employes/employe/nom').getstringval() "Nom" 3 FROM 4 liste_employes_xml l 5 / Nom <NOM>BOUCHARD</NOM> <NOM>BOULANGER</NOM> 1 ligne sélectionnée. SQL> SELECT 2 l.description.extract('/liste_employes/employe/nom/text()').getstringval() 3 "Nom" 4 FROM 5 liste_employes_xml l 6 / Nom BOUCHARDBOULANGER 1 ligne sélectionnée. SQL> -- * possibilité dans ce cas d'extraire le nième élément de la liste SQL> SELECT 2 l.description.extract('/liste_employes/employe[2]/nom/text()'). 3 getstringval() "Nom" 4 FROM 5 liste_employes_xml l 6 / Nom BOULANGER Page 60/66
61 1 ligne sélectionnée. SQL> -- possibilité aussi d'utiliser la fonction SQL EXTRACT SQL> SELECT 2 EXTRACT(description,'/EMPLOYE/NOM/text()').getStringVal() "Nom" 3 FROM 4 employe_xml a 5 / Nom BOUCHARD BOULANGER 2 ligne(s) sélectionnée(s). SQL> -- exemple de manipulation en PLSQL SQL> -- * création d'une fonction PL/SQL qui accepte une description XML SQL> -- d'employé en paramètre et retourne le nom de l'employé SQL> CREATE OR REPLACE FUNCTION nom_employe 2 (p_employe_xml SYS.XMLType) 3 RETURN VARCHAR2 4 IS 5 BEGIN 6 RETURN p_employe_xml.extract('employe/nom/text()').getstringval(); 7 END; 8 / Fonction créée. SQL> -- * test de la fonction SQL> SELECT 2 nom_employe(description) "Nom" 3 FROM 4 employe_xml 5 / Nom BOUCHARD BOULANGER 2 ligne(s) sélectionnée(s). SQL> -- à suivre Page 61/66
62 1.26 Génération de XML dans les requêtes La fonction SQL SYS_XMLGEN, permet de générer du XML directement dans les requêtes SQL : SYS_XMLGEN(expression [, format]) - expression : expression de type scalaire, de type objet ou de type XMLType à transformer en XML - format : objet de type SYS.XMLGenFormatType qui permet de mettre en forme le résultat (voir plus loin) Résultat Le résultat de la fonction est de type XMLType Pour une expression de type scalaire = la valeur de l expression entre deux balises Pour une expression de type objet = document XML avec un élément par attribut du type objet Pour une expression de type XMLType = le document XML entre une balise ouvrante et une balise fermante 1.27 Agréger les documents XML La fonction SQL SYS_XMLAGG, permet d agréger tous les documents XML ou fragments XML passés en paramètre, elle s utilise comme une fonction d agrégat classique (du type SUM) : SYS_XMLAGG(expression_XMLType [, format]) - Expression_XMLType : expression de type XMLType à agréger dans un seul document XML - format : objet de type SYS.XMLGenFormatType qui permet de mettre en forme le résultat (voir plus loin) Résultat Le résultat de la fonction est de type XMLType Par défaut, la balise du document résultat est ROWSET En cas d utilisation avec une clause GROUP BY, un document XML est généré pour chaque groupe de lignes Page 62/66
63 1.28 Paramètres de formatage pour SYS_XMLGEN et SYS_XMLAGG Le type SYS.XMLGenFormatType, peut être utilisé pour générer un paramètre de formatage aux fonctions SYS_XMLGEN et SYS_XMLAGG. Il est pour l instant limité au nommage des balises générées par défaut par ces deux fonctions : Si l expression passée en paramètre est une colonne, le nom de la colonne Sinon, ROW pour SYS_XMLGEN et ROWSET pour SYS_XMLAGG Une instance de ce type peut être créé grâce à la méthode createformat STATIC MEMBER FUNCTION createformat(nom_balise IN VARCHAR2 := NULL) RETURN XMLGenFormatType; SYS.XMLGenFormatType.createFormat('MA_BALISE') 1.29 Création d un document à partir d une requête Le package DBMS_XMLGEN, permet de créer des documents XML à partir d une requête SQL. Il comporte un grand nombre de procédure et de fonctions permettant : De paginer le résultat (extraire les lignes n par n) De renommer les balises définies par défaut Procédures du package DBMS_XMLGEN : newcontext Ouvre un nouveau contexte pour une requête SQL et retourne un handle sur ce contexte A appeler en premier, le handle sur le contexte devant ensuite être passé en paramètre à toutes les autres fonctions Spécification FUNCTION newcontext(chaîne_requête IN VARCHAR2) RETURN ctxhandle Page 63/66
64 setrowtag Défini la balise qui sépare les différentes lignes (ROW par défaut) Spécification PROCEDURE setrowtag(contexte IN ctxhandle, nom_balise IN VARCHAR2) setrowsettag Défini la balise racine du document (ROWSET par défaut) Spécification PROCEDURE setrowsettag(contexte IN ctxhandle, nom_balise IN VARCHAR2) getxmltype Génère le document XML à partir du contexte et le retourne sous la forme d une donnée de type XMLType Spécification FUNCTION getxmltype(contexte IN ctxhandle) RETURN SYS.XMLType getnumrowsprocessed Retourne le nombre de lignes extraites par le dernier appel à getxmltype Zéro si aucune ligne n a été extraite (résultat vide ou toutes les lignes ont déjà été extraites) Spécification FUNCTION getnumrowsprocessed(contexte IN ctxhandle) RETURN NUMBER setmaxrows Défini le nombre maximum de ligne à extraire du résultat de la requête à chaque appel à getxlmtype Permet de paginer le résultat Spécification PROCEDURE setmaxrow(contexte IN ctxhandle, nombre_lignes IN NUMBER) closecontext Ferme le contexte et libère les ressources associées Spécification PROCEDURE closecontext(contexte IN ctxhandle) Page 64/66
65 Utiliser le package DBMS_XMLGEN SQL> -- exemple d'utilisation du package DBMS_XMLGEN SQL> DELETE FROM liste_employes_xml 2 / 1 ligne supprimée. SQL> DECLARE 2 v_contexte DBMS_XMLGEN.ctxHandle; 3 v_resultat SYS.XMLType; 4 BEGIN 5 -- créer un nouveau contexte pour une requête 6 v_contexte := DBMS_XMLGEN.newContext('SELECT * FROM employe'); 7 -- nommage de la balise de l'ensemble de lignes 8 DBMS_XMLGEN.setRowSetTag(v_contexte, 'LISTE_EMPLOYES'); 9 -- nommage de la balise de ligne 10 DBMS_XMLGEN.setRowTag(v_contexte, 'EMPLOYE'); fixer le nombre de ligne à 5 12 DBMS_XMLGEN.setMaxRows(v_contexte, 5); récupérer le résultat dans une boucle (pagination) 14 LOOP 15 v_resultat := DBMS_XMLGEN.getXMLType(v_contexte); sortir de la boucle lorsqu'aucune ligne a été extraite) (toutes les lignes ont été extraites) 18 EXIT WHEN DBMS_XMLGEN.getNumRowsProcessed(v_contexte) = 0; insérer dans la table LISTE_EMPLOYES_XML 20 INSERT INTO liste_employes_xml VALUES(v_resultat); 21 END LOOP; 22 END; 23 / Procédure PL/SQL terminée avec succès. SQL> -- * lecture du résultat (affichage incomplet) SQL> -- il y a plusieurs lignes dans la table, chaque ligne correspondant SQL> -- à une page de résultat SQL> SELECT 2 l.description.getclobval() "Description" 3 FROM 4 liste_employes_xml l 5 / Description <LISTE_EMPLOYES> <EMPLOYE> <NUMERO>1</NUMERO> <NOM>BOUCHART</NOM> <PRENOM>Sébastien</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>25/09/1965</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> <EMPLOYE> <NUMERO>2</NUMERO> <NOM>BOULANGER</NOM> <PRENOM>Jean</PRENOM> <SEXE>M</SEXE> <DATE_NAISSANCE>09/12/1967</DATE_NAISSANCE> <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>1</REF_CATEGORIE> </EMPLOYE> / <EMPLOYE> <NUMERO>20</NUMERO> <NOM>RICHARDOT</NOM> <PRENOM>Laurence</PRENOM> <SEXE>F</SEXE> <DATE_NAISSANCE>11/10/1975</DATE_NAISSANCE> Page 65/66
66 <TELEPHONE> </TELEPHONE> <REF_CATEGORIE>3</REF_CATEGORIE> </EMPLOYE> </LISTE_EMPLOYES> 4 ligne(s) sélectionnée(s). SQL> SQL> SPOOL OFF Page 66/66
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
Oracle. SQL 2 & SQL*Plus. www.tellora.fr. Auteur : Clotilde Attouche. Version 1.1. Du 6 Mars 2010
Oracle SQL 2 & SQL*Plus Auteur : Clotilde Attouche Version 1.1 Du 6 Mars 2010 Sommaire 1 La base de données Oracle 11g... 5 2 La documentation... 10 3 Les Outils d accés à la base... 11 1.1 L outil isql*plus...
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 [email protected]
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
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
et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7
Tsoft et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7 OEM Console Java OEM Console HTTP OEM Database Control Oracle Net Manager 6 Module 6 : Oracle Enterprise Manager Objectifs Contenu A la fin de ce module,
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%
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
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
Performances. Gestion des serveurs (2/2) Clustering. Grid Computing
Présentation d Oracle 10g Chapitre VII Présentation d ORACLE 10g 7.1 Nouvelles fonctionnalités 7.2 Architecture d Oracle 10g 7.3 Outils annexes 7.4 Conclusions 7.1 Nouvelles fonctionnalités Gestion des
A QUOI SERVENT LES BASES DE DONNÉES?
BASE DE DONNÉES OBJET Virginie Sans [email protected] 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
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
SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)
SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients
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
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
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
4. Utilisation d un SGBD : le langage SQL. 5. Normalisation
Base de données S. Lèbre [email protected] Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :
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
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
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
Présentation du module Base de données spatio-temporelles
Présentation du module Base de données spatio-temporelles S. Lèbre [email protected] Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes
IFT3030 Base de données. Chapitre 2 Architecture d une base de données
IFT3030 Base de données Chapitre 2 Architecture d une base de données Plan du cours Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancé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
Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction
PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés
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
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
A QUOI SERVENT LES BASES DE DONNÉES?
BASE DE DONNÉES OBJET Virginie Sans [email protected] 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
SQL Server Installation Center et SQL Server Management Studio
SQL Server Installation Center et SQL Server Management Studio Version 1.0 Grégory CASANOVA 2 SQL Server Installation Center et SQL Server Management Studio [03/07/09] Sommaire 1 Installation de SQL Server
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
Quelques aspects du Relationnel-Objet du SGBD Oracle
Département informatique de l IUT (de l université) de Bordeaux Cours de Bases de Données : présentation partielle d un SGBD RO 12 août 2015 Olivier Guibert Quelques aspects du Relationnel-Objet du SGBD
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
FileMaker Server 14. Guide de démarrage
FileMaker Server 14 Guide de démarrage 2007-2015 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker et FileMaker Go sont des marques
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 [email protected] 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger
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,
NFA 008. Introduction à NoSQL et MongoDB 25/05/2013
NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée
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
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
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
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
Oracle Database 11g: Administration Workshop I Release 2
Oracle University Appelez-nous: +33 (0) 1 57 60 20 81 Oracle Database 11g: Administration Workshop I Release 2 Durée: 5 Jours Description Ce cours constitue la première étape de votre formation en tant
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
ORACLE TUNING PACK 11G
ORACLE TUNING PACK 11G PRINCIPALES CARACTÉRISTIQUES : Conseiller d'optimisation SQL (SQL Tuning Advisor) Mode automatique du conseiller d'optimisation SQL Profils SQL Conseiller d'accès SQL (SQL Access
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)
Introduction aux SGBDR
1 Introduction aux SGBDR Pour optimiser une base Oracle, il est important d avoir une idée de la manière dont elle fonctionne. La connaissance des éléments sous-jacents à son fonctionnement permet de mieux
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
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
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
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
Information utiles. [email protected]. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/
Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : [email protected] webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/
Oracle Maximum Availability Architecture
Oracle Maximum Availability Architecture Disponibilité des systèmes d informations Technologies et recommandations 1 Qu est-ce que Oracle Maximum Availability Architecture (MAA)? 1. Objectif : Disponibilité
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
ORACLE 10g Découvrez les nouveautés. Jeudi 17 Mars Séminaire DELL/INTEL/ORACLE
ORACLE 10g Découvrez les nouveautés Jeudi 17 Mars Séminaire DELL/INTEL/ORACLE Le Grid Computing d Entreprise Pourquoi aujourd hui? Principes et définitions appliqués au système d information Guy Ernoul,
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
Data Tier Application avec SQL Server 2008 R2
Data Tier Application avec SQL Server 2008 R2 Article par David BARBARIN (MVP SQL Server) David BARBARIN est actuellement consultant en bases de données pour une entreprise Suisse GOLD Partner Microsoft
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
INSIA Bases de données ORACLE Installation SQL*Plus SQL-Developer
INSIA Bases de données ORACLE Installation SQL*Plus SQL-Developer http://st-curriculum.oracle.com/tutorial/dbxetutorial/index.htm http://st-curriculum.oracle.com/ http://www.oracle.com/ Bertrand LIAUDET
Cours Bases de données
Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine [email protected] Transparents Disponibles
Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza
Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza Avant de commencer à travailler avec le produit, il est nécessaire de comprendre, à un haut niveau, les problèmes en réponse desquels l outil a été
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.
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
Oracle 11g. Exploitation. Document Tellora Page 1/205. Auteur : Clotilde Attouche. Société TELLORA. Version 1.2. Du 6 Mai 2010
Oracle 11g Exploitation Auteur : Clotilde Attouche Société TELLORA Version 1.2 Du 6 Mai 2010 Page 1/205 Sommaire 1 Présentation... 7 1.1 Les produit Database proposes par Oracle... 8 1.2 Notion de Grid
Clients et agents Symantec NetBackup 7
Protection complète pour les informations stratégiques de l'entreprise Présentation Symantec NetBackup propose un choix complet de clients et d'agents innovants pour vous permettre d optimiser les performances
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",
Créer et partager des fichiers
Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation
et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7
Tsoft et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7 Il est possible, pour des objets, de visualiser ou modifier le contenu. La présentation des objets dans le navigateur peut être paramétrée ; vous trouverez
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
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}
LES NOUVEAUTES DE COST AND PROFITABILITY MANAGEMENT 8.1
LES NOUVEAUTES DE COST AND PROFITABILITY MANAGEMENT 8.1 SAS Cost and Profitability Management, également appelé CPM (ou C&P), est le nouveau nom de la solution SAS Activity-Based Management. Cette version
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),
Cours 6. Sécurisation d un SGBD. DBA - M1ASR - Université Evry 1
Cours 6 Sécurisation d un SGBD DBA - M1ASR - Université Evry 1 Sécurisation? Recette d une application Vérification des fonctionnalités Vérification de l impact sur le SI existant Gestion du changement
SQL Server 2012 et SQL Server 2014
SQL Server 2012 et SQL Server 2014 Principales fonctions SQL Server 2012 est le système de gestion de base de données de Microsoft. Il intègre un moteur relationnel, un outil d extraction et de transformation
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,
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
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 [email protected] http://lgl.isnetne.ch/
SQL Historique 1982 1986 1992
SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse
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
Tutorial sur SQL Server 2000
Tutorial sur SQL Server 2000 Système d'exploitation est 2000 pro et Serveur 2000 Sommaire 1 - Installation... 2 2 - Mise à jour... 5 3 - Présentation... 7 3-1 - Service Manager (Démarrer/Programmes/Microsoft
COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1
1 COMPOSANTS DE L ARCHITECTURE D UN SGBD Chapitre 1 Généralité 2 Les composants principaux de l architecture d un SGBD Sont: Les processus Les structures mémoires Les fichiers P1 P2 Pn SGA Fichiers Oracle
SQL SERVER 2008, BUSINESS INTELLIGENCE
SGBD / Aide à la décision SQL SERVER 2008, BUSINESS INTELLIGENCE Réf: QLI Durée : 5 jours (7 heures) OBJECTIFS DE LA FORMATION Cette formation vous apprendra à concevoir et à déployer une solution de Business
Hala Skaf-Molli. Nancy-Université [email protected] 14 mai 2007
Bases de données avancées Hala Skaf-Molli Maître de Conférence Nancy-Université [email protected] 14 mai 2007 1 Introduction Dans ce cours, nous allons étudier les bases de données Orienté objets, bases de
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)
MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada
MySQL (Administrateur) (Dernière édition) Programme de formation Microsoft Partner France, Belgique, Suisse, Roumanie - Canada WWW.SASGROUPE.COM Formez vos salariés pour optimiser la productivité de votre
Partie 0 : Gestion des tablespace et des utilisateurs... 3
Sommaire Partie 0 : Gestion des tablespace et des utilisateurs... 3 1- Créer deux TableSpaces votre_nom-tbs et Votre_nom-TempTBS :... 3 2. Créer un utilisateur qui porte votre nom :... 3 3. Attribuer à
Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)
Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent
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
Windows Internet Name Service (WINS)
Windows Internet Name Service (WINS) WINDOWS INTERNET NAME SERVICE (WINS)...2 1.) Introduction au Service de nom Internet Windows (WINS)...2 1.1) Les Noms NetBIOS...2 1.2) Le processus de résolution WINS...2
Oracle 10g Administration +
Oracle 10g Administration + FAC-SIMILE Ce fac-simile contient : - la table des matières, - le préambule, - un extrait du chapitre 10 Auteur Razvan Bizoi GUIDE DE FORMATION La marque TSOFT est une marque
Bases de Données Avancées
1/62 Bases de Données Avancées Introduction & Rappel Conception et Modélisation 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
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
Compte Rendu d intégration d application
ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le 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
TP Bases de données réparties
page 1 TP Bases de données réparties requêtes réparties Version corrigée Auteur : Hubert Naacke, révision 5 mars 2003 Mots-clés: bases de données réparties, fragmentation, schéma de placement, lien, jointure
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
Qui est Sybase ianywhere?
Sybase s ianywhere s Advantage Database Server Qui est Sybase ianywhere? Sybase ianywhere Sybase est la plus grande entreprise de logiciels et services exclusivement focalisée sur la gestion et la mobilisation
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.
Création d'une nouvelle base de données
199 Chapitre 7 Création d'une nouvelle base de données 1. Vue d'ensemble Création d'une nouvelle base de données 1.1 Étapes de création d'une nouvelle base de données pour une application Le processus
INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE
I N T E RS Y S T E M S INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE David Kaaret InterSystems Corporation INTERSySTEMS CAChé CoMME ALTERNATIvE AUx BASES de données RéSIdENTES
