diff --git a/M2/SQL/DANJOU_Arthur.sql b/M2/SQL/DANJOU_Arthur.sql index 2ee5705..688c522 100644 --- a/M2/SQL/DANJOU_Arthur.sql +++ b/M2/SQL/DANJOU_Arthur.sql @@ -1,5 +1,77 @@ --- EXERCICE 1 --- +-- Suppression des tables si elles existent +DROP TABLE IF EXISTS Inscription; +DROP TABLE IF EXISTS Orateur; +DROP TABLE IF EXISTS Conference; + +-- Création des tables +CREATE TABLE Conference ( + IDConf INTEGER, + Titre VARCHAR(100) NOT NULL, + DateConf DATE, + Prix DECIMAL(6,2), + CONSTRAINT Conference_pk + PRIMARY KEY(IDConf) +); + +CREATE TABLE Orateur ( + IDOr INTEGER, + NomOrateur VARCHAR(100) NOT NULL, + CONSTRAINT Orateur_pk + PRIMARY KEY(IDOr) +); + +CREATE TABLE Inscription ( + IDIns INTEGER, + IDConf INTEGER, + IDOr INTEGER, + DateIns DATE, + CONSTRAINT Inscription_pk + PRIMARY KEY(IDIns), + CONSTRAINT Inscription_fk1 + FOREIGN KEY (IDConf) REFERENCES Conference(IDConf), + CONSTRAINT Inscription_fk2 + FOREIGN KEY (IDOr) REFERENCES Orateur(IDOr) +); + +-- Insertion des conférences +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (1, 'Data Science Fundamentals', '2025-03-15', 150.00); +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (2, 'Advanced Machine Learning', '2025-03-15', 200.00); +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (3, 'Introduction to AI', '2025-04-10', 120.00); +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (4, 'Big Data for Business', '2025-05-20', 180.00); +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (5, 'Data Visualization Techniques', '2025-05-20', 130.00); +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (6, 'Cloud Computing Basics', '2025-01-25', 100.00); +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (7, 'Cybersecurity Essentials', '2025-02-14', 160.00); +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (8, 'Neural Networks Deep Dive', '2025-03-15', 220.00); +INSERT INTO Conference(IDConf, Titre, DateConf, Prix) VALUES (9, 'Data Warehouses and Data Lakes', '2025-02-14', 150.00); + +-- Insertion des orateurs +INSERT INTO Orateur(IDOr, NomOrateur) VALUES (1, 'Jean Dupont'); +INSERT INTO Orateur(IDOr, NomOrateur) VALUES (2, 'Isabella Rihl'); +INSERT INTO Orateur(IDOr, NomOrateur) VALUES (3, 'Marc Twilight'); +INSERT INTO Orateur(IDOr, NomOrateur) VALUES (4, 'Houda Ben Ali'); +INSERT INTO Orateur(IDOr, NomOrateur) VALUES (5, 'Yann Lequn'); +INSERT INTO Orateur(IDOr, NomOrateur) VALUES (6, 'Sophie Marchand'); + +-- Insertion des inscriptions +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (1, 1, 1, '2025-01-10'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (2, 2, 1, '2025-01-11'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (3, 3, 1, '2025-01-15'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (4, 4, 2, '2025-02-01'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (5, 5, 2, '2025-02-20'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (6, 6, 3, '2025-03-10'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (7, 7, 3, '2025-02-28'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (8, 8, 1, '2025-03-01'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (9, 1, 4, '2025-01-12'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (10, 2, 4, '2025-01-15'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (11, 3, 4, '2025-02-01'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (12, 1, 5, '2025-01-25'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (13, 5, 5, '2025-01-30'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (14, 4, 6, '2024-12-10'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (15, 5, 6, '2025-01-05'); +INSERT INTO Inscription(IDIns, IDConf, IDOr, DateIns) VALUES (16, 1, 6, '2025-01-10'); + -- Question 1.1 SELECT Titre, MIN(Prix) AS 'Prix Minimum' FROM Conference; @@ -50,6 +122,74 @@ WHERE NOT EXISTS ( --- EXERCICE 2 --- +-- Suppression des tables si elles existent +DROP TABLE IF EXISTS Oeuvre; +DROP TABLE IF EXISTS Collection; +DROP TABLE IF EXISTS Musee; + +-- Création des tables +CREATE TABLE Musee ( + idm INTEGER, + nom VARCHAR(100) NOT NULL, + ville VARCHAR(100) NOT NULL, + CONSTRAINT Musee_pk + PRIMARY KEY(idm) +); + +CREATE TABLE Collection ( + idc INTEGER, + idm INTEGER NOT NULL, + nom VARCHAR(100) NOT NULL, + CONSTRAINT Collection_pk + PRIMARY KEY(idc), + CONSTRAINT Collection_fk + FOREIGN KEY (idm) REFERENCES Musee(idm) +); + +CREATE TABLE Oeuvre ( + ido INTEGER, + idc INTEGER NOT NULL, + titre VARCHAR(100) NOT NULL, + artiste VARCHAR(100) NOT NULL, + annee INTEGER, + prix_estime DECIMAL(12,2), + CONSTRAINT Oeuvre_pk + PRIMARY KEY(ido), + CONSTRAINT Oeuvre_fk + FOREIGN KEY (idc) REFERENCES Collection(idc) +); + +-- Insertion des musées +INSERT INTO Musee(idm, nom, ville) VALUES (1, 'Louvre', 'Paris'); +INSERT INTO Musee(idm, nom, ville) VALUES (2, 'Musée d''Orsay', 'Paris'); +INSERT INTO Musee(idm, nom, ville) VALUES (3, 'Metropolitan Museum of Art', 'New York'); +INSERT INTO Musee(idm, nom, ville) VALUES (4, 'Galerie nationale', 'Berlin'); + +-- Insertion des collections +INSERT INTO Collection(idc, idm, nom) VALUES (1, 1, 'Toile classique'); +INSERT INTO Collection(idc, idm, nom) VALUES (2, 1, 'Sculpture'); +INSERT INTO Collection(idc, idm, nom) VALUES (3, 2, 'Impressionnisme'); +INSERT INTO Collection(idc, idm, nom) VALUES (4, 3, 'Art moderne'); +INSERT INTO Collection(idc, idm, nom) VALUES (5, 4, 'Art contemporain'); +INSERT INTO Collection(idc, idm, nom) VALUES (6, 2, 'Photographie'); + +-- Insertion des œuvres (ido, idc, titre, artiste, annee, prix_estime) +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (1, 1, 'Mona Lisa', 'Léonard de Vinci', 1503, 700000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (2, 1, 'La Vénus de Milo', 'Alexandros d''Antioche', -100, 20000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (3, 2, 'Le Penseur', 'Auguste Rodin', 1902, 15000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (4, 3, 'Impression, Soleil Levant', 'Claude Monet', 1872, 5000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (5, 3, 'La Nuit étoilée', 'Vincent van Gogh', 1889, 100000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (6, 4, 'Les Demoiselles d''Avignon', 'Pablo Picasso', 1907, 140000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (7, 4, 'Guernica', 'Pablo Picasso', 1937, 200000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (8, 5, 'Balloon Dog', 'Jeff Koons', 1994, 56000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (9, 5, 'Untitled', 'Banksy', 2005, 15000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (10, 6, 'Migrant Mother', 'Dorothea Lange', 1936, 800000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (11, 6, 'Moonrise, Hernandez, New Mexico', 'Ansel Adams', 1941, 600000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (12, 1, 'La Liberté guidant le peuple', 'Eugène Delacroix', 1830, 120000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (13, 3, 'Le Déjeuner sur l''herbe', 'Edouard Manet', 1863, 60000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (14, 4, 'Composition VIII', 'Wassily Kandinsky', 1923, 40000000.00); +INSERT INTO Oeuvre(ido, idc, titre, artiste, annee, prix_estime) VALUES (15, 5, 'For the Love of God', 'Damien Hirst', 2007, 100000000.00); + -- Question 2.1 SELECT COUNT(*) AS 'NombreMusees' FROM Musee; diff --git a/M2/SQL/Makefile b/M2/SQL/Makefile index dd442fd..e4c5685 100644 --- a/M2/SQL/Makefile +++ b/M2/SQL/Makefile @@ -4,4 +4,10 @@ tp1: docker exec -i M2_SQL_COURSE mysql -u root TP -t < ./scripts/TP1.sql | tee logs/tp1.log tp2: - docker exec -i M2_SQL_COURSE mysql -u root TP -t < ./scripts/TP2.sql | tee logs/tp2.log \ No newline at end of file + docker exec -i M2_SQL_COURSE mysql -u root TP -t < ./scripts/TP2.sql | tee logs/tp2.log + +tp3: + docker exec -i M2_SQL_COURSE mysql -u root TP -t < ./scripts/TP3.sql | tee logs/tp3.log + +project: + docker exec -i M2_SQL_COURSE mysql -u root TP -t < ./scripts/DANJOU_Arthur.sql | tee logs/project.log \ No newline at end of file