Aller au contenu

Exercices Progressifs SQL

Contexte : La Bibliothèque

Vous gérez une petite base de données d'une bibliothèque contenant une seule table Livres.

idtitreauteurannee_publicationgenredisponible
11984George Orwell1949SF1
2Le Petit PrinceAntoine de Saint-Exupéry1943Conte0
3DuneFrank Herbert1965SF1
4Les MisérablesVictor Hugo1862Roman1
5FondationIsaac Asimov1951SF0

(Note : `disponible` est un booléen : 1 = Oui, 0 = Non)

📥 Télécharger la base (bibliotheque.sql)
Niveau 1

1. Tout voir

Écrire la requête pour afficher toutes les colonnes de tous les livres.

Niveau 1

2. Titres uniquement

Afficher uniquement le titre et l'auteur de tous les livres.

Niveau 1

3. Science-Fiction

Afficher les titres des livres du genre 'SF'.

Niveau 1

4. Disponibles

Afficher les titres des livres qui sont actuellement disponibles (disponible = 1).

Niveau 1

5. Après 1950

Afficher les livres publiés strictement après l'année 1950.

Niveau 1

6. Auteurs précis

Afficher les livres écrits par 'George Orwell' OU 'Isaac Asimov'.

Contexte : La Concession Automobile

Vous analysez le stock d'une concession automobile.

idmarquemodelecouleuranneeprixkilométrage
1RenaultClioRouge20181200045000
2Peugeot208Blanc20201500020000
3TeslaModel 3Noir20223500010000
4RenaultMéganeBleu20158000120000
5Porsche911Gris20199500015000
📥 Télécharger la base (concession.zip)

CREATE TABLE IF NOT EXISTS Voitures ( id INTEGER PRIMARY KEY, marque TEXT, modele TEXT, couleur TEXT, annee INTEGER, prix INTEGER, kilometrage INTEGER ); -- Insertion des données INSERT INTO Voitures (id, marque, modele, couleur, annee, prix, kilometrage) VALUES (1, 'Renault', 'Clio', 'Rouge', 2018, 12000, 45000), (2, 'Peugeot', '208', 'Blanc', 2020, 15000, 20000), (3, 'Tesla', 'Model 3', 'Noir', 2022, 35000, 10000), (4, 'Renault', 'Mégane', 'Bleu', 2015, 8000, 120000), (5, 'Porsche', '911', 'Gris', 2019, 95000, 15000);

Niveau 2

1. Catalogue trié

Afficher toutes les voitures triées par prix croissant (du moins cher au plus cher).

Niveau 2

2. Les Renault

Afficher le modèle et le prix de toutes les voitures de marque 'Renault'.

Niveau 2

3. Voitures récentes et abordables

Afficher les voitures fabriquées après 2017 (inclus) ET dont le prix est inférieur à 20 000 €.

Niveau 2

4. Couleurs disponibles

Afficher la liste des différentes couleurs disponibles en stock, sans doublons.

Niveau 2

5. Le kilométrage

Afficher les voitures ayant moins de 50 000 km, triées par kilométrage croissant.

Niveau 2

6. Recherche spécifique

Afficher les voitures qui ne sont PAS de couleur 'Blanc'.

Contexte : Le Refuge des Renards

Vous gérez un refuge pour renards. Les données sont réparties sur trois tables.

Table Soignants
idnomspecialite
1Dr. DolittleVétérinaire
2Mme. PomfreyInfirmière
3HagridGardien
Table Renards
idnomsexeageid_enclosid_soignant
1RustyM311
2VixeyF212
3ZorroM521
4LunaF133
5ShadowM4NULL2
Table Enclos
idnom_enclossurface_m2type_sol
1La Forêt500Terre
2La Plaine300Herbe
3La Tanière50Sable
📥 Télécharger la base (refuge_renards.sql)

CREATE TABLE IF NOT EXISTS Enclos ( id INTEGER PRIMARY KEY, nom_enclos TEXT, surface_m2 INTEGER, type_sol TEXT ); -- Insertion des données Enclos INSERT INTO Enclos (id, nom_enclos, surface_m2, type_sol) VALUES (1, 'La Forêt', 500, 'Terre'), (2, 'La Plaine', 300, 'Herbe'), (3, 'La Tanière', 50, 'Sable'); -- Création de la table Renards CREATE TABLE IF NOT EXISTS Renards ( id INTEGER PRIMARY KEY, nom TEXT, sexe TEXT, age INTEGER, id_enclos INTEGER, FOREIGN KEY (id_enclos) REFERENCES Enclos(id) ); -- Insertion des données Renards INSERT INTO Renards (id, nom, sexe, age, id_enclos) VALUES (1, 'Rusty', 'M', 3, 1), (2, 'Vixey', 'F', 2, 1), (3, 'Zorro', 'M', 5, 2), (4, 'Luna', 'F', 1, 3), (5, 'Shadow', 'M', 4, NULL);

Niveau 3

1. Qui est où ?

Afficher le nom du renard et le nom de l'enclos dans lequel il se trouve (nécessite une jointure).

Niveau 3

2. Les grands espaces

Afficher les noms des renards qui vivent dans un enclos de plus de 200 m².

Niveau 3

3. Les mâles de la Forêt

Afficher les renards mâles ('M') qui sont dans l'enclos nommé 'La Forêt'.

Niveau 3

4. L'âge des pensionnaires

Afficher la liste des renards et de leur enclos, triée par âge du renard (du plus vieux au plus jeune).

Niveau 3

5. Sans domicile

Afficher les renards qui ne sont affectés à aucun enclos (id_enclos est NULL).

Niveau 3

6. Inventaire

Afficher le nom de l'enclos et la surface pour tous les enclos qui ont un sol de type 'Herbe' ou 'Terre'.