NUMERIQUE ET SCIENCES INFORMATIQUES

Niveau : Terminale générale, enseignement de spécialité NSI

D
É
C
O
N
N
E
C
T
É

Base de données relationnelle et langage SQL

1- Introduction :

Qu'est-ce qu'une base de données ?

Si les tableurs sont des "broyeurs de chiffres" du monde numérique, les bases de données sont les "broyeurs d'informations".

C’est lors du programme Apollo en 1960 que l’idée de la base de données a été lancée. Le but était de collecter des données afin de permettre d’aller sur la lune avant la fin de la décennie. Mais les bases de données ont pris leur envol avec l’émergence d’internet et l’apparition du big data, gigantesque collecte de données qu’il faut stocker, modifier, traiter. Quasiment toutes les bases de données actuelles sont basées sur les travaux d’Edgar F. Codd (1970).

Une base de données (BDD) a pour tâche principale de répondre à des questions. La plupart des bases de données possèdent un outil de requête qui permet de formuler des questions et d'obtenir des réponses utiles d'après les données stockées dans la base.

Exemple :
On veut créer une base de données contenant les informations de mes disques audio. En voici la liste.

N°Titre Album Titre Duree N°Piste Type Interprete Langue Style
1 N'attendons pas Merci pour ça 3:23 1 CD VIANNEY Français Variété
2 N'attendons pas Pour de vrai 4:01 2 CD VIANNEY Français Variété
3 N'attendons pas Mode 3:06 3 CD VIANNEY Français Variété
4 N'attendons pas N'attendons pas 3:13 4 CD VIANNEY Français Variété
5 N'attendons pas Beau-papa 3:17 5 CD VIANNEY Français Variété
6 N'attendons pas La fille du sud 3:50 6 CD VIANNEY Français Variété
7 Johnny Acte II Edition Limitée Or et Blanc Ouverture 2:20 1 Vinyle Johnny Hallyday Français Rock
8 Johnny Acte II Edition Limitée Or et Blanc Je Te Promets 4:02 2 Vinyle Johnny Hallyday Français Rock
9 Johnny Acte II Edition Limitée Or et Blanc Le Pénitencier 4:05 3 Vinyle Johnny Hallyday Français Rock
10 Johnny Acte II Edition Limitée Or et Blanc J'aimerai Pouvoir Encore Souffrir Comme Ça 3:58 4 Vinyle Johnny Hallyday Français Rock
11 Johnny Acte II Edition Limitée Or et Blanc A Propos De Mon Père 2:58 5 Vinyle Johnny Hallyday Français Rock
12 Johnny Acte II Edition Limitée Or et Blanc Love Me Tender 3:32 6 Vinyle Johnny Hallyday Français Rock

Déjà là, on se retrouve avec une base de données... Il y a effectivement des informations qui sont formalisées et ordonnées. Ceci sous-entend qu'on se retrouve avec des données d'un même style dans chaque colonne (Duree, nombre ou chaîne de caractère). Il s'agit donc bien d'une base de données.

