Aller au contenu

Bases de données et SQL

D'après BAC 2023

L’énoncé de cet exercice utilise les mots clefs du langage SQL suivants : SELECT, FROM, WHERE, JOIN...ON, UPDATE...SET, DELETE, INSERT INTO...VALUES, ORDER BY.

On rappelle que la clause ORDER BY suivie d'un attribut permet de trier les résultats par ordre croissant des valeurs de l'attribut.

Radio France souhaite créer une base de données relationnelle contenant les podcasts des émissions de radio. Pour cela elle utilise le langage SQL. Elle crée :

  • une relation (ou table) podcast qui contient le thème et l’année de diffusion.
  • une relation emission qui contient les émissions (id_emission, nom), la radio de diffusion et l’animateur.
  • une relation description qui contient un résumé et la durée du podcast en minutes.

On donne ci-dessous quelques enregistrements présents dans les tables podcast, emission et description.

  • Relation podcast

    id​​podcast theme annee id​​emission
    1 Le système d’enseignement supérieur 2022 10081
      français est-il juste et efficace ?    
    2 Trois innovations pour la croissance future 2021 10081
      (1/3) : La révolution blockchain.    
    3 Travailleurs de plateformes : vers un 2021 10175
      nouveau prolétariat ?    
    4 Le poids de la souveraineté numérique 2019 10183
      française    
    40 Le poids de la souveraineté numérique 2019 10183
      française    
    5 Dans le cloud en Islande, terre des data 2019 10212

  • Relation emission

    id​_​emission nom radio animateur
    10081 Entendez-vous l’éco ? France culture Tiphaine De R.  
    10175 Le Temps du débat France culture Léa S.
    10183 Soft power France culture Frédéric M.
    10212 La tête au carré France inter Mathieu V.

  • Relation description

    id​​description resume duree id​​emission
    101 Autrefois réservé à une élite, 4 10081
      l’enseignement supérieur français s’est    
      profondément démocratisé : donne-t-il    
      pour autant les mêmes chances à    
      chacun ?    
    102 Quelles sont leurs conditions de travail et 58 10175
      quels sont leurs moyens de contestation ?    
    103 La promesse de la blockchain, c’est la 4 10081
      suppression des intermédiaires et la    
      confiance à grande échelle.    

id_podcast de la relation podcast et id_emission de la relation emission sont des clés primaires. L’attribut id_emission de la relation podcast fait directement référence à la clé primaire de la relation emission.

  1. Écrire le schéma relationnel de la relation description, en précisant les attributs et leurs types probables, la clé primaire et la ou les clé(s) étrangère(s) éventuelle(s).

    description(id_description Int, resume String, duree int, #id_emission int)

    1. Écrire ce qu’affiche la requête suivante appliquée aux extraits précédents :

      1
      SELECT theme, annee FROM podcast WHERE id_emission = 10081 ;
      

      Cela affiche le thème et l'année des podcasts dont l'attribut id_emission est 10081.

      theme annee
      Le système d’enseignement supérieur 2022
      français est-il juste et efficace ?  
      Trois innovations pour la croissance future 2021
      (1/3) : La révolution blockchain.  

    2. Écrire une requête SQL permettant d'afficher les thèmes des podcasts de l'année 2019.

      1
      SELECT theme FROM podcat WHERE annee = 2019 ;
      
  2. Écrire une requête SQL affichant la liste des thèmes et des années de diffusion des podcasts dans l'ordre chronologique des années.

    1
    SELECT theme, annee FROM podcast ORDER BY annee ;
    
    1. Décrire simplement le résultat obtenu avec cette requête SQL.

      1
      SELECT DISTINCT theme FROM podcast
      

      Cela affiche tous les thèmes de la relation podcast, les thèmes en doublon n'étant affichés qu'une seule fois.

    2. Écrire une requête SQL supprimant la ligne contenant l'id​_​podcast = 40 de la relation podcast.

      1
      DELETE FROM podcast WHERE id_podcast = 40 ;
      
    1. Une erreur de saisie a été faite dans la relation emission. Écrire une requête SQL permettant de changer le nom de l’animateur de l'émission "Le Temps du débat" en "Emmanuel L.".

      1
      2
      3
      UDPATE emission
      SET animateur = 'Emmanuel L.'
      WHERE nom = 'Le Temps du débat'
      
    2. Écrire une requête SQL permettant d'ajouter l'émission "Hashtag" sur la radio "France inter" avec "Mathieu V.". On lui donnera un id​_​emission égal à 12850.

      1
      2
      INSERT INTO emission
      VALUES (12850, 'Hashtag', 'France Inter', 'Mathieu V.')
      
  3. Écrire une requête permettant de lister les thèmes, le nom des émissions et le résumé des podcasts pour lesquels la durée est strictement inférieure à 5 minutes.

    1
    2
    3
    4
    SELECT theme, nom, resume FROM podcast
    JOIN description ON description.id_emission = podcast.id_emission
    JOIN emission on emission.id_emission = podcast.id_emission
    WHERE duree < 5