En NSI, tu vas souvent manipuler des données : des listes de notes, des fichiers clients, des résultats de mesures… Deux approches reviennent sans cesse : les données en tables (souvent stockées dans des fichiers CSV) et le langage SQL pour interroger des bases de données. Beaucoup d'élèves les confondent, mais elles répondent à des besoins différents. Dans cet article, on va clarifier tout ça, avec du Python à l'appui, pour que tu sois serein en cours et au bac.
Qu'est-ce qu'une donnée en table ?
Une table, c'est une structure en lignes et colonnes. Chaque colonne représente un attribut (par exemple : nom, prénom, âge), et chaque ligne est un enregistrement (une entrée). C'est exactement comme un tableau Excel ou un fichier CSV.
En NSI, on utilise souvent des fichiers CSV (Comma Separated Values) pour stocker ce genre de données. Voici un exemple simple :
nom,age,ville
Alice,17,Paris
Bob,16,Lyon
Chloé,17,Marseille
Ce fichier est une table : trois colonnes (nom, age, ville) et trois lignes de données. Pour le manipuler en Python, on peut utiliser le module csv de la bibliothèque standard, ou bien lire le fichier ligne par ligne.
L'important, c'est de comprendre que ces données sont statiques : elles sont stockées dans un fichier, et pour les traiter, tu écris du code Python qui les lit et les transforme. Par exemple, pour afficher les noms des élèves majeurs :
import csv
with open('eleves.csv', newline='', encoding='utf-8') as f:
lecteur = csv.DictReader(f)
for ligne in lecteur:
if int(ligne['age']) >= 18:
print(ligne['nom'])
Ici, on lit le fichier, on parcourt chaque ligne, et on filtre selon une condition. C'est du traitement de données en tables : le code Python fait tout le travail.
Et le SQL alors ?
Le SQL (Structured Query Language) est un langage dédié à l'interrogation de bases de données relationnelles. Une base de données, c'est un ensemble de tables, souvent reliées entre elles par des clés. Le SQL te permet de poser des questions sur ces données : quels sont les élèves de plus de 18 ans ?, quelle est la moyenne des notes ?, etc.
Contrairement au traitement en tables avec Python, le SQL est déclaratif : tu dis ce que tu veux obtenir, pas comment le faire. Par exemple, pour obtenir les noms des élèves majeurs à partir d'une table eleves :
SELECT nom FROM eleves WHERE age >= 18;
Pas de boucle, pas de gestion de fichier : la base de données s'occupe de tout. C'est très puissant, surtout quand les données sont volumineuses ou réparties sur plusieurs tables.
En NSI, tu apprends à utiliser SQL en Terminale, généralement avec SQLite (une base de données légère, intégrée à Python). Tu peux créer une table, insérer des données, et faire des requêtes.
Voici un exemple complet avec Python et SQLite :
import sqlite3
# Connexion à une base (ou création)
conn = sqlite3.connect('eleves.db')
c = conn.cursor()
# Création de la table
c.execute('''CREATE TABLE eleves (nom TEXT, age INTEGER, ville TEXT)''')
# Insertion de données
c.execute("INSERT INTO eleves VALUES ('Alice', 17, 'Paris')")
c.execute("INSERT INTO eleves VALUES ('Bob', 16, 'Lyon')")
c.execute("INSERT INTO eleves VALUES ('Chloé', 17, 'Marseille')")
conn.commit()
# Requête
c.execute('SELECT nom FROM eleves WHERE age >= 18')
print(c.fetchall())
conn.close()
Ici, on utilise SQL pour interroger la base. On ne lit pas un fichier CSV, on demande à la base de nous donner les résultats.
Les différences fondamentales
Pour bien distinguer les deux, retiens ces points :
- Stockage : les données en tables (CSV) sont dans un fichier texte simple ; les bases de données SQL sont gérées par un système qui optimise l'accès et la manipulation.
- Manipulation : avec les tables CSV, tu écris du code Python pour tout faire ; avec SQL, tu utilises des requêtes déclaratives.
- Relation : une base de données peut contenir plusieurs tables liées ; un fichier CSV est généralement une seule table.
- Performance : SQL est plus performant pour les gros volumes de données et les opérations complexes (jointures, agrégations).
En clair, les fichiers CSV sont parfaits pour des données simples, statiques, et pour apprendre les bases du traitement. SQL est indispensable dès que les données deviennent nombreuses et structurées.
Cas d'usage concret : un mini-projet
Imaginons que tu doives analyser les notes d'une classe. On te donne un fichier notes.csv avec les colonnes : eleve, matiere, note.
Avec Python, tu peux calculer la moyenne par matière :
import csv
from collections import defaultdict
notes = defaultdict(list)
with open('notes.csv', newline='', encoding='utf-8') as f:
for ligne in csv.DictReader(f):
notes[ligne['matiere']].append(float(ligne['note']))
for matiere, valeurs in notes.items():
moyenne = sum(valeurs) / len(valeurs)
print(f"{matiere} : {moyenne:.2f}")
Maintenant, si les données sont dans une base SQL, tu peux faire la même chose avec une requête :
SELECT matiere, AVG(note) FROM notes GROUP BY matiere;
Les deux approches donnent le même résultat, mais la requête SQL est plus concise et plus rapide à écrire. En revanche, pour tracer un graphique ou faire un traitement plus personnalisé, Python est plus flexible.
Dans ton projet NSI, tu peux par exemple :
- Lire un fichier CSV et le convertir en base SQLite.
- Utiliser Python pour nettoyer les données (enlever les doublons, corriger les erreurs).
- Faire des requêtes SQL pour extraire des statistiques.
- Visualiser les résultats avec matplotlib.
Cette combinaison est très appréciée au bac. Tu montres que tu sais manipuler des données en tables et interroger une base.
Conseils pour ne plus confondre
Voici quelques astuces pour t'aider :
- Repère le contexte : si on te parle de fichier CSV, de pandas, de lecture de fichier, c'est du traitement de tables. Si on te parle de requêtes, de SELECT, de base de données, c'est du SQL.
- Pense à l'outil : pour lire un CSV, tu utilises Python ; pour interroger une base, tu utilises SQL (même si Python peut exécuter du SQL via sqlite3).
- Entraîne-toi : fais des exercices où tu passes d'un format à l'autre. Par exemple, crée un CSV, puis importe-le dans une base SQLite et fais des requêtes.
Pour t'exercer, n'hésite pas à consulter nos cours NSI et nos exercices corrigés. Tu y trouveras des sujets sur les données en tables et sur SQL.
Si tu veux approfondir SQL, notre article dédié Le SQL expliqué simplement est fait pour toi.
Conclusion
En résumé, les données en tables (CSV) et le SQL sont deux outils complémentaires. Les premiers sont simples et manipulables avec Python ; le second est puissant et adapté aux bases de données. Ne les confonds plus : quand tu vois un fichier, pense traitement ; quand tu vois une base, pense requête.
Continue à pratiquer, car c'est en manipulant que tu comprendras vraiment. Et si tu as besoin d'aide, des ressources comme Allo Bac ou Allo Lycée peuvent t'accompagner.
Bon courage, tu es sur la bonne voie !
