Bloc 1 — TD/TP PostgreSQL

Thèmes : introduction, modèle, mises à jour, persistance, interrogation

A. Modèle & lecture de données

  1. Créer le schéma

    • Version simplifier des tables (sans contraintes).
  2. Lister le catalogue

    • Objectif : prise en main de SELECT, ORDER BY.
    • (client_app) Lister idv, ville, activite, prix triés par ville asc, prix desc.
  3. Déduplication

    • Lister les villes distinctes (DISTINCT) et, séparément, les activités distinctes.
  4. Top-K

    • Obtenir les 3 villages les plus chers du catalogue (ORDER BY … LIMIT).

B. Mises à jour (INSERT/UPDATE/DELETE/ALTER) + RETURNING

  1. Inscription

    • (client_app) Insérer un·e client·e et récupérer idc avec INSERT … RETURNING.
  2. Nouveau village

    • (employee_app) Insérer un village à Rio avec une activité libre et un prix > 90.
    • Mettre à jour son prix (ex. +10), puis le renommer en modifiant l’activité.
    • Supprimer ce village d’essai.
    • À chaque étape, montrez l’effet via … RETURNING ou un SELECT avant/après.
  3. Évolution du modèle

    • Ajouter une colonne note text à village, puis la retirer.
    • Renommer la colonne activite en activité puis remettre activite (découvrir ALTER TABLE … RENAME COLUMN).

C. Interrogation simple à intermédiaire

  1. Filtres

    • Villages à Rio dont prix ∈ [50,80], triés décroissant.
    • Même question en insistant sur la casse (ILIKE).
  2. Jointure de base

    • Lister les séjours avec nom client, ville, activite, debut, fin.
    • Calculer la durée en nuits : (fin - debut) (laisser comme integer).
  3. Agrégats/HAVING

    • Par ville : nombre de villages, prix moyen, min, max.
    • Ne garder que les villes dont le prix moyen ≥ 60 (HAVING).
  4. Sous-requêtes / anti-jointure

  • Clients sans aucun séjour (NOT EXISTS ou LEFT JOIN … IS NULL).
  • Villages sans séjour (même technique).
  1. GREATEST-N-per-group (plus cher par ville)
  • Pour chaque ville, retourner le village au prix max (résoudre le tie avec idv asc).
  • Variante : même requête via fenêtres sera pour plus tard ; ici, utilisez sous-requête + max(prix).
Pierre-Henri Paris
Pierre-Henri Paris
Associate Professor in Artificial Intelligence

My research interests include Knowlegde Graphs, Information Extraction, and NLP.