diff --git a/exercice1_4.sql b/exercice1_4.sql new file mode 100644 index 0000000..8b1dde4 --- /dev/null +++ b/exercice1_4.sql @@ -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 d’Artagnan 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 d’aventure.'); + +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;