En réalité, il s'agit d'une unique table, mais une table suffit a faire une base (même si ce n'est pas forcément le principe). On se rend compte que les informations sont vraiment redondantes... Il faut donc regrouper les informations d'un même style.

On pourrait ainsi créer deux tables :

La table des albums :

N°Album Album Type Interprete Langue Style
1 N'attendons pas CD VIANNEY Français Variété
2 Johnny Acte II Edition Limitée Or et Blanc Vinyle Johnny Hallyday Français Rock

La table des titres :

N°Titre N°Album Titre Duree N°Piste
1 1 Merci pour ça 3:23 1
2 1 Pour de vrai 4:01 2
3 1 Mode 3:06 3
4 1 N'attendons pas 3:13 4
5 1 Beau-papa 3:17 5
6 1 La fille du sud 3:50 6
7 2 Ouverture 2:20 1
8 2 Je Te Promets 4:02 2
9 2 Le Pénitencier 4:05 3
10 2 J'aimerai Pouvoir Encore Souffrir Comme Ça 3:58 4
11 2 A Propos De Mon Père 2:58 5
12 2 Love Me Tender 3:32 6

On se retrouve maintenant avec une base de données mieux structurée et plus facile à maintenir.

base

La colonne N°Album dans la table TITRE donne en fait la valeur de la colonne N°Album correspondant à l'album sur lequel on trouve la chanson.

C'est ce qu'on appelle une relation.

On peut également dire que N°Album de la table albums est le parent de N°Album de la table TITRE.

Les colonnes N°Album, Type, Langue, Interprete... sont appelés champs ou attributs

La table des albums :

N°Album Album Type Interprete Langue Style
1 N'attendons pas CD VIANNEY Français Variété
2 Johnny Acte II Edition Limitée Or et Blanc Vinyle Johnny Hallyday Français Rock

La table des titres :

N°Titre N°Album Titre Duree N°Piste
1 1 Merci pour ça 3:23 1
2 1 Pour de vrai 4:01 2

N°Album de la table albums est la clé primaire (primary key)

N°Titre de la table titres est la clé primaire (primary key)

N°Album de la table albums est la clé étrangère (Foreign key) ou externe.

Une clé étrangère en bases de données permet de garantir l’intégrité référentielle entre les données de différentes tables. Pour ajouter un nouveau titre d'un nouvel album, il faudra que le nouvel album soit enregistré en premier

Souvent la clé primaire peut également servir d'index. L'index est, comme pour un livre, un moyen pour le moteur de base de données d'accéder rapidement à certains enregistrements.

On représente la structure des tables de la manière suivante : c'est ce qu'on appelle un schéma relationnel

tables

On remarque que les clés primaires sont soulignées et que la clé étrangère est précédée par le symbole #, ce n'est pas toujours le cas car le symbole # peut aussi représenter une donnée numérique.

Il existe aussi une autre manière de décrire le schéma relationnel :

  • albums (N°Album, Album, Type, Interprete, Langue, Style)
  • titres (N°Titre, #N°Album, Titre, Duree, N°Piste)

Les listes de membres et de clients sont d'autres exemples de bases de données.

2 - Language SQL

L'acronyme SQL signifie Structured Query Language en anglais.

Dévellopé en 1974 par Donald Chamberlain et Raymond Boyce employés chez IBM : le SEQUEL (Structured English Query Language) est devenu le language SQL, normalisé depuis 1986

Ce language qui permet de communiquer avec une base de donnée.

2.1 - SELECT FROM

Elle permet de lire les données stockées dans les tables et retourne les enregistrements sous la forme d'un tableau

Résultat :

Album Interprete
N'attendons pas VIANNEY
Johnny Acte II Edition Limitée Or et Blanc Johnny Hallyday

Remarque : Pour afficher tous les champs de la table on peut exécuter la requête suivante : SELECT * FROM albums

* signifie tous les champs

2.2 - SELECT FROM WHERE

Résultat :

Titre
Merci pour ça
Pour de vrai
Mode
N'attendons pas
Beau-papa
La fille du sud

Quel sera le résultat de la requête suivante et pourquoi n'est-il pas possible d'obtenir plus d'un résultat ?


Pour faire les lignes d'un tableau maintenez la touche Alt enfoncée et tapez le code du symbole souhaité

179 : │ 180 : ┤ 191 : ┐ 192 : └ 193 : ┴ 194 : ┬ 195 : ├ 196 : ─ 197 : ┼ 217 : ┘ 218 : ┌ 30 : ▲ 31 : ▼

2.3 - ORDER BY

Elle permet de trier les données du tableau retournée par la requête SQL par ordre croissant (ascendant) : ASC ou décroissant (descendant): DESC

Résultat :

N°Piste ▼Titre
6Love Me Tender
5A Propos De Mon Père
4J'aimerai Pouvoir Encore Souffrir Comme Ça
3 Le Pénitencier
2Je Te Promets
1Ouverture

Quel sera le résultat de la requête :

Résultat :

2.4 - JOIN ON

Elle permet de faire une recherche dans plusieurs table :

Résultat :

TypeAlbum ▲InterpreteN°PisteTitreDuree
VinyleJohnny Acte II Edition Limitée Or et BlancJohnny Hallyday6Love Me Tender3:32
VinyleJohnny Acte II Edition Limitée Or et BlancJohnny Hallyday4J'aimerai Pouvoir Encore Souffrir Comme Ça3:58
VinyleJohnny Acte II Edition Limitée Or et BlancJohnny Hallyday2Je Te Promets4:02
VinyleJohnny Acte II Edition Limitée Or et BlancJohnny Hallyday3Le Pénitencier4:05
CDN'attendons pasVIANNEY6La fille du sud3:50
CDN'attendons pasVIANNEY2Pour de vrai4:01

Quel sera le résultat de la requête suiante :

Réponse :

2.5 - INSERT INTO VALUES

Cette commande permet d'insérer des valeurs les champs de la table à condition que la clé primaire ne soit pas déjà existante.

Résultat :

N°Album Album Type Interprete Langue Style
1 N'attendons pas CD VIANNEY Français Variété
2 Johnny Acte II Edition Limitée Or et Blanc Vinyle Johnny Hallyday Français Rock
3 Thriller CD Michael Jackson Anglais Pop

Quelle requête SQL faut-t-il exécuter pour insérez les valeurs suivantes dans la table titres :

N°TitreN°AlbumTitreDureeN°Piste
13 3 Thriller5:571

Aurait-on pu insérer le titre Thriller avant d'insérer l'album Thriller ?

Réponses :

2.6 - UPDATE SET WHERE

Cette commande permet de corriger ou mettre à jour un champ d'une table

Remarque : pour n'affecter qu'une ligne le la table titres, il est préfèrable que la condition where se fasse sur la clé primaire, sauf lorsqu'on veut corriger un faute d'ortographe par exemple qui concerne plusieurs titres.

2.7 - S'entrainer en ligne

Revoir les notions et approfondir vos connaissances sur le site Internet :

Colibri Strasbourg, réalisé par Antoine Moulin et David Cazier

3. Exercice du baccalauréat session 2022 :

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

  • La clause ORDER BY suivie d'un attribut permet de trier les résultats par ordre croissant de l'attribut ;
  • COUNT(*) renvoie le nombre de lignes d'une requête ;

Un musicien souhaite créer une base de données relationnelle contenant ses morceaux et Interpretes préférés. Pour cela il utilise le langage SQL. Il crée une table morceaux qui contient entre autres les titres des morceaux et leur année de sortie :

id_morceautitreanneeid_interprete
1Like a Rolling Stone19651
2Respect19672
3Imagine19703
4Hey Jude19684
5Smells Like Teen Spirit19915
6I Want To hold Your Hand19634

Il crée la table interpretes qui contient les Interpretes et leur pays d'origine :

id_interpretenompays
1 Bob DylanÉtats-Unis
2 Aretha FranklinÉtats-Unis
3 John LennonAngleterre
4 The BeatlesAngleterre
5 NirvanaÉtats-Unis

id_morceau de la table morceaux et id_interprete de la table interpretes sont des clés primaires.

L’attribut id_interprete de la table morceaux fait directement référence à la clé primaire de la table interpretes.

Q1. Écrire le résultat de la requête suivante :


Pour faire les lignes d'un tableau maintenez la touche Alt enfoncée et tapez le code du symbole souhaité

179 : │ 180 : ┤ 191 : ┐ 192 : └ 193 : ┴ 194 : ┬ 195 : ├ 196 : ─ 197 : ┼ 217 : ┘ 218 : ┌

Q2. Écrire une requête permettant d'afficher les noms des Interpretes originaires d'Angleterre.

Q3. Écrire le résultat de la requête suivante :


Q4. Écrire une requête permettant de calculer le nombre de morceaux dans la table morceaux.

Q5. Écrire une requête affichant les titres des morceaux par ordre alphabétique.

Q6. Citer, en justifiant, la clé étrangère de la table morceaux.

Q7. Écrire un schéma relationnel des tables interpretes et morceaux.

Q8. Expliquer pourquoi la requête suivante produit une erreur :


Q9. Une erreur de saisie a été faite. Écrire une requête SQL permettant de changer l’année du titre « Imagine » en 1971.

Q10. Écrire une requête SQL permettant d'ajouter l'Interprete « The Who » venant d'Angleterre à la table interpretes. On lui donnera un id_interprete égal à 6.

Q11. Écrire une requête SQL permettant d'ajouter le titre « My Generation » de « The Who » à la table morceaux. Ce titre est sorti en 1965 et on lui donnera un id_morceau de 7 ainsi que l'id_interprete qui conviendra.

Q12. Écrire une requête permettant de lister les titres des Interpretes venant des États- Unis.

4 - Exercice

On donne le schéma relationnel suivant :

  • Pizzas (id_pizza, nom, prix_vente)
  • Produits (id_produit, nom, prix_kg, alergene)
  • Ingrediants (#id_produit, #id_pizza, quantite)
  • Vente (id_vente, date, #id_pizza, note_consommateur)

Copiez le code SQL ci-dessus (ctrl a, puis ctrl c), puis collez-le dans programiz et cliquer sur Run SQL

Ecrire les requêtes suivantes demandées

Collez vos requêtes ci-dessous et sauvegardez

5 - S'entrainer en ligne

https://sql.sh/exercices-sql

http://webtic.free.fr/sql/exint/q1.htm

https://developpement-informatique.com/article/45/exercices-corriges-de-langage-sql

Fond :  Texte :  Tables :  Thème du langage: