O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

SQL pour Oracle

Book Description

Présentation
Apprendre SQL par l'exemple

Tout particulièrement destiné aux débutants et aux étudiants, cet ouvrage permet d'acquérir les notions essentielles d'Oracle, leader des systèmes de gestion de bases de données. Concis et de difficulté progressive, il est émaillé de nombreux exemples et de 50 exercices corrigés qui illustrent tous les aspects fondamentaux de SQL. Couvrant les versions 9i à 11 gR2 d'Oracle, il permet de se familiariser avec ses principales fonctionnalités, ainsi qu'avec les API les plus utilisées (JBDC, PHP et XML). Mise à jour et augmentée (pivots, transpositions, requêtes pipe line et CTE), la quatrième édition de cet ouvrage consacre un chapitre entier à l'optimisation des requêtes et des schémas relationnels. Y sont étudiés l'optimiseur, les statistiques, la mesure des performances et l'emploi de la boîte à outils : contraintes, index, clusters, tables organisées en index, partitionnement, vues matérialisées et dénormalisation.

À qui s'adresse cet ouvrage ?
  • À tous ceux qui souhaitent s'initier à SQL, à Oracle ou à la gestion de bases de données
  • Aux développeurs C, C++, Java, PHP et XML qui souhaitent stocker leurs données
Installez vous-même Oracle !

Cet ouvrage décrit en détail les procédures d'installation de toutes les versions d'Oracle : 9i, 10g, Express, 11 gRl et 11 gR2. Ces versions peuvent être téléchargées gratuitement sur le site d'Oracle : destinées à des fins non commerciales, elles sont complètes et sans limitation de durée.

Au sommaire
  • Introduction
  • SQL de base
    • Définition des données
    • Manipulation des données
    • Évolution d'un schéma
    • Interrogation des données
    • Contrôle des données
  • PL/SQL
    • Bases du PL/SQL
    • Programmation avancée
  • SQL avancé
    • Le précompilateur Pro*C/C++
    • L'interface JDBC
    • L'approche SQLJ
    • Procédures stockées et externes
    • Oracle et le Web
    • Oracle XML DB
    • Optimisations
  • Annexe 1 : Bibliographie et webographie

