Retour au blog

SQL et Bases de Données Relationnelles : Maîtrise Essentielle

Plonge dans le monde structuré des bases de données relationnelles et deviens un pro de SQL pour ton BUT Data Science.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

SQL : Le Langage Universel des Données Structurées

Dans le monde de la Data Science, les données ne se présentent pas toujours sous forme de fichiers plats comme les CSV. Elles résident souvent dans des systèmes complexes et structurés appelés bases de données, et plus particulièrement, des bases de données relationnelles. Pour interagir avec ces données, extraire des informations pertinentes et les organiser, un langage est indispensable : SQL (Structured Query Language). Si tu es en BUT Data Science, comprendre et maîtriser SQL est une compétence fondamentale qui ouvrira de nombreuses portes.

Ce guide est conçu pour t'emmener pas à pas dans l'univers des bases de données relationnelles et de SQL. Nous allons explorer ce que sont ces systèmes, pourquoi ils sont si importants, et comment tu peux utiliser SQL pour devenir un véritable maître de l'interrogation et de la manipulation des données. Prépare-toi à structurer tes connaissances et à donner du sens à l'information !

Comprendre les Bases de Données Relationnelles

Avant de plonger dans SQL, il est crucial de comprendre le modèle relationnel. Une base de données relationnelle stocke des données dans des tables. Chaque table est composée de lignes (enregistrements) et de colonnes (attributs). La "relation" vient du fait que ces tables peuvent être liées entre elles grâce à des clés communes.

Imagine une bibliothèque :

  • Tu as une table `Livres` avec des colonnes comme `ID_Livre`, `Titre`, `Auteur`, `Annee_Publication`.
  • Tu as une table `Auteurs` avec des colonnes comme `ID_Auteur`, `Nom`, `Prenom`.
  • Tu as une table `Emprunts` avec des colonnes comme `ID_Emprunt`, `ID_Livre`, `ID_Lecteur`, `Date_Emprunt`.

Le lien entre `Livres` et `Auteurs` se fait via `ID_Auteur`. Le lien entre `Livres` et `Emprunts` se fait via `ID_Livre`. Ce système de clés permet d'éviter la redondance des données et d'assurer leur cohérence.

Définition : Une base de données relationnelle est une collection de données organisées en tables, où les relations entre les données sont établies par des clés primaires et étrangères.

Les Concepts Clés du Modèle Relationnel

  • Table : Un ensemble de données structurées sous forme de lignes et de colonnes.
  • Colonne (Attribut) : Une caractéristique spécifique des données dans une table (ex: "Nom", "Âge").
  • Ligne (Enregistrement ou Tuple) : Une entrée individuelle dans une table, représentant un objet unique (ex: une personne spécifique, un produit spécifique).
  • Clé Primaire (Primary Key) : Une colonne (ou un ensemble de colonnes) dont la valeur identifie de manière unique chaque ligne d'une table. Elle ne peut pas être nulle et doit être unique.
  • Clé Étrangère (Foreign Key) : Une colonne (ou un ensemble de colonnes) dans une table qui fait référence à la clé primaire d'une autre table. Elle établit le lien entre les tables.
  • Schéma : La structure logique de la base de données, décrivant les tables, leurs colonnes, leurs types de données et leurs relations.

Pourquoi SQL est Essentiel pour la Data Science ?

Dans le domaine de la Data Science, tu seras amené à travailler avec des données provenant de sources très diverses. Les bases de données relationnelles sont omniprésentes dans les entreprises, que ce soit pour gérer des clients, des produits, des transactions, des logs, etc. SQL est le langage standard utilisé pour communiquer avec ces bases de données.

Maîtriser SQL te permettra de :

  • Extraire des données précises : Sélectionner exactement les informations dont tu as besoin.
  • Analyser des données : Effectuer des agrégations, des calculs et des tris directement dans la base de données.
  • Gérer les données : Insérer de nouvelles données, mettre à jour des enregistrements existants, supprimer des données obsolètes.
  • Comprendre la structure des données : Visualiser comment les informations sont organisées et liées.
  • Optimiser les requêtes : Écrire des requêtes efficaces pour obtenir des résultats rapidement, même avec de grands volumes de données.

C'est une compétence fondamentale qui complète parfaitement les outils de programmation comme Python. Tandis que Python excelle dans l'analyse et la modélisation, SQL te donne le pouvoir d'accéder et de préparer les données brutes qui alimenteront ces processus.

À retenir : SQL n'est pas un langage de programmation au sens classique (pas de boucles complexes ou de structures conditionnelles élaborées), mais un langage déclaratif conçu spécifiquement pour la gestion et l'interrogation des bases de données relationnelles.

Les Commandes SQL Fondamentales

SQL est composé de plusieurs sous-langages, mais pour la Data Science, tu te concentreras principalement sur le DML (Data Manipulation Language) et le DQL (Data Query Language). Voici les commandes les plus importantes que tu utiliseras au quotidien :

1. SELECT : Pour Extraire des Données

C'est la commande la plus utilisée. Elle te permet de spécifier quelles colonnes tu veux récupérer et de quelles tables.

  • Sélectionner toutes les colonnes d'une table : SELECT * FROM nom_de_la_table;
  • Sélectionner des colonnes spécifiques : SELECT colonne1, colonne2 FROM nom_de_la_table;

2. FROM : Pour Spécifier la Source des Données

Indique la table (ou les tables) d'où proviennent les données que tu veux extraire.

3. WHERE : Pour Filtrer les Lignes

