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,LIMITpour filtrer et organiser les données. - Réaliser des jointures (
JOIN) entre plusieurs tables. - Appliquer des fonctions d'agrégation (
COUNT,SUM,AVG) avecGROUP BYetHAVING.
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'vscolonne). - Tenter de supprimer ou mettre à jour des données sans clause
WHERE, entraînant une perte ou modification massive. - Confondre
GROUP BYetORDER BY. - Utiliser
WHEREpour filtrer des résultats d'agrégation, alors qu'il faut utiliserHAVING.
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.
- Générateur de Quiz : crée des quiz personnalisés pour tester tes connaissances et identifier tes lacunes.
- Générateur d'Exercices : crée des exercices d'entraînement adaptés à ton niveau avec corrections détaillées.
- Générateur de Résumés : transforme tes cours en fiches de révision claires et structurées.
- Générateur de Mind Maps : visualise et organise tes idées avec des cartes mentales générées automatiquement.
Tous ces outils sont disponibles sur ta plateforme ORBITECH. Connecte-toi et explore ceux qui correspondent le mieux à tes besoins !
Commencer gratuitement