Retour au blog

Maîtrise SQL: Requêtes et Bases de Données

Plonge au cœur des bases de données relationnelles et deviens un expert en manipulation de données avec SQL.

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.

Bienvenue à l'ORBITECH AI Academy !

Salut à toi, futur architecte de données ! Les bases de données sont au cœur de presque toutes les applications informatiques modernes. Maîtriser SQL (Structured Query Language) est donc une compétence indispensable. Cette série d'exercices te fera passer de la création de tables simples aux requêtes complexes avec jointures et agrégations. Prépare-toi à manipuler des données comme un pro !

Compétences travaillées :

  • Comprendre les concepts fondamentaux des bases de données relationnelles.
  • Maîtriser les commandes DDL (Data Definition Language) comme CREATE TABLE.
  • Maîtriser les commandes DML (Data Manipulation Language) : SELECT, INSERT, UPDATE, DELETE.
  • Utiliser les clauses WHERE, ORDER BY, LIMIT pour filtrer et organiser les données.
  • Réaliser des jointures (JOIN) entre plusieurs tables.
  • Appliquer des fonctions d'agrégation (COUNT, SUM, AVG) avec GROUP BY et HAVING.

Erreurs Fréquentes à Éviter :

  • Oublier le point-virgule à la fin de chaque instruction SQL (selon le SGBD).
  • Ne pas mettre de guillemets autour des chaînes de caractères dans les clauses WHERE ('texte' vs colonne).
  • Tenter de supprimer ou mettre à jour des données sans clause WHERE, entraînant une perte ou modification massive.
  • Confondre GROUP BY et ORDER BY.
  • Utiliser WHERE pour filtrer des résultats d'agrégation, alors qu'il faut utiliser HAVING.

Contexte pour les exercices :

Nous allons travailler avec une base de données simple de gestion de bibliothèque. Voici les tables que tu pourrais rencontrer :

Table Livres :

ID_Livre Titre Auteur AnneePublication ID_Genre
1 Le Seigneur des Anneaux J.R.R. Tolkien 1954 1
2 1984 George Orwell 1949 2
3 Orgueil et Préjugés Jane Austen 1813 3
4 Le Petit Prince Antoine de Saint-Exupéry 1943 4
5 Dune Frank Herbert 1965 1

Table Genres :

ID_Genre NomGenre
1 Fantaisie
2 Dystopie
3 Roman
4 Conte
5 Science-Fiction

Exercices de Pratique

Exercice 1 : Création de Table

Écris l'instruction SQL pour créer la table Livres. Assure-toi que ID_Livre est la clé primaire et s'auto-incrémente. Les champs Titre et Auteur ne doivent pas être nuls.

Barème indicatif : 1.5 points

Correction :

Voici l'instruction DDL (Data Definition Language) pour créer la table Livres. On utilise PRIMARY KEY pour la clé primaire et AUTO_INCREMENT pour l'auto-incrémentation (la syntaxe peut varier légèrement selon le SGBD, ex: IDENTITY(1,1) pour SQL Server).

CREATE TABLE Livres (
 ID_Livre INT PRIMARY KEY AUTO_INCREMENT,
 Titre VARCHAR(255) NOT NULL,
 Auteur VARCHAR(255) NOT NULL,
 AnneePublication INT,
 ID_Genre INT
);

Résultat : Instruction SQL valide pour la création de la table Livres.

Point méthode : Toujours définir une clé primaire pour identifier de manière unique chaque enregistrement et penser aux contraintes (NOT NULL) dès la création pour garantir l'intégrité des données.

Exercice 2 : Insertion de Données

Écris les instructions SQL pour insérer les 5 livres présentés dans la table Livres que tu viens de créer. L'ID_Livre sera généré automatiquement.

Barème indicatif : 1.5 points

Correction :

Pour insérer des données, tu utilises la commande INSERT INTO. Puisque ID_Livre est auto-incrémenté, tu n'as pas besoin de le spécifier dans ta requête.

