-- 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;
