Exercice BDR et SQL

Exercice d’apprentissage du SQL
Author

Ludovic Deneuville

Objectif

Dans ce TP, vous allez :

  • créer une base de données : lancer un service PostgreSQL
  • vous connecter à cette base de données : utiliser un service cloudBeaver
  • insérer des données via un script SQL
  • écrire les requêtes SQL pour répondre aux questions

1 Mise en place

1.1 Lancer les services

    • username : user-
    • password : collez votre mot de passe
TipKesako
  • PostgreSQL : Base de données
  • Cloudbeaver : Logiciel pour communiquer avec une base de données

Il est possible de se connecter directement à une base de données, mais beaucoup plus simple d’utiliser un outil tel cloudBeaver.

1.2 Créer une connexion

Normalement si vous lancez les deux services dans l’ordre, lors du lancement de cloudBeaver, la base de données PostgreSQL est détectée et la connexion créée automatiquement.

Est-ce que la connexion a été créée ?

  • Si oui, elle apparait à gauche dans cloudBeaver (liste des connexions)
  • Si non, créez la connexion
NoteCréer une connexion
    • il contient les informations pour se connecter à la base de données
    • Hostname : postgresql-<...>
    • Port : 5432
    • Database : defaultdb
    • Username : user-<username>
    • Password : <password>

Une fois la connexion créée, ouvrez-là :

    • un petit rond vert apparait à côté

Enfin ouvrez un éditeur SQL pour écrire des requêtes :

    • En haut dans le bandeau bleu, sinon sélectionnez ce profil

1.3 Insérer les données

    • Icone orange avec un parchemin contenant une flêche 📜

Si vous n’avez eu aucun message d’erreur, vérifiez la création des tables :

Tip
  • Parchemin contenant une flêche (ALT+X) ➡️ exécuter toutes les requêtes de l’éditeur
  • Flêche orange (CTRL+ENTREE) ➡️ exécuter la requête courante (là où est le curseur de la souris)

1.4 Alternatives

D’autres outils pour réaliser l’exercice :

2 Description des données

Nous avons une liste de joueurs et de tournois. Les joueurs peuvent participer aux différents tournois.

Un tournoi est supervisé par un arbitre. Un arbitre est un joueur qui a obtenu un grade d’arbitre.

Dans un tournoi, les parties se déroulent à une certaine cadence (Lente, Rapide, Blitz).

classDiagram
  class arbitre_grade {
    id_arbitre_grade: INT(PK)
    nom: VARCHAR
  }

  class joueur {
    id_joueur: INT(PK)
    pseudo: VARCHAR
    nom: VARCHAR
    prenom: VARCHAR
    elo: INT
    mail: VARCHAR
    id_arbitre_grade: INT(FK -> arbitre_grade)
  }

  class cadence {
    id_cadence: INT(PK)
    nom: VARCHAR
  }

  class tournoi {
    id_tournoi: INT(PK)
    id_arbitre: INT(FK -> joueur)
    nom: VARCHAR
    debut: DATE
    fin: DATE
    nb_rondes: INT
    id_cadence: INT(FK -> cadence)
  }

  class participant {
    id_tournoi: INT(FK -> tournoi)
    id_joueur: INT(FK -> joueur)
  }

  arbitre_grade -- joueur
  cadence -- tournoi
  tournoi -- participant
  joueur -- participant

3 Questions

3.1 Découverte des tables

    • 💡 voir méthode UPPER

3.2 Mise à jour

    • Pourquoi cela ne fonctionne pas ? Que faudrait-t-il faire pour supprimer ce joueur ?
    • 💡 voir IS NOT NULL

3.3 Jointures

3.4 Agrégations

Lien vers la correction