INSERT INTO Livres (Titre, Auteur, AnneePublication, ID_Genre) VALUES
('Le Seigneur des Anneaux', 'J.R.R. Tolkien', 1954, 1),
('1984', 'George Orwell', 1949, 2),
('Orgueil et Préjugés', 'Jane Austen', 1813, 3),
('Le Petit Prince', 'Antoine de Saint-Exupéry', 1943, 4),
('Dune', 'Frank Herbert', 1965, 1);

Résultat : Instructions SQL pour insérer les 5 livres.

Astuce : Tu peux insérer plusieurs lignes en une seule instruction INSERT en utilisant la syntaxe VALUES (), (), .;. C'est plus efficace que des insertions ligne par ligne.

Exercice 3 : Sélectionner Toutes les Données

Récupère toutes les colonnes et toutes les lignes de la table Livres.

Barème indicatif : 0.5 points

Correction :

L'astérisque (*) est un raccourci pour sélectionner toutes les colonnes.

SELECT *
FROM Livres;

Résultat : Toutes les données de la table Livres.

Astuce : C'est la requête la plus basique. Pratique pour explorer rapidement le contenu d'une table.

Exercice 4 : Sélectionner des Colonnes Spécifiques

Récupère uniquement les titres et les auteurs de tous les livres.

Barème indicatif : 0.5 points

Correction :

Tu listes simplement les noms des colonnes que tu souhaites récupérer, séparés par des virgules.

SELECT Titre, Auteur
FROM Livres;

Résultat : Titres et auteurs de tous les livres.

Point méthode : Pour de meilleures performances et une meilleure lisibilité, il est généralement recommandé de spécifier les colonnes plutôt que d'utiliser *, surtout dans des environnements de production.

Exercice 5 : Filtrer les Données avec WHERE

Récupère le titre et l'année de publication de tous les livres publiés après 1950 et dont l'auteur n'est pas 'George Orwell'.

Barème indicatif : 2 points

Correction :

La clause WHERE te permet de filtrer les résultats. Tu peux combiner plusieurs conditions avec AND et OR.

SELECT Titre, AnneePublication
FROM Livres
WHERE AnneePublication > 1950 AND Auteur <> 'George Orwell';

Ou avec != pour "différent de" :

SELECT Titre, AnneePublication
FROM Livres
WHERE AnneePublication > 1950 AND Auteur != 'George Orwell';

Résultat : Titres et années de publication des livres concernés : Le Seigneur des Anneaux (1954), Dune (1965).

Astuce : Fais attention aux opérateurs de comparaison (>, <, =, <> ou !=, >=, <=) et à l'orthographe exacte des chaînes de caractères.

Exercice 6 : Mettre à Jour des Données

Le livre "Dune" (ID_Livre = 5) a été initialement classé comme Fantaisie (ID_Genre = 1), mais il devrait être Science-Fiction (ID_Genre = 5). Mets à jour cette information dans la table Livres.

Barème indicatif : 1.5 points

Correction :

L'instruction UPDATE permet de modifier des enregistrements existants. La clause WHERE est cruciale pour cibler les lignes à modifier.

UPDATE Livres
SET ID_Genre = 5
WHERE ID_Livre = 5;

Résultat : La colonne ID_Genre du livre "Dune" est mise à jour à 5.

Warning : N'oublie JAMAIS la clause WHERE avec UPDATE, sinon tu modifieras TOUS les enregistrements de la table !

Exercice 7 : Supprimer des Données

Supprime le livre "Le Petit Prince" (ID_Livre = 4) de la table Livres.

Barème indicatif : 1.5 points

Correction :

L'instruction DELETE FROM est utilisée pour supprimer des lignes. Encore une fois, la clause WHERE est primordiale.

DELETE FROM Livres
WHERE ID_Livre = 4;

Résultat : Le livre "Le Petit Prince" est supprimé de la table Livres.

