From a4e0e55efc8c7cda1c799b90ac5c2384e1341002 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 25 Sep 2025 13:00:08 +0200 Subject: [PATCH] =?UTF-8?q?Correction=20de=20la=20configuration=20MySQL=20?= =?UTF-8?q?dans=20docker-compose.yml=20et=20ajout=20du=20script=20TP2.sql?= =?UTF-8?q?=20pour=20la=20gestion=20des=20employ=C3=A9s=20et=20d=C3=A9part?= =?UTF-8?q?ements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- M2/SQL/docker-compose.yml | 4 +- M2/SQL/scripts/TP1.sql | 4 +- M2/SQL/scripts/TP2.sql | 96 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 M2/SQL/scripts/TP2.sql diff --git a/M2/SQL/docker-compose.yml b/M2/SQL/docker-compose.yml index faf7af5..543e309 100644 --- a/M2/SQL/docker-compose.yml +++ b/M2/SQL/docker-compose.yml @@ -3,8 +3,10 @@ services: container_name: M2_SQL_COURSE image: mysql:latest environment: - MYSQL_ALLOW_EMPTY_PASSWORD: 'true' + MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: TP + ports: + - 3306:3306 volumes: - mysql_data:/var/lib/mysql restart: unless-stopped diff --git a/M2/SQL/scripts/TP1.sql b/M2/SQL/scripts/TP1.sql index a3d1f29..8d30c37 100644 --- a/M2/SQL/scripts/TP1.sql +++ b/M2/SQL/scripts/TP1.sql @@ -54,8 +54,8 @@ GROUP BY Enseigne, Ville; -- Q1.5 SELECT Enseigne, m.Ville, AVG(Chiffre) AS ChiffreMoyen -FROM Magasin AS m -JOIN Localite AS l ON m.Ville = l.Ville +FROM Magasin m +JOIN Localite l ON m.Ville = l.Ville WHERE l.Population >= 80000 GROUP BY Enseigne, m.Ville; diff --git a/M2/SQL/scripts/TP2.sql b/M2/SQL/scripts/TP2.sql new file mode 100644 index 0000000..ce8a108 --- /dev/null +++ b/M2/SQL/scripts/TP2.sql @@ -0,0 +1,96 @@ +DROP TABLE IF EXISTS Employe; +DROP TABLE IF EXISTS Departement; + +-- Q2.1 +-- La clé 'Dep' ne fait pas référence à une clé primaire dans la table 'Departement' car les valeurs ne sont pas uniques. + +CREATE TABLE IF NOT EXISTS Employe( + Eno INTEGER PRIMARY KEY, + Enom VARCHAR(20), + Prof VARCHAR(30), + Date_Emb Date, + Salaire INTEGER, + Prime INTEGER, + Dep INTEGER +); + +CREATE TABLE IF NOT EXISTS Departement( + Dno INTEGER PRIMARY KEY, + Dnom VARCHAR(20), + Directeur INTEGER, + Ville VARCHAR(20) +); + +INSERT INTO Employe VALUES +(10, 'Lucas', 'Ingénieur', '2023-10-01', 3100, NULL, 3), +(20, 'Jean', 'Technicien', '2018-05-01', 2510, 1500, 2), +(30, 'Claude', 'Vendeur', '2010-03-01', 4300, 2000, 1), +(40, 'Claire', 'Ingénieur', '2010-03-01', 4500, 2400, 3), +(50, 'Léon', 'Technicien', '2015-09-01', 2100, 1000, 2); + +INSERT INTO Departement VALUES +(1, 'Vente', 30, 'Passy'), +(2, 'Production', 20, 'Lyon'), +(3, 'Développement', 40, 'Grenoble'), +(4, 'Recherche', 40, 'Antibes'); + +-- Q2.2 +SELECT * FROM Employe; +SELECT * FROM Departement; + +-- Q2.3 +SELECT Enom, Salaire FROM Employe; + +-- Q2.4 +SELECT DISTINCT Prof FROM Employe; + +-- Q2.5 +SELECT Enom, Salaire FROM Employe WHERE Salaire < 4000; + +-- Q2.6 +SELECT Enom, Prof FROM Employe e +JOIN Departement d ON e.Dep = d.Dno +WHERE d.Ville = 'Lyon'; + +-- Q2.7 +SELECT Enom, Prof FROM Employe e +JOIN Departement d ON d.Directeur = e.Eno +WHERE d.Dnom = 'Production'; + +-- Q2.8 +SELECT Enom, Date_Emb FROM Employe +WHERE Prof = 'Technicien'; + +-- Q2.9 +SELECT * FROM Employe, Departement; + +-- Q.2.10 +SELECT e.Enom, d.Dnom FROM Employe e, Departement d +WHERE e.Dep = d.Dno; + +-- Q2.11 +SELECT e.Enom, d.Dnom, dir.Enom AS Directeur FROM Employe e, Departement d, Employe dir +WHERE e.Dep = d.Dno AND d.Directeur = dir.Eno; + +-- Q2.12 +SELECT e.Enom, e.Date_Emb, d.Dnom, dir.Enom AS Directeur, dir.Date_Emb as 'Embauche Directeur' +FROM Employe e, Departement d, Employe dir +WHERE e.Dep = d.Dno AND d.Directeur = dir.Eno AND dir.Date_Emb > e.Date_Emb; + +-- Q2.13 +SELECT e.Eno, e.Enom FROM Employe e, Departement d +WHERE e.Dep = d.Dno AND d.Ville = 'Lyon'; + +-- Q2.14 +SELECT * FROM Departement +WHERE Dno NOT IN (SELECT DISTINCT Dep FROM Employe); + +-- Q2.15 +SELECT dir.Enom, d.Dnom, d.Ville FROM Employe dir, Departement d +WHERE dir.Eno = d.Directeur and (d.Dno = 1 OR d.Dno = 3); + +-- Q2.16 +INSERT INTO Employe VALUES (60, 'Jérémy', 'Ingénieur', '2013-10-26', 2400, 1000, 2); + +SELECT e.Enom, d.Dnom, d.Dnom FROM Employe e, Departement d, Employe inge +WHERE e.Dep = d.Dno AND inge.Prof = 'Ingénieur' and inge.Dep = e.Eno; \ No newline at end of file