Programmer avec oracle
SQL - PL/SQL - XML - JSON - PHP - Java
Christian Soutou
Eyrolles
Introduction1
Le modèle relationnel
1
Tables et données1
Contraintes2
Oracle
3
Bases et schémas5
Objets de schéma6
Classification des instructions SQL6
Interface SQL Plus6
SQL Developer7
Application Express (APEX)8
La documentation9
Conventions d'écriture10
Tables exemples
11
Chapitre 1
Définition des données13
Création de tables (Create table)
13
Casse et nom des objets14
Commentaires15
Structure d'une table (DESC)16
Types de colonnes
16
Caractères16
Numériques17
Flottants18
Dates, heures et intervalles19
Données binaires20
Contraintes de colonnes
20
Nommez vos contraintes21
Contraintes hors ligne23
Contraintes de vérification24
Séquences et auto-incréments
25
Séquences25
Auto-incrémentation26
Tables temporaires
27
Indexation
29
Compléments
31
Conventions recommandées31
Commentaires stockés (Comment)31
Création de tables avec une requête32
Utilisation de SQL Developer33
Suppression de tables (Drop table)34
Bonnes pratiques35
Pour créer les objets
35
Pour détruire les objets
37
Chapitre 2
Manipulation des données39
Insertions d'enregistrements (Insert)
39
Renseigner les colonnes40
Valeurs par défaut41
Ne pas respecter des contraintes41
Ne pas respecter les types42
Données temporelles43
Caractères Unicode44
Données binaires45
Séquences et auto-incrémentation46
Modifications de données
47
Instruction de modifications (Update)47
Ne pas respecter des contraintes48
Suppressions de lignes
49
Instruction Delete49
Instruction Truncate50
Mises à jour conditionnées (fusions)
50
Modifications51
Modifications et insertions52
Option de suppression52
Intégrité référentielle
53
Cohérence du détail vers la référence54
Cohérence de la référence vers le détail55
Fonctions SQL
56
Caractères56
Numériques58
Données temporelles58
Autres fonctions63
Valeurs non renseignées (Null)64
Substitutions66
Chapitre 3
Évolution d'un schéma67
Gestion des colonnes
67
Ajouter des colonnes68
Renommer des colonnes69
Modifier le type d'une colonne69
Colonnes virtuelles70
Colonnes invisibles71
Renommer une table (Rename)72
Supprimer des colonnes73
Gestion des contraintes
74
Désactiver des contraintes74
Supprimer des contraintes76
Ajouter des contraintes78
Réactiver des contraintes79
Modifier des contraintes81
Renommer des contraintes82
Gestion des données invalides
83
Au niveau du DDL (Exceptions into)83
Au niveau du DML (Log errors)86
Gestion des séquences
88
Globalisation
90
Stockage90
Paramètres NLS90
Collations92
Paramétrage d'une session94
Chapitre 4
Interrogation des données97
Éléments du Select
97
Syntaxe basique (Select)98
Mise en forme et commentaires99
Doublons100
Pseudo-colonnes100
Tris101
Limitation de lignes103
Filtres (Where)
104
Opérateurs de comparaison104
Opérateurs logiques105
Les collations106
Opérateurs intégrés106
Valeurs non renseignées
107
Expressions Case
109
Expressions régulières
110
Regroupements
113
Fonctions d'agrégats113
Étude de Group By et Having114
Fonctions analytiques
115
Fonctions d'agrégats115
Fonctions de rang116
Autres fonctions117
Clause de fenêtrage118
Concaténation d'expressions (Listagg)120
Transpositions
121
Pivots (Pivot)122
Claude Pivot XML123
Transpositions (Unpivot)124
Reconnaissance de modèles (pattern matching)
125
Un exemple avec des chiffres127
Un exemple avec du texte128
Sous-requêtes
129
Construction de conditions130
Égalité et comparaisons130
Source de données134
CTE134
Opérateurs ensemblistes
135
Union136
Différence137
Intersection137
Produit cartésien138
Jointures
139
Choix du parcours140
Types d'écritures141
Types de jointures141
Clauses de jointures142
Équijointures142
Inéquijointures143
Autojointures144
Jointures externes146
Autres jointures148
Division
149
Requêtes hiérarchiques
151
Fonctions disponibles152
Gestion des cycles153
Requêtes récursives
154
Parcours de hiérarchies154
Gestion des cycles158
Parcours de graphes159
Chapitre 5
Contrôle des données163
Architectures logiques
163
Instances classiques164
Multitenant165
Tablespaces
167
Création des tablespaces168
Modification des tablespaces170
Suppression des tablespaces172
Utilisateurs
173
Création d'un compte174
Modification d'un compte175
Suppression d'un compte176
Profils177
Droits et privilèges
178
Privilèges système179
Privilèges objet180
Privilèges prédéfinis182
Rôles
183
Attribution de rôles184
Rôles prédéfinis185
Désactivation d'un rôle186
Modification d'un rôle186
Rôles pour le code186
Suppression d'un rôle187
Vues
187
Création d'une vue188
Vues simples189
Vues complexes190
Suppression d'une vue192
Synonymes
192
Création d'un synonyme192
Dictionnaire des données
194
Classification des vues194
Interrogation du dictionnaire195
Vues usuelles pour un développeur196
Éditions
198
Consoles d'administration
200
Enterprise Manager Database Express200
SQL Developer201
Chapitre 6
Langage PL/SQL203
Généralités
203
Structure d'un bloc
204
Variables
205
Variables locales205
Affichage d'une trace207
Variables de lien (bind variables)209
Structures de contrôle
210
Structures conditionnelles210
Structures répétitives211
Étiquettes (labels)212
Tableaux associatifs
213
Éléments scalaires213
Éléments structurés214
Fonctions pour les tableaux215
Interactions avec la base
216
Extraire des données216
Manipuler des données217
Curseurs implicites219
Clause de retour (Return ou Returning)220
Clause d'enregistrement des erreurs221
Curseurs explicites223
Curseurs paramétrés225
Variables curseurs(Ref cursor)226
SQL dynamique
227
Transactions
228
Début et fin d'une transaction229
Niveaux d'isolation231
Contraintes différées233
Transactions autonomes234
Verrous235
Problème du verrou mortel (deadlock)236
Verrouillage manuel237
Sous-programmes
239
Procédures (stored procedures)240
Fonctions utilisateurs (user defined functions)242
Gestion des privilèges d'un sous-programme244
Recompilation d'un sous-programme244
Suppression d'un sous-programme244
Paquetages (packages)
244
Paquetages prédéfinis245
Paquetages applicatifs247
Gestions des dépendances249
Exceptions
250
Exceptions prédéfinies251
Exceptions utilisateurs252
Exceptions non prédéfinies253
Propagation des exceptions255
Procédure Raise_application_error257
Déclencheurs
259
Déclencheurs système260
Déclencheurs DML (row triggers)261
Tables en mutation264
Regroupement de déclencheurs DML265
Déclencheurs DML (statement triggers)265
Déclencheurs DML de substitution (DML instead of triggers)266
Déclencheurs composés267
Gestion des déclencheurs269
Bilan269
Conventions recommandées
269
Chapitre 7
Extensions objet271
Types abstraits
271
Création d'un type272
Instanciation273
Tables et colonnes objet274
Indexation274
Stockage275
Collections
275
Création d'une collection276
Instanciation277
Persistance277
Contraintes et indexation279
Fonctions table279
Fonctions pipelined280
Références
281
Création d'une référence281
Instanciation et persistance282
Récursivité282
Références circulaires283
Méthodes
284
Méthodes membres (Member)285
Méthodes statiques (Static)286
Constructeurs (Constructor)287
Comparateurs (Map et Order)289
Héritage
291
Surcharge
292
Redéfinition
293
Substitution de types
295
Évolutions
297
Méthodes299
Attributs299
Collections299
Répercussion sur les données300
Gestion des types
300
Privilèges300
Suppressions302
Dictionnaire des données
302
Détails des types303
Détails des collections304
Détails des méthodes304
Détails du stockage304
Manipulation des objets
305
Insertions305
Modifications306
Suppressions308
Extractions d'objets309
Extractions de références310
Extractions de collections310
Opérateurs pour les nested tables313
Extractions dans un graphe d'héritage313
Vues objet
314
Requête de définition315
Méthodes316
Déclencheurs pour les collections318
Bilan
319
Chapitre 8
Données structurées (XML et JSON)321
Gestion de XML
321
Modes de stockage321
Type XMLTYPE322
Insertion d'un document323
Grammaires XML Schema pour le mode binary324
Grammaires XML Schema pour le mode object-relational325
Contraintes328
Collections330
Extractions
332
Fonction XMLQUERY332
Fonction XMLCAST334
Fonction XMLEXISTS335
Fonction XMLTABLE335
Indexation
337
Mode object-relational337
Mode binary XML338
Mises à jour avec XQuery Update
339
Génération de contenus
341
Fonctions SQL/XML341
Paquetages pour PL/SQL343
Vues XMLTYPE
347
Gestion de JSON
348
Structure de données348
Stockage349
Extractions
350
Fonction JSON-VALUE351
Fonction JSON-EXISTS352
Condition JSON-EQUAL352
Fonction JSON-QUERY353
Fonction JSON-TABLE353
Fonction JSON-SERIALIZE355
Indexation
355
Génération de contenus
356
Fonction JSON-OBJECT356
Fonction JSON-ARRAY357
Fonction JSON-OBJECTAGG357
Fonction JSON-ARRAYAGG358
Fonction JSON-MERGEPATCH359
JSON Data Guide
360
Conversion avec des types objet
361
Conversion JSON vers des instances objet362
Conversion d'instances objet vers JSON362
Chapitre 9
Optimisations365
Cadre général
365
Traitement d'une instruction SQL367
Optimiseur368
Statistiques destinées à l'optimiseur368
Plans d'exécution370
Techniques d'accès aux données371
Techniques de jointures373
Visualisation avec SQL PLus374
Visualisation avec SQL Developer377
Optimisations pour SQL
377
Configurer des fetchs multilignes377
Variables de lien378
Cache de requêtes379
Cache de tables380
Hints SQL380
Index B-tree383
Index bitmap386
Gestion des index388
Compression des index388
Tables organisées en index390
Partitionnement391
Index partitionnés394
Vues matérialisées395
Optimisations pour PL/SQL
396
Traitements de masse avec Bulk Collect396
Variables de lien400
Cache pour les fonctions402
Paquetage DBMS_Application_Info403
Utilitaire runstats405
Index407