PostgreSQL
Príncipes de base de l'utilisation de la base de données
Editions ENI
Avant-propos
Chapitre 1
Écosystème
1. Préambule9
2. PostgreSQL10
2.1 Versions et publications de PostgreSQL10
2.2 Développement de PostgreSQL11
3. Écosystème de PostgreSQL12
3.1 La communauté de PostgreSQL12
3.2 Qutils et extensions13
4. Qbjectifs de cet ouvrage14
Chapitre 2
Installation
1. Introduction15
2. Installation sous Windows15
3. Installation sous Linux18
3.1 Debian et Ubuntu19
3.2 RedHat, Fedora, Centos20
3.3 Configuration minimale21
Chapitre 3
Outils
1. Introduction23
2. L'outil en ligne de commandes psql24
3. PgAdmin 426
4. DBeaver32
5. OmniDB36
Chapitre 4
SQL - définition
1. Langage SQL : définition des données41
1.1 Langage de définition des données41
1.1.1 Création d'une base de données41
1.1.2 Modification d'une base de données44
1.1.3 Suppression d'une base de données44
1.2 Création de schéma45
1.2.1 Utilisation d'un schéma46
1.2.2 Modification d'un schéma47
1.2.3 Suppression d'un schéma47
2. Types de données48
2.1 Types de données numériques48
2.1.1 Types de données auto-incrémentés50
2.1.2 Fonctions de manipulation des séquences50
2.2 Types de données « caractères »51
2.3 Types de données de dates et d'heures52
2.4 Types de données « Objet »54
2.5 Types de données « binaires »55
2.6 Autres types de données55
2.7 Tableaux de données56
2.8 Types composites56
2.9 Domaines57
2.9.1 Création d'un domaine58
2.9.2 Modification d'un domaine58
2.9.3 Suppression d'un domaine59
3. Création de tables59
3.1 Création d'une table temporaire60
3.2 Attributs61
3.3 Exemples de création de tables64
3.4 Modification d'une table69
3.5 Suppression d'une table71
4. Fonctions et opérateurs72
4.1 Opérateurs logiques72
4.1.1 Opérateurs de combinaison logique72
4.1.2 Opérateurs de comparaison73
4.2 Fonctions et opérateurs sur les nombres77
4.3 Fonctions et opérateurs sur les chaînes de caractères79
4.4 Fonctions et opérateurs sur les dates82
4.5 Fonctions et opérateurs sur les tableaux85
4.6 Fonctions et opérateurs de données JSON87
4.7 Manipulation de documents JSON avec les expressions JSONPATH91
4.8 Fonctions de manipulation de données XML94
4.9 Fonctions de manipulation des plages de valeurs96
5. Création d'index97
5.1 Les index97
5.2 Création d'un index99
5.3 Les différents types d'index100
5.4 Les classes d'opérateurs101
5.5 Modification d'un index102
5.6 Suppression d'un index102
6. Langage de contrôle102
6.1 Gestion des rôles : utilisateurs et groupes102
6.1.1 Définition d'un rôle comme compte d'utilisateur104
6.1.2 Définition d'un rôle comme groupe104
6.1.3 Appartenance à un groupe et héritage104
6.1.4 Utilisation des privilèges d'un groupe105
6.1.5 Modification d'un rôle105
6.1.6 Variables de sessions106
6.1.7 Suppression d'un rôle106
6.1.8 Gestion de l'appartenance à un rôle107
6.2 Gratification et révocation des droits107
6.3 Définition des droits par défaut110
Chapitre 5
SQL - manipulation
1. Langage SQL : manipulation des données113
2. Langage de modification des données114
2.1 Insertion et copie de données114
2.2 L'ordre Copy from118
2.3 Mise à jour de données120
2.4 Suppression de données122
3. Langage de requêtage des données124
3.1 Formation des tuples126
3.2 Sélection des tables127
3.3 La commande Table127
3.4 Projection, sélection128
3.4.1 Projection des champs128
3.4.2 Sélection des lignes129
3.5 Les sous-requêtes129
3.6 Les jointures131
3.6.1 Produit cartésien131
3.6.2 Jointure interne132
3.6.3 Jointure externe135
3.7 Les agrégats et les regroupements137
3.7.1 Fonctions d'agrégat138
3.7.2 Exemples d'agrégats140
3.7.3 Les regroupements141
3.8 Les fonctions fenêtrées145
3.8.1 Fonctions fenêtrées146
3.8.2 Définition des fenêtres147
3.8.3 Exemples de requêtes148
3.9 Union, intersection et exception150
3.10 Tri du résultat des requêtes153
3.11 Limiter les résultats des requêtes155
3.12 Expressions de table : CTE156
3.13 Écritures de données dans les expressions de tables (CTE)158
3.14 Création de vues161
3.14.1 Vues matérialisées162
3.14.2 Suppression de vues163
3.15 L'ordre COPY164
4. Transactions et verrouillage165
4.1 Validation des transactions166
4.2 Types de verrous170
4.3 Verrouillage explicite173
4.4 Niveaux d'isolation177
4.5 Verrous d'interblocage182
Chapitre 6
Fonctions
1. Fonctions et procédures185
1.1 Fonctions186
1.2 Langage SQL187
2. Langage PL/pgSQL191
2.1 Syntaxe du langage192
2.1.1 Déclaration de variables192
2.1.2 Exécuter une requête193
2.1.3 Structures de contrôle conditionnelles194
2.1.4 Structures de contrôle itératives197
2.1.5 Curseurs200
2.1.6 Diagnostic et gestion d'erreurs200
2.1.7 Fonction anonyme DO206
2.1.8 Fonctions retournant des ensembles207
2.2 Débogage de fonction PL/pgSQL209
2.3 Procédure stockée212
3. Langage PL/Python213
3.1 Requête SQL214
3.2 Typage de données216
3.3 Exemple de fonction217
4. Déclencheurs218
4.1 Code PL/pgSQL220
4.2 Exemple221
4.3 Suppression de déclencheurs223
Chapitre 7
Performances des requêtes
1. Introduction225
2. La commande Explain226
3. Affichage d'un plan d'exécution230
4. Interpréter un plan d'exécution233
5. Création d'index235
5.1 Index sur un champ238
5.2 Choix du type d'index240
5.3 Choix d'une classe d'opérateur241
5.4 Utilisation d'une extension242
Chapitre 8
Programmation coté client
1. Introduction243
2. Pilote de connexion243
3. Requêtes préparées245
4. Curseurs246
5. Récupération de résultats paginés sans curseur249
Index251