Académique Documents
Professionnel Documents
Culture Documents
Bases de données
Une base de données est un ensemble de données structurées. Dans les faits, il s’agit d’un ensemble de tables, chaque
table étant un tableau de données composé de lignes et colonnes. Les bases de données contiennent souvent des milliers
de données, parfois des millions de données, voire plus. Elles sont souvent accessibles à tous. On en trouve de très
intéressantes sur le site data.gouv, des données qui sont exploitées quotidiennement par le fameux site covid tracker qui
réalise une analyse très visuelle de ces données pour comprendre l’évolution complexe de l’épidémie.
1 Exemple simple
Prenons un exemple (un peu simplifié) pour lancer notre étude : les élèves du lycée Tici.
On considère pour cela un ensemble de 3 tables : Tici_sec, Tici_sup, Tici_pro. La table Tici_sup sera constituée de données
ayant six champs : Id, nom, prenom, classe, regime et age où Id est le numéro d’identification de l’étudiant de type TEXT,
nom, prenom, classe et regime étant de type TEXT et où age est l’age (le jour du 1 janvier de l’année scolaire) de type
INTEGER. On attribue souvent le titre de PRIMARY KEY à un champ qui identifie clairement une donnée. Cela ne peut pas
être le cas du nom, plusieurs étudiants pouvant porter le même nom. Ici, ce sera évidemment le champ Id qui tiendra ce
rôle. Dans la première colonne du tableau, on aura donc le numéro d’identification, dans la deuxième le nom, etc ...
Le but du programme de ECG2, en ce qui concerne les bases de données, est d’en comprendre le principe, de savoir
grossièrement comment on les crée, comment insérer des nouvelles données, comment en supprimer certaines,
comment mettre à jour une table. On s’intéressera surtout à la manière dont on peut interroger ces bases pour en
extraire des informations importantes pour une activité particulière. Par exemple, dans la base de données précédentes,
on aimerait pouvoir identifier tous les étudiants du supérieur qui sont internes, ou encore, tous les élèves de première 2,
ou encore tous les élèves du lycée professionnel ayant 17 ans ou plus... Pour cela on utilise un logiciel de type SGBD
(système de gestion de bases de données). Deux parties non négligeables de la gestion des bases de données sont
écartées de notre programme : le contrôle des données et la gestion des droits, d’une part, et les transactions entre les
bases de données d’autre part.
1.2 Le langage SQL
C’est un langage très répandu pour la gestion des bases de données. Il utilise des données de différents types. Nous nous
contenterons du type entier (« INTEGER ») et du type texte « TEXT ». SQL peut utiliser bien d’autres types (les chaînes de
caractères d’une longueur fixée, les booléens, les dates, ...). Pour mettre en œuvre SQL, il nous faut un environnement
dans lequel nous pourrons utiliser les commandes SQL et voir les résultats de ces actions, c’est à dire un SGBD basé sur le
langage SQL. Il y a plusieurs possibilités et cela peut évoluer assez vite.
• On peut utiliser une plateforme qui gère une interface graphique très confortable pour voir les bases de données et nos
actions : XAMPP (sous windows, Os X ou linux) qui utilise PHPMyAdmin.
• On peut utiliser le module très puissant sqlite3 qui permet d’utiliser SQLITE au sein de Python : c’est bien mais cela
oblige à connaître quelques instructions Python supplémentaires pour faire le lien entre Python et SQL. On y accède en
faisant import sqlite3.
• On peut aussi utiliser sqlite3 avec une interface graphique assez commode avec le programme Python DB Browser pour
Sqlite. C’est sans doute la solution la plus simple. Voir le site https://sqlitebrowser.org/. L’exemple de visualisation
graphique suivant est donné
a) Création d’une table La plupart du temps, nous récupérons des bases de données déjà établies. Il suffit alors de les
importer (ou simplement charger) dans notre environnement de travail. Il est possible que l’on ait à créer nos propres
tables. Dans ce cas on utilise l’instruction SQL : « CREATE TABLE nom_de_table » Pour l’exemple déjà cité :
On recommence de même pour les deux autres tables Tici_sup et Tici_pro. Pour remplir chacune des tables, on peut
utiliser l’instruction SQL : « INSERT INTO nom_de_table » Pour l’exemple, cela donnerait :
On utilise l’instruction « DELETE FROM nom_de_table » Pour notre exemple, on pourrait demander :
Si on veut remettre cette ligne en place après son effacement, on peut redemander :
On utilise l’instruction « UPDATE nom_de _table » Par exemple, dans notre table Tici_sup, on peut demander
Si on veut remettre la table dans son état initial, on peut utiliser une mise à jour inversée (ce qui est assez facile ici)
On utilise l’instruction « SELECT nom_de_champ FROM nom_de _table » Quelques exemples à partir de la table Tici_sec :
Sélectionne tous les champs de la table. Cela revient à visionner toute la table.
Sélectionne les élèves de la classe 1_2 qui sont demi-pensionnaires. Cela donne :
• Les fonctions non exigibles : « MIN », « MAX », « SUM », « AVG »(la moyenne), « COUNT »(pour compter).
Commençons par une instruction assez naturelle dans le contexte de notre exemple : « UNION » (ce n’est pas une
instruction exigible).
Cela a évidemment pour effet de créer une quatrième table dans notre base de données :
On rencontrera éventuellement les deux autres opérateurs ensemblistes (non exigibles) « INTERSECTION », « EXCEPT ».
1.4 Sélectionner des données dans plusieurs tables avec SQL
C’est l’intérêt majeur du travail sur une base de données comportant plusieurs tables. On aura donc assez souvent
recours à ces instructions qu’il faudra bien maîtriser. L’instruction générale à connaître est la suivante, si Φ est une
condition : « SELECT * FROM nom_de_table_1 INNER JOIN nom_de_table_2 ON Φ » Cela donne, avec plus de détails,
l’utilisation classique suivante
Prenons un exemple avec les élèves du lycée Tici. Commençons par créer une cinquième table dans notre base de
données, rassemblant les adresses mail des élèves du lycée.
Puis
Nous obtenons :