Permet de spécifier des conditions pour ne récupérer que les lignes qui correspondent à tes critères.

  • Filtrer par une valeur exacte : SELECT * FROM clients WHERE ville = 'Paris';
  • Filtrer par une condition numérique : SELECT * FROM produits WHERE prix > 100;
  • Utiliser des opérateurs logiques (AND, OR, NOT) : SELECT * FROM commandes WHERE montant > 50 AND date_commande >= '2023-01-01';

4. ORDER BY : Pour Trier les Résultats

Trie les lignes du résultat selon une ou plusieurs colonnes, par ordre croissant (ASC, par défaut) ou décroissant (DESC).

  • Trier par nom : SELECT * FROM utilisateurs ORDER BY nom ASC;
  • Trier par chiffre d'affaires décroissant : SELECT nom_produit, prix FROM produits ORDER BY prix DESC;

5. GROUP BY : Pour Regrouper les Lignes

Regroupe les lignes qui ont les mêmes valeurs dans une ou plusieurs colonnes afin de pouvoir appliquer des fonctions d'agrégation.

6. Fonctions d'Agrégation (COUNT, SUM, AVG, MIN, MAX)

Ces fonctions sont souvent utilisées avec `GROUP BY` pour effectuer des calculs sur des groupes de lignes.

  • COUNT(*) : Compte le nombre de lignes.
  • SUM(colonne) : Calcule la somme des valeurs d'une colonne.
  • AVG(colonne) : Calcule la moyenne des valeurs d'une colonne.
  • MIN(colonne) : Trouve la valeur minimale dans une colonne.
  • MAX(colonne) : Trouve la valeur maximale dans une colonne.

Exemple : Compter le nombre de clients par ville :

SELECT ville, COUNT(*) AS nombre_clients FROM clients GROUP BY ville;

7. JOIN : Pour Combiner des Tables

Essentiel pour exploiter le modèle relationnel. Permet de combiner des lignes de deux tables ou plus basées sur une colonne liée.

  • INNER JOIN : Retourne uniquement les lignes qui ont une correspondance dans les deux tables.
  • LEFT JOIN (ou LEFT OUTER JOIN) : Retourne toutes les lignes de la table de gauche, et les lignes correspondantes de la table de droite. S'il n'y a pas de correspondance, les colonnes de droite sont NULL.
  • RIGHT JOIN (ou RIGHT OUTER JOIN) : L'inverse de LEFT JOIN.
  • FULL JOIN (ou FULL OUTER JOIN) : Retourne toutes les lignes des deux tables.

Exemple : Afficher le nom des clients et le montant de leurs commandes :

SELECT c.nom, c.prenom, co.montant FROM clients c INNER JOIN commandes co ON c.id_client = co.id_client;

(Ici, `c` et `co` sont des alias pour les tables `clients` et `commandes` pour simplifier la requête).

Exemple Concret : Analyse des Ventes avec SQL

Imaginons que tu travailles avec deux tables dans une base de données : `Produits` et `Commandes`. Les tables sont reliées par `ID_Produit`.

Table `Produits` :

ID_Produit NomProduit PrixUnitaire Categorie
1 Ordinateur Portable 1200.00 Electronique
2 Clavier Mécanique 80.00 Accessoires
3 Souris Optique 25.00 Accessoires

Table `Commandes` :

ID_Commande ID_Produit Quantite DateCommande
101 1 2 2023-10-26
102 2 5 2023-10-26
103 1 1 2023-10-27
104 3 3 2023-10-27

Voici quelques requêtes SQL pour analyser ces données :

Requête 1 : Afficher les produits et leur quantité commandée.

Tu dois joindre les deux tables pour obtenir le nom du produit.

SELECT p.NomProduit, c.Quantite FROM Produits p INNER JOIN Commandes c ON p.ID_Produit = c.ID_Produit;

Résultat attendu :

NomProduit Quantite
Ordinateur Portable 2
Clavier Mécanique 5
Ordinateur Portable 1
Souris Optique 3

Requête 2 : Calculer le chiffre d'affaires total par produit.

Tu dois calculer `Quantite * PrixUnitaire` pour chaque commande, puis grouper par produit.

SELECT p.NomProduit, SUM(c.Quantite * p.PrixUnitaire) AS ChiffreAffaireTotal FROM Produits p INNER JOIN Commandes c ON p.ID_Produit = c.ID_Produit GROUP BY p.NomProduit ORDER BY ChiffreAffaireTotal DESC;

Résultat attendu :

NomProduit ChiffreAffaireTotal
Ordinateur Portable 3600.00
Clavier Mécanique 400.00
Souris Optique 75.00

Gestion des Données avec SQL (DML)

Au-delà de l'interrogation, SQL te permet aussi de modifier les données dans ta base.

  • INSERT : Pour ajouter de nouvelles lignes INSERT INTO nom_de_la_table (colonne1, colonne2) VALUES (valeur1, valeur2);
  • UPDATE : Pour modifier des lignes existantes UPDATE nom_de_la_table SET colonne1 = nouvelle_valeur WHERE condition;

    Attention : L'omission de la clause WHERE peut mettre à jour TOUTES les lignes de la table !

  • DELETE : Pour supprimer des lignes DELETE FROM nom_de_la_table WHERE condition;

    Attention : Comme pour UPDATE, omettre la clause WHERE supprimera TOUTES les lignes de la table.

Attention aux pièges : Ne jamais exécuter des requêtes `UPDATE` ou `DELETE` sur une base de données de production sans une sauvegarde récente et sans être absolument certain de la clause `WHERE`. Une erreur peut avoir des conséquences désastreuses.

Tu peux partager cette page librement, en citant ORBITECH AI Academy avec son lien.