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