Table of Contents

  1. Couverture
  2. Le résumé et la biographie auteur
  3. Page de titre
  4. Copyright
  5. Remerciements
  6. Avant-propos
  7. Table des matières
  8. Introduction
    1. SQL, une norme, un succès
    2. Modèle de données
      1. Tables et données
      2. Les clés
    3. Oracle
      1. Un peu d’histoire
      2. Rachat de Sun (et de MySQL)
      3. Offre du moment
      4. Notion de schéma
      5. Accès à Oracle depuis Windows
      6. Détail d’un numéro de version
    4. Installation d’Oracle
      1. Mise en œuvre d’Oracle9i
      2. Désinstallation de la 9i
      3. Mise en œuvre d’Oracle 10g
      4. Désinstallation de la 10g
      5. Mise en œuvre d’Oracle 10g Express Edition
      6. Mise en œuvre d’Oracle 11g
      7. Désinstallation de la 11g
      8. Mise en œuvre d’Oracle 11g XE Beta
    5. Les interfaces SQL*Plus
      1. Généralités
      2. Premiers pas
      3. Variables d’environnement
      4. À propos des accents et jeux de caractères
  9. Partie I SQL de base
    1. 1 Définition des données
      1. Tables relationnelles
        1. Création d’une table (CREATE TABLE)
        2. Casse et commentaires
        3. Premier exemple
        4. Contraintes
        5. Conventions recommandées
        6. Types des colonnes
        7. Structure d’une table (DESC)
        8. Restrictions
        9. Commentaires stockés (COMMENT)
      2. Index
        1. Classification
        2. Index B-tree
        3. Index bitmap
        4. Index basés sur des fonctions
        5. Création d’un index (CREATE INDEX)
        6. Bilan
      3. Tables organisées en index
      4. Destruction d’un schéma
    2. 2 Manipulation des données
      1. Insertions d’enregistrements (INSERT)
        1. Syntaxe
        2. Renseigner toutes les colonnes
        3. Renseigner certaines colonnes
        4. Ne pas respecter des contraintes
        5. Dates/heures
        6. Caractères Unicode
        7. Données LOB
      2. Séquences
        1. Création d’une séquence (CREATE SEQUENCE)
        2. Manipulation d’une séquence
        3. Modification d’une séquence (ALTER SEQUENCE)
        4. Visualisation d’une séquence
        5. Suppression d’une séquence (DROP SEQUENCE)
      3. Modifications de colonnes
        1. Syntaxe (UPDATE)
        2. Modification d’une colonne
        3. Modification de plusieurs colonnes
        4. Ne pas respecter des contraintes
        5. Dates et intervalles
      4. Suppressions d’enregistrements
        1. Instruction DELETE
        2. Instruction TRUNCATE
      5. Intégrité référentielle
        1. Cohérences
        2. Contraintes côté « père »
        3. Contraintes côté « fils »
        4. Clés composites et nulles
        5. Cohérence du fils vers le père
        6. Cohérence du père vers le fils
        7. En résumé
      6. Flottants
        1. Valeurs spéciales
        2. Fonctions pour les flottants
    3. 3 Évolution d’un schéma
      1. Renommer une table (RENAME)
      2. Modifications structurelles (ALTER TABLE)
        1. Ajout de colonnes
        2. Renommer des colonnes
        3. Modifier le type des colonnes
        4. Supprimer des colonnes
        5. Colonnes UNUSED
      3. Modifications comportementales
        1. Ajout de contraintes
        2. Suppression de contraintes
        3. Désactivation de contraintes
        4. Réactivation de contraintes
      4. Contraintes différées
        1. Directives DEFERRABLE et INITIALLY
        2. Instructions SET CONSTRAINT
        3. Instruction ALTER SESSION SET CONSTRAINTS
        4. Directives VALIDATE et NOVALIDATE
        5. Directive MODIFY CONSTRAINT
      5. Nouveautés 11g
        1. Colonne virtuelle
        2. Table en lecture seule
    4. 4 Interrogation des données
      1. Généralités
        1. Syntaxe (SELECT)
        2. Pseudo-table DUAL
      2. Projection (éléments du SELECT)
        1. Extraction de toutes les colonnes
        2. Extraction de certaines colonnes
        3. Alias
        4. Duplicatas
        5. Expressions et valeurs nulles
        6. Ordonnancement
        7. Concaténation
        8. Pseudo-colonne ROWID
        9. Pseudo-colonne ROWNUM
        10. Insertion multiligne
      3. Restriction (WHERE)
        1. Opérateurs de comparaison
        2. Opérateurs logiques
        3. Opérateurs intégrés
      4. Fonctions
        1. Caractères
        2. Numériques
        3. Dates
        4. Conversions
        5. Autres fonctions
      5. Regroupements
        1. Fonctions de groupe
        2. Étude du GROUP BY et HAVING
      6. Opérateurs ensemblistes
        1. Restrictions
        2. Exemple
        3. Opérateur INTERSECT
        4. Opérateurs UNION et UNION ALL
        5. Opérateur MINUS
        6. Ordonner les résultats
        7. Produit cartésien
        8. Bilan
      7. Jointures
        1. Classification
        2. Jointure relationnelle
        3. Jointures SQL2
        4. Types de jointures
        5. Équijointure
        6. Autojointure
        7. Inéquijointure
        8. Jointures externes
        9. Jointures procédurales
        10. Jointures mixtes
        11. Sous-interrogations synchronisées
        12. Autres directives SQL2
      8. Division
        1. Définition
        2. Classification
        3. Division inexacte en SQL
        4. Division exacte en SQL
      9. Requêtes hiérarchiques
        1. Point de départ du parcours (START WITH)
        2. Parcours de l’arbre (CONNECT BY PRIOR)
        3. Indentation
        4. Élagage de l’arbre (WHERE et PRIOR)
        5. Jointures
        6. Ordonnancement
        7. Nouveautés 10g
      10. Mises à jour conditionnées (fusions)
        1. Syntaxe (MERGE)
        2. Exemple
        3. Nouveautés 10g
        4. Exemple
      11. Expressions régulières
        1. Quelques exemples
        2. Fonction REGEXP_LIKE
        3. Fonction REGEXP_REPLACE
        4. Fonction REGEXP_INSTR
        5. Fonction REGEXP_SUBSTR
        6. Nouveautés 11g
      12. Extractions diverses
        1. Directive WITH
        2. Fonction WIDTH_BUCKET
        3. Récursivité avec WITH (CTE)
        4. Pivots (PIVOT)
        5. Transpositions (UNPIVOT)
    5. 5 Contrôle des données
      1. Gestion des utilisateurs
        1. Classification
        2. Création d’un utilisateur (CREATE USER)
        3. Modification d’un utilisateur (ALTER USER)
        4. Suppression d’un utilisateur (DROP USER)
        5. Profils
        6. Console Enterprise Manager
      2. Privilèges
        1. Privilèges système
        2. Privilèges objets
        3. Privilèges prédéfinis
      3. Rôles
        1. Création d’un rôle (CREATE ROLE)
        2. Rôles prédéfinis
        3. Console Enterprise Manager
        4. Révocation d’un rôle
        5. Activation d’un rôle (SET ROLE)
        6. Modification d’un rôle (ALTER ROLE)
        7. Suppression d’un rôle (DROP ROLE)
      4. Vues
        1. Création d’une vue (CREATE VIEW)
        2. Classification
        3. Vues monotables
        4. Vues complexes
        5. Autres utilisations de vues
        6. Transmission de droits
        7. Modification d’une vue (ALTER VIEW)
        8. Suppression d’une vue (DROP VIEW)
      5. Synonymes
        1. Création d’un synonyme (CREATE SYNONYM)
        2. Transmission de droits
        3. Suppression d’un synonyme (DROP SYNONYM)
      6. Dictionnaire des données
        1. Constitution
        2. Classification des vues
        3. Démarche à suivre
        4. Principales vues
        5. Objets d’un schéma
        6. Structure d’une table
        7. Recherche des contraintes d’une table
        8. Composition des contraintes d’une table
        9. Détails des contraintes référentielles
        10. Recherche du code source d’un sous-programme
        11. Recherche des utilisateurs d’une base de données
        12. Rôles reçus
  10. Partie II PL/SQL
    1. 6 Bases du PL/SQL
      1. Généralités
        1. Environnement client-serveur
        2. Avantages
        3. Structure d’un programme
        4. Portée des objets
        5. Jeu de caractères
        6. Identificateurs
        7. Commentaires
      2. Variables
        1. Variables scalaires
        2. Affectations
        3. Restrictions
        4. Variables %TYPE
        5. Variables %ROWTYPE
        6. Variables RECORD
        7. Variables tableaux (type TABLE)
        8. Résolution de noms
        9. Opérateurs
        10. Variables de substitution
        11. Variables de session
        12. Conventions recommandées
      3. Types de données PL/SQL
        1. Types prédéfinis
        2. Sous-types
        3. Conversions de types
        4. Nouveautés 11g
      4. Structures de contrôles
        1. Structures conditionnelles
        2. Structures répétitives
        3. Nouveautés 11g
      5. Interactions avec la base
        1. Extraire des données
        2. Manipuler des données
        3. Curseurs implicites
        4. Paquetage DBMS_OUTPUT
      6. Transactions
        1. Caractéristiques
        2. Début et fin d’une transaction
        3. Contrôle des transactions
        4. Transactions imbriquées
    2. 7 Programmation avancée
      1. Sous-programmes
        1. Généralités
        2. Procédures cataloguées
        3. Fonctions cataloguées
        4. Codage d’un sous-programme PL/SQL
        5. Exemples
        6. Compilation
        7. Appels
        8. À propos des paramètres
        9. Récursivité
        10. Sous-programmes imbriqués
        11. Recompilation d’un sous-programme
        12. Destruction d’un sous-programme
      2. Paquetages (packages)
        1. Généralités
        2. Spécification
        3. Compilation
        4. Implémentation
        5. Appel
        6. Surcharge
        7. Recompilation
        8. Destruction d’un paquetage
        9. Comment retourner une table ?
      3. Curseurs
        1. Généralités
        2. Instructions
        3. Parcours d’un curseur
        4. Utilisation de structures (%ROWTYPE)
        5. Boucle FOR (gestion semi-automatique)
        6. Utilisation de tableaux (type TABLE)
        7. Utilisation de LIMIT et BULK COLLECT
        8. Paramètres d’un curseur
        9. Accès concurrents (FOR UPDATE et CURRENT OF)
        10. Variables curseurs (REF CURSOR)
        11. Fonctions table pipelined
      4. Exceptions
        1. Généralités
        2. Exception interne prédéfinie
        3. Exception utilisateur
        4. Utilisation du curseur implicite
        5. Exception interne non prédéfinie
        6. Propagation d’une exception
        7. Procédure RAISE_APPLICATION ERROR
      5. Déclencheurs
        1. À quoi sert un déclencheur ?
        2. Généralités
        3. Mécanisme général
        4. Syntaxe
        5. Déclencheurs LMD
        6. Transactions autonomes
        7. Déclencheurs LDD
        8. Déclencheurs d’instances
        9. Appels de sous-programmes
        10. Gestion des déclencheurs
        11. Ordre d’exécution
        12. Tables mutantes
        13. Nouveautés 11g
      6. SQL dynamique
        1. Classification
        2. Utilisation de EXECUTE IMMEDIATE
        3. Utilisation d’une variable curseur
  11. Partie III SQL avancé
    1. 8 Le précompilateur Pro*C/C++
      1. Généralités
        1. Ordres SQL intégrés
        2. Variables
        3. Variable indicatrice
        4. Cas du VARCHAR
        5. Zone de communication (SQLCA)
        6. Connexion à une base
        7. Gestion des exceptions
        8. Transactions
      2. Extraction d’un enregistrement
      3. Mises à jour
      4. Utilisation de curseurs
        1. Variables scalaires
        2. Variables tableaux
      5. Utilisation de Microsoft Visual C++
    2. 9 L’interface JDBC
      1. Généralités
        1. Classification des pilotes (drivers)
        2. Les paquetages
        3. Structure d’un programme
        4. Variables d’environnement
        5. Test de votre configuration
      2. Connexion à une base
        1. Base Access
        2. Base Oracle
        3. Base MySQL
        4. Déconnexion
        5. Interface Connection
        6. Sources de données
      3. États d’une connexion
        1. Interfaces disponibles
        2. Méthodes génériques pour les paramètres
        3. États simples (interface Statement)
        4. Méthodes à utiliser
      4. Correspondances de types
      5. Interactions avec la base
        1. Suppression de données
        2. Ajout d’enregistrements
        3. Modification d’enregistrements
      6. Extraction de données
        1. Curseurs statiques
        2. Curseurs navigables
      7. Curseurs modifiables
        1. Suppressions
        2. Modifications
        3. Insertions
        4. Restrictions
      8. Ensembles de lignes (RowSet)
        1. RowSet sans connexion
        2. RowSet avec ResultSet
        3. RowSet pour XML
        4. Mises à jour d’un RowSet
        5. Notifications pour un RowSet
      9. Interface ResultSetMetaData
      10. Interface DatabaseMetaData
      11. Instructions paramétrées (PreparedStatement)
        1. Extraction de données (executeQuery)
        2. Mises à jour (executeUpdate)
        3. Instruction LDD (execute)
      12. Appels de sous-programmes
        1. Appel d’une fonction
        2. Appel d’une procédure
      13. Transactions
        1. Points de validation
      14. Traitement des exceptions
        1. Affichage des erreurs
        2. Traitement des erreurs
    3. 10 L’approche SQLJ
      1. Généralités
        1. Blocs SQLJ
        2. Précompilation
        3. Configurations
        4. Affectations (SET)
      2. Intégration de SQL
        1. Instructions du LDD
        2. Instructions du LMD
        3. Requêtes
        4. À propos des itérateurs
      3. Transactions
        1. Intégration de blocs PL/SQL
        2. Points de validation
      4. Appels de sous-programmes
        1. Résultats scalaires
        2. Résultats complexes
      5. Traitement des exceptions
        1. Définition des données
        2. Manipulation des données
        3. Interrogation des données
      6. Contextes de connexion
      7. SQL dynamique
        1. Expression
        2. Restrictions
    4. 11 Procédures stockées et externes
      1. Procédures stockées Java
        1. Stockage d’une procédure
        2. Interactions avec la base
        3. Déclencheurs
      2. Procédures externes Java
        1. Compilation de la classe
        2. Création d’une librairie
        3. Publication d’une procédure externe
        4. Appel d’une procédure externe
    5. 12 Oracle et le Web
      1. Configuration minimale d’Apache
      2. PL/SQL Web Toolkit
        1. Détail d’une URL
        2. Paquetages HTP et HTF
        3. Pose d’hyperliens
        4. Formulaires
        5. Tables
        6. Listes
      3. PL/SQL Server Pages
        1. Généralités
        2. Balises
        3. Chargement d’un programme PSP
        4. Appel
        5. Interaction avec la base
      4. Intégration de PHP
        1. Configuration adoptée
        2. API de PHP pour Oracle (OCI)
        3. Interactions avec la base
        4. API Objet PHP pour Oracle (PDO)
    6. 13 Oracle XML DB
      1. Généralités
        1. Comment disposer de XML DB ?
        2. Le type de données XMLType
        3. Modes de stockage
      2. Stockages XMLType
        1. Création d’une table
        2. Répertoire de travail
        3. Grammaire XML Schema
        4. Annotation de la grammaire
        5. Enregistrement de la grammaire
        6. Stockage structuré (object-relational)
        7. Stockage non structuré (CLOB)
        8. Stockage non structuré (binary XML)
      3. Autres fonctionnalités
        1. Génération de contenus
        2. Vues XMLType
        3. Génération de grammaires annotées
        4. Dictionnaire des données
      4. XML DB Repository
        1. Interfaces
        2. Configuration
        3. Paquetage XML_XDB
        4. Accès par SQL
    7. 14 Optimisations
      1. Cadre général
        1. Les acteurs
        2. Contexte et objectifs
        3. À éviter
        4. Présentation du jeu d’exemple
        5. L’offre d’Oracle 11g
        6. Les optimiseurs
        7. L’estimateur
        8. Traitement d’une instruction
        9. Configuration de l’optimiseur (les hints)
      2. Les statistiques destinées à l’optimiseur
        1. Les histogrammes
        2. Collecte
      3. Outils de mesure de performances
        1. Visualisation des plans d’exécution
        2. L’outil tkprof
        3. Utilisation de l’événement 10046
        4. Paquetage DBMS_APPLICATION_INFO
        5. Les vues dynamiques du dictionnaire
        6. L’utilitaire runstats de Tom Kyte
        7. Bilan
      4. Organisation des données
        1. Des contraintes au plus près des données
        2. Indexation
        3. Jointures
        4. Variables de lien
        5. Comment réaliser des fetchs multilignes ?
      5. Clusters
        1. Un mauvais et un bon exemples
        2. Création d’un cluster
        3. Cluster indexé
        4. Hash clusters
        5. Les collisions
        6. Paramétrages
        7. Cas particuliers
        8. Bilan
      6. Tables organisées en index
        1. Comparatif
        2. Les débordements
        3. Création d’une IOT
        4. Comparaison avec une table en heap
        5. Limites
      7. Partitionnement
        1. La clé de partition
        2. Partitions par intervalle
        3. Intervalles automatiques
        4. Partitions par hachage
        5. Partitions par liste
        6. Partitions par référence
        7. Sous-partitions
        8. Index partitionné
        9. Index partitionné local
        10. Index partitionné global
        11. Opérations sur les partitions et index
        12. Partitionnement des tables IOT
      8. Vues matérialisées
        1. Réécriture de requêtes
        2. Le rafraîchissement
        3. Exemples
      9. Dénormalisation
        1. Colonnes calculées
        2. Duplication de colonnes
        3. Ajout de clés étrangères
        4. Exemple de stratégie
      10. Derniers conseils
        1. Requêtes inefficaces
        2. Les 10 commandements de F. Brouard
  12. Annexe : Bibliographie et webographie
  13. Index