Rappels
- Configuration du serveur et des accès.
- Le client ligne de commande et graphique.
Exercice
Configuration du serveur et test des clients psql et pgadmin3.
Création de base de données, de schémas et de types de données
- Choix du template et du charset. Le search_path.
- Types prédéfinis (monétaires...) et types tableaux.
- Domaines et types utilisateurs.
- Définition de nouveaux types de base en langage C.
Exercice
Création d'une base de données avec schémas et search_path.
Création de tables et de vues
- Contraintes de clés étrangères.
- Tables héritées (EXTENDS). Tables partitionnées.
- Indexation. Vues matérialisées.
Travaux pratiques
Création de tables avec clés étrangères. Création de vues matérialisées.
Mise en œuvre de requêtes complexes
- Agrégats, jointures et sous-requêtes.
- Clauses WINDOW et PARTITION BY.
- Recherche en mode FULL TEXT.
- Analyse des requêtes avec EXPLAIN.
Exercice
Exploration des tables. Recherche plein texte. Analyse de requêtes.
Gestion des transactions
- Points de rebroussement. Niveaux d'isolation.
- Verrous explicites de lignes et de tables.
- Verrous informatifs pour les applications.
Exercice
Test des divers modes d'isolation et de verrous ligne/table.
Gestion des utilisateurs, des rôles et des droits
- Utilisateurs et rôles.
- Héritage de rôles, organisation en groupes.
- Rôle PUBLIC. Droits.
Exercice
Déclaration d'utilisateurs et activation de l'authentification.
Mise en œuvre de procédures stockées
- Procédures écrites en PL/pgSQL en Perl et en C.
- Curseurs. Définition d'opérateurs.
- Mise en place de déclencheurs (triggers).
Exercice
Définition d'un type de base avec opérateur et fonctions de conversion associés. Définition d'une fonction d'agrégation.
Interfaces de programmation client
- Programmation en C, en Perl et en PHP.
- Récupération d'éléments graphiques dans la base de données.
- Traitement des transactions SQL par les exceptions.
Exercice
Création d'un programme C assurant l'écriture/lecture d'une BD. Réalisation d'une interface Web en PHP à partir des tables PostgreSQL.