Ajout des exercices SQL 1 à 4

This commit is contained in:
Safouane Bazzi
2025-10-13 14:59:52 +02:00
parent 9d284c4ec4
commit 697a42936c

134
exercice1_4.sql Normal file
View File

@@ -0,0 +1,134 @@
-- Création de la base et des tables
CREATE DATABASE IF NOT EXISTS safouane
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE safouane;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS Livres;
DROP TABLE IF EXISTS Auteurs;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE Auteurs (
auteur_id INT AUTO_INCREMENT,
nom VARCHAR(100) NOT NULL,
prenom VARCHAR(100),
PRIMARY KEY (auteur_id)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE Livres (
livre_id INT AUTO_INCREMENT PRIMARY KEY,
titre VARCHAR(255) NOT NULL,
annee_publication INT,
auteur_id INT,
resume TEXT,
FOREIGN KEY (auteur_id) REFERENCES Auteurs(auteur_id)
ON DELETE SET NULL
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SET NAMES utf8mb4;
SET CHARACTER SET utf8mb4;
-- Insertion des auteurs et livres
INSERT INTO Auteurs (nom, prenom) VALUES
('Hugo', 'Victor'),
('Camus', 'Albert'),
('Rowling', 'J.K.'),
('Orwell', 'George'),
('Austen', 'Jane'),
('Tolstoy', 'Leo'),
('Proust', 'Marcel'),
('de Beauvoir', 'Simone'),
('Asimov', 'Isaac'),
('Shelley', 'Mary'),
('Zola', 'Émile'),
('Flaubert', 'Gustave'),
('Stendhal', ''),
('Verne', 'Jules'),
('Dumas', 'Alexandre'),
('Christie', 'Agatha'),
('Conan Doyle', 'Arthur'),
('King', 'Stephen'),
('Murakami', 'Haruki'),
('Garcia Marquez', 'Gabriel'),
('Woolf', 'Virginia'),
('Kafka', 'Franz'),
('Dostoevsky', 'Fyodor'),
('Balzac', 'Honoré de'),
('Dickens', 'Charles');
INSERT INTO Livres (titre, annee_publication, auteur_id, resume) VALUES
('Les Misérables', 1862, 1, 'Jean Valjean cherche la rédemption.'),
('Notre-Dame de Paris', 1831, 1, 'Quasimodo et Esmeralda.'),
('LÉtranger', 1942, 2, 'Un homme indifférent face à la société.'),
('Germinal', 1885, 11, 'La vie des mineurs et leur révolte.'),
('Les Trois Mousquetaires', 1844, 15, 'Aventures dArtagnan et ses amis.');
SELECT COUNT(*) AS nb_auteurs FROM Auteurs;
SELECT COUNT(*) AS nb_livres FROM Livres;
-- EXERCICE 1 : INSERTION
INSERT INTO Auteurs (nom, prenom) VALUES ('Dumas', 'Alexandre');
INSERT INTO Livres (titre, annee_publication, auteur_id, resume)
VALUES ('Les Trois Mousquetaires', 1844, 15, 'Roman daventure.');
SELECT * FROM Auteurs;
SELECT * FROM Livres;
-- EXERCICE 2 : SELECTION
SELECT titre, annee_publication
FROM Livres
WHERE annee_publication < 1900
ORDER BY annee_publication;
SELECT *
FROM Auteurs
WHERE prenom = 'Victor';
SELECT titre, annee_publication
FROM Livres
WHERE titre LIKE '%Paris%';
-- EXERCICE 3 : SUPPRESSION
DELETE FROM Livres
WHERE titre = 'Notre-Dame de Paris';
SELECT * FROM Livres
WHERE titre LIKE '%Paris%';
SELECT COUNT(*) AS nb_livres_restants FROM Livres;
-- EXERCICE 4 : JOINTURES
SELECT
Livres.titre,
Livres.annee_publication,
Auteurs.nom,
Auteurs.prenom
FROM Livres
JOIN Auteurs
ON Livres.auteur_id = Auteurs.auteur_id
ORDER BY Livres.annee_publication;
SELECT
Livres.titre,
Auteurs.nom
FROM Livres
JOIN Auteurs
ON Livres.auteur_id = Auteurs.auteur_id;
SELECT
Livres.titre,
Livres.annee_publication,
Auteurs.nom
FROM Livres
JOIN Auteurs
ON Livres.auteur_id = Auteurs.auteur_id
WHERE Livres.annee_publication > 1900
ORDER BY Livres.annee_publication;