Ajout des exercices SQL 1 à 4
This commit is contained in:
134
exercice1_4.sql
Normal file
134
exercice1_4.sql
Normal 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 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;
|
||||
Reference in New Issue
Block a user