Warning : Comme pour UPDATE, sans la clause WHERE, DELETE FROM supprimerait TOUS les enregistrements de la table. Soyez toujours extrêmement prudent avec cette commande !

Exercice 8 : Trier et Limiter les Résultats

Récupère les titres et auteurs de tous les livres, triés par année de publication croissante. Ensuite, limite les résultats aux 2 premiers livres.

Barème indicatif : 2 points

Correction :

La clause ORDER BY permet de trier les résultats (ASC pour ascendant, DESC pour descendant). LIMIT restreint le nombre de lignes retournées.

SELECT Titre, Auteur
FROM Livres
ORDER BY AnneePublication ASC
LIMIT 2;

Résultat : Orgueil et Préjugés (Jane Austen), 1984 (George Orwell).

Point méthode : L'ordre des clauses est important en SQL : SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.

Exercice 9 : Jointure Interne (INNER JOIN)

Écris une requête pour afficher le titre de chaque livre et le nom de son genre correspondant. (Tu devras créer la table Genres et y insérer les données si ce n'est pas déjà fait).

Barème indicatif : 3 points

Correction :

Avant de joindre, assure-toi que la table Genres existe et contient des données :

-- Création de la table Genres (si ce n'est pas déjà fait)
CREATE TABLE Genres (
 ID_Genre INT PRIMARY KEY AUTO_INCREMENT,
 NomGenre VARCHAR(100) NOT NULL
);

-- Insertion des genres (si ce n'est pas déjà fait)
INSERT INTO Genres (NomGenre) VALUES
('Fantaisie'),
('Dystopie'),
('Roman'),
('Conte'),
('Science-Fiction');

Maintenant, la jointure :

Une INNER JOIN combine les lignes de deux tables lorsque la condition de jointure est remplie (ici, ID_Genre doit être égal dans les deux tables).

SELECT L.Titre, G.NomGenre
FROM Livres AS L
INNER JOIN Genres AS G ON L.ID_Genre = G.ID_Genre;

Résultat : Titre du livre et son genre (ex: Le Seigneur des Anneaux | Fantaisie, 1984 | Dystopie, etc.).

Astuce : L'utilisation d'alias (AS L, AS G) rend tes requêtes plus courtes et plus lisibles, surtout avec des noms de tables longs ou des jointures multiples.

Exercice 10 : Agrégation avec GROUP BY et HAVING

Compte le nombre de livres par genre et affiche uniquement les genres qui ont plus d'un livre. Affiche le nom du genre et le nombre total de livres.

Barème indicatif : 3 points

Correction :

Pour compter par catégorie, tu utilises COUNT() avec GROUP BY. Pour filtrer les résultats d'agrégation, tu dois utiliser HAVING et non WHERE.

SELECT G.NomGenre, COUNT(L.ID_Livre) AS NombreDeLivres
FROM Livres AS L
INNER JOIN Genres AS G ON L.ID_Genre = G.ID_Genre
GROUP BY G.NomGenre
HAVING COUNT(L.ID_Livre) > 1;

Résultat : Fantaisie | 2 (car Le Seigneur des Anneaux et Dune sont tous les deux Fantaisie).

Point méthode : Souviens-toi de la différence : WHERE filtre les lignes individuelles AVANT l'agrégation. HAVING filtre les groupes APRES l'agrégation. C'est une distinction fondamentale en SQL.

Comment ORBITECH Peut T'aider

ORBITECH AI Academy met à ta disposition des outils concrets pour réviser plus efficacement et progresser à ton rythme.

Tous ces outils sont disponibles sur ta plateforme ORBITECH. Connecte-toi et explore ceux qui correspondent le mieux à tes besoins !

Commencer gratuitement

Contenu en libre diffusion — partage autorisé sous réserve de mentionner ORBITECH AI Academy comme source.

COMMENCE DÈS MAINTENANT

Rejoins des milliers d’étudiants qui utilisent ORBITECH pour exceller.

Commencer gratuitement
🌍 ORBITECH AI Academy — Free education in 88 languages for 171 countries