SQL pour Oracle 10g Razvan Bizoï © Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-12055-9, ISBN 13 : 978-2-212-12055-4 Préambule Ce guide de formation a pour but de vous permettre d'acquérir une bonne connaissance du langage SQL. Vous pourrez ensuite tirer profit d'un autre ouvrage du même auteur "PL/SQL pour Oracle 10g". Ces deux ouvrages vous permettront de préparer les examens de certification Oracle suivants : « 1Z0-007 » Introduction to Oracle9i: SQL® (ou la version 10g lorsque l’examen sera disponible ce qu’il n’est pas encore à la parution de cet ouvrage) « 1Z0-001 » Introduction to Oracle: SQL® and PL/SQL™ « 1Z0-147 » Program with PL/SQL Support de formation Ce guide de formation est idéal pour être utilisé comme support élève dans une formation se déroulant avec un animateur dans une salle de formation, car il permet à l'élève de suivre la progression pédagogique de l'animateur sans avoir à prendre beaucoup de notes. L'animateur, quant à lui, appuie ses explications sur les images figurant sur chaque page de l'ouvrage. Cet ouvrage peut aussi servir de manuel d'autoformation car il est rédigé à la façon d'un livre, il est complet comme un livre, il va beaucoup plus loin qu'un simple support de cours. De plus, il inclut une quantité d'ateliers conçus pour vous faire acquérir une bonne pratique d’administration de la base de données. Les ateliers Le livre vise à donner la possibilité à chacun de manipuler et mettre en œuvre les fonctionnalités de ces deux langage sans pour autant avoir besoin d’un serveur Oracle classique qui nécessite des ressources, des droits (distribués avec parcimonie par les DBA) et surtout une licence (qui n’est pas de plus accessible). Le choix de présenter l’installation et l’ensemble des ateliers avec Oracle Database 10g Express Edition, qui offre une compatibilité totale avec les produits de la famille Oracle Database, s’est imposé de lui-même, pour permettre de démarrer petit mais de voir grand. © Eyrolles/Tsoft – SQL pour Oracle10g 1 Préambule Progression pédagogique Ce cours comprend 22 chapitres, il est prévu pour durer cinq jours avec un animateur pour des personnes n'ayant aucune connaissance préalable du sujet. Suivant l'expérience des stagiaires et le but poursuivi, l'instructeur passera plus ou moins de temps sur chaque module. Attention : l'apprentissage « par cœur » des chapitres n'est d'aucune utilité pour passer les examens. Une bonne pratique et beaucoup de réflexion seront réellement utiles ainsi que la lecture des aides en ligne. C'est pourquoi ce livre présente des ateliers pratiques en fin de chaque chapitre. Présentation de l’environnement Le premier module vous propose une description des concepts de base de données relationnelle ainsi que de faire connaissance avec les composants constitutifs d’une base de données relationnelle. Dans ce module, vous allez découvrir le mode de communication du serveur Oracle avec les clients. Nous allons traiter dans ce module de l'installation d’Oracle 10g Express Edition, les étapes d’installation et le détail des pré-requis en ressources système nécessaires pour l’installation dans deux environnements : Windows et Linux. Les outils SQL*Plus Dans ce module, vous allez découvrir les interfaces de base de données mise à la disposition pour SQL et PL/SQL. Oracle fournit un certain nombre d’outils standards qui ont évolué et maturé suivant les versions. Puissants et performants, ces outils se retrouvent sur toutes les plateformes quelle que soit la version. Nous allons traiter dans ce module, l’utilisation de l’environnement SQL*Plus Worksheet, l’environnement iSQL*Plus ainsi que l’installation et utilisation de l’environnement SQL Developer. Interrogation des données Dans ce module, vous allez découvrir l’extraction des données d’une table le choix des colonnes souhaitées. Vous trouvez également dans ce module le traitement des colonnes contenant des valeurs NULL, les opérations arithmétiques avec les colonnes de type numériques et les colonnes de type date ainsi que l’affichage des résultats des requêtes triées. 2 © Eyrolles/Tsoft – SQL pour Oracle10g Préambule Les opérateurs logiques Nous allons traiter dans ce module, de l’utilisation des opérateurs logiques simples et des opérateurs multiples. Ce module décrit également de la mise en œuvre des opérateurs de recherche dans les chaînes de caractères, de l’utilisation des opérateurs pour traiter des valeurs NULL des colonnes. Vous trouvez également dans ce module comment combiner plusieurs expressions de type logique à l’aide des opérateurs logiques AND, OR ou NOT. Les chaînes de caractères Dans ce module, vous allez découvrir le traitement des chaînes de caractères, leur formatage, l’extraction une partie d’une chaîne de caractères ainsi que la recherche et remplacement des sous chaînes. Nous allons traiter dans ce module les nouvelles fonctionnalités de traitement des chaînes de caractères à l'aide des expressions régulières. Les fonctions numériques Nous allons traiter dans ce module de l’utilisation des types de données numériques, des calculs arithmétiques, des arrondis et manipulation du signe des données. Vous allez également y découvrir les nouveautés des nombres réels à virgule flottante ainsi que les fonctions de traitements et conversions de ces types de données. Le traitement des dates Vous trouvez dans ce module les modalités de récupération des informations concernant la date et l’emplacement de la base, de changement des paramètres de zone horaire pour la session ainsi que le stockage de ces informations dans la base de données. Nous allons également y traiter les expressions de type date ainsi que les arrondis de ces expressions. Les conversions SQL Dans ce module, vous allez découvrir les modalités d’effectuer des conversions implicites et le traitement de conversion entre les différents types de données Nous allons également traiter dans ce module, la manipulation des expressions de type date de type chaîne de caractères. Groupement des données Ce module décrit les fonctions dites "verticales" pour les regroupements et le calcul cumulatif. Les fonctions verticales sont utilisées pour le calcul cumulatif des valeurs par rapport à un regroupement ou pour l’ensemble des lignes de la requête. Agrégation et Analyse Dans ce module, vous allez découvrir les nouvelles fonctionnalités de traitement multidimensionnel, les fonctions d’agrégation multidimensionnelles, les calculs suivant un partitionnement de données et le concept de fenêtrage. Nous allons également traiter dans ce module, des fonctions de classement, des requêtes qui utilisent des valeurs détaillées et des résultats des regroupements en même temps. © Eyrolles/Tsoft – SQL pour Oracle10g 3 Préambule Les requêtes multitables Nous examinerons dans cette section comment coupler les lignes de deux ou plusieurs tables afin d'en extraire des données corrélées, utiliser la syntaxe d’Oracle pour les jointures ou la syntaxe ANSI SQL :1999. Les jointures complexes Dans ce module, vous allez découvrir les interrogations avec les opérateurs ensemblistes et l’utilisation des sous-requêtes. Nous examinerons tout particulièrement l’utilisation des sous-requêtes avec les opérateurs IN, ALL et ANY, les sous-requêtes dans la clause FROM et les sousrequêtes synchronisées. Mise à jour des données Ce module présente le Langage de Manipulation de Donnée ou LMD, (UPDATE, INSERT et DELETE), qui permet d'effectuer les trois types de modifications (mise à jour de lignes, ajout de lignes et suppression de lignes sélectionnées). Nous examinerons tout particulièrement l’utilisation des nouveautés des insertions multi-tables des mises à jour conditionnées. Les transactions Dans ce module vous pouvez découvrir la gestion des transactions. Toute base de données a pour objectif de fournir aux utilisateurs un accès simultané aux données. La notion de concurrence d'accès et de verrouillage des données intervient lorsque plusieurs utilisateurs essaient d'accéder simultanément aux mêmes données. Le concept de transaction est différent mais il n'en reste pas moins à la base de la gestion des accès concurrents : les données modifiées lui sont réservées jusqu'à sa fin. Nous examinerons tout particulièrement la structuration d’une transaction et les annulations partielles. La création des tables Les tables contiennent un ensemble fixe de colonnes, chaque colonne possède un nom ainsi que des caractéristiques spécifiques. Une table d'objets est une table dont toutes les lignes sont des types de données abstraits possédant chacun un identifiant d'objet (OID, Object ID). La gestion des tables Les tables sont mises en relation via les colonnes qu'elles ont en commun. Vous pouvez faire en sorte que la base de données applique ces relations au moyen de l'intégrité référentielle. L'intérêt d'employer des contraintes est qu'Oracle assure en grande partie l'intégrité des données. Par conséquent, plus vous ajoutez de contraintes à une définition de table, moins vous aurez de travail pour la maintenance des données. Les index L’index est une structure de base de données utilisée par le serveur pour localiser rapidement une ligne dans une table. Dans ce module, nous allons détailler l’index de table de type B-Tree classique et l’index de type bitmap conçu pour supporter des requêtes sur des tables volumineuses dont les colonnes contiennent peu de valeurs distinctes. Vous pouvez également découvrir dans ce module les tables organisées en index. 4 © Eyrolles/Tsoft – SQL pour Oracle10g Préambule Les vues et autres objets Ce module concerne les autres objets de la base de données comme le lien de base de données qui permet de se connecter à une base et d'accéder à partir de là à des objets situés dans une autre base de façon transparente, c'est-à-dire comme s'ils se trouvaient dans la base à laquelle vous êtes directement connecté. Les profils Depuis Oracle8, les administrateurs de bases de données disposent de différentes fonctionnalités qui sont essentielles pour assurer la sécurité des mots de passe. Pour améliorer le contrôle de la sécurité de la base de données, la gestion de mot de passe d'Oracle est contrôlée par des administrateurs de base de données avec des profils. Le profil d'un utilisateur limite l'utilisation de la base de données et les ressources d'instance conformément à sa définition. Vous pouvez affecter un profil à chaque utilisateur et un profil par défaut à tous les utilisateurs ne disposant pas d'un profil spécifique. Les utilisateurs Lorsqu'on parle d'utilisateurs de base de données, il est généralement question de trois types d'entités : Les utilisateurs finaux sont des utilisateurs qui se connectent à la base Oracle pour interagir avec les données qui y sont stockées et les maintenir Les applications qui sont écrites pour aider les utilisateurs finaux à exécuter plus facilement et plus rapidement leurs tâches. Les administrateurs de bases de données surveillent et maintiennent la base ellemême; ils ont donc besoin du plus haut niveau de privilèges. Les privilèges En tant qu'administrateur de bases de données, vous êtes chargé d'octroyer et de révoquer des privilèges d'accès aux utilisateurs de la base. Vous pouvez employer des rôles pour faciliter l'administration de privilèges, et des vues pour limiter l'accès des utilisateurs à certaines données. Ce module décrit comment utiliser et gérer les privilèges de niveaux système et objet, les rôles et les vues afin d'assurer la sécurité des données de la base et de garantir leur intégrité. Le dictionnaire de données Le dictionnaire est un ensemble de tables et de vues qui contient toutes les informations concernant la structure de stockage et tous les objets de la base. Toute information concernant la base de données se retrouve dans le dictionnaire de données. Le dictionnaire de données Oracle stocke toutes les informations utilisées pour gérer les objets de la base. Ce dictionnaire est généralement exploité par l'administrateur de base de données, mais c'est aussi une source d'information utile pour les développeurs et les utilisateurs. Ce module présente les mécanismes d’accès à ces informations à travers les vues du dictionnaire de données. © Eyrolles/Tsoft – SQL pour Oracle10g 5 Préambule Conventions utilisées dans l’ouvrage « MAJUSCULES » [ ] [,...] { } | ... Les ordres SQL ou tout identifiant ou mot clé. Utilisé pour les mots clé, les noms des tables, les noms des champs, les noms des blocs etc.... L’information qui se trouve entre les crochets est facultative. L’argument précédent peut être répété plusieurs fois. Liste de choix exclusive. Séparateur dans une liste de choix. La suite est non significative pour le sujet traité. La définition suivante est valable uniquement dans la version Oracle8i. La définition est valable pour la version Oracle9i mais également dans les versions suivantes. La définition est valable à partir de la version Oracle10g. La définition uniquement valable pour l’environnement de travail UNIX/Linux. La définition uniquement valable pour l’environnement de travail Windows. Ce sigle introduit un exemple de code avec la description complète telle qu’elle est présente à l’écran dans l’outil de commande. Une note qui présente des informations intéressantes en rapport avec le sujet traité. Un encadré. Attention met en évidence les problèmes potentiels et vous aide à les éviter. Il peut être également une mise en garde ou une définition critique. Une Astuce, apporte une suggestion ou propose une méthode plus simple pour effectuer une action donnée. Un Conseil, une démarche impérative à suivre pour pouvoir résoudre le problème. 6 © Eyrolles/Tsoft – SQL pour Oracle10g