mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-14 18:59:59 +01:00
Add MySQL setup and initial data scripts
- Created a Docker Compose file to set up a MySQL container named M2_SQL_COURSE with an empty password and a database named TP. - Added a Makefile with a target to execute a SQL script (TP1.sql) inside the MySQL container and log the output. - Implemented the TP1.sql script to create tables for Magasin and Localite, insert initial data, and perform several queries.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
4
M2/SQL/Makefile
Normal file
4
M2/SQL/Makefile
Normal file
@@ -0,0 +1,4 @@
|
||||
# Makefile
|
||||
|
||||
tp1:
|
||||
docker exec -i M2_SQL_COURSE mysql -u root TP -t < ./scripts/TP1.sql | tee logs/last-run.log
|
||||
13
M2/SQL/docker-compose.yml
Normal file
13
M2/SQL/docker-compose.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
services:
|
||||
mysql:
|
||||
container_name: M2_SQL_COURSE
|
||||
image: mysql:latest
|
||||
environment:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
|
||||
MYSQL_DATABASE: TP
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
50
M2/SQL/scripts/TP1.sql
Normal file
50
M2/SQL/scripts/TP1.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
DROP TABLE IF EXISTS Magasin;
|
||||
DROP TABLE IF EXISTS Localite;
|
||||
|
||||
-- Q1.1
|
||||
CREATE TABLE IF NOT EXISTS Magasin(
|
||||
Id VARCHAR(3) PRIMARY KEY,
|
||||
Enseigne VARCHAR(100) NOT NULL,
|
||||
Ville VARCHAR(255) NOT NULL,
|
||||
Chiffre INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Localite(
|
||||
Ville VARCHAR(255) NOT NULL,
|
||||
Population INTEGER NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO Localite (Ville, Population) VALUES
|
||||
('Créteil', 92984),
|
||||
('Pantin', 60597),
|
||||
('Colombes', 87328);
|
||||
|
||||
INSERT INTO Magasin (Id, Enseigne, Ville, Chiffre) VALUES
|
||||
('D10', 'Super Discount', 'Créteil', 2800000),
|
||||
('I10', 'Inter Prix', 'Créteil', 1230000),
|
||||
('T01', 'Leader Trade', 'Créteil', 830000),
|
||||
('M01', 'Discount Market', 'Créteil', 1010000),
|
||||
('T08', 'Leader Trade', 'Pantin', 3230000),
|
||||
('D20', 'Super Discount', 'Pantin', 556000),
|
||||
('D22', 'Super Discount', 'Colombes', 4032000),
|
||||
('T05', 'Leader Trade', 'Colombes', 2780000),
|
||||
('I17', 'Inter Prix', 'Colombes', 3912000),
|
||||
('M87', 'Discount Market', 'Colombes', 1471000),
|
||||
('M89', 'Discount Market', 'Colombes', 845000);
|
||||
|
||||
SELECT * FROM Magasin;
|
||||
SELECT * FROM Localite;
|
||||
|
||||
-- Q1.2
|
||||
SELECT Ville, COUNT(*) AS NombreMagasins
|
||||
FROM Magasin
|
||||
GROUP BY Ville
|
||||
ORDER BY Ville ASC;
|
||||
|
||||
-- Q1.3
|
||||
SELECT Ville, Enseigne, COUNT(*) as NombreMagasins
|
||||
FROM Magasin
|
||||
GROUP BY Ville, Enseigne
|
||||
HAVING NombreMagasins >= 2;
|
||||
|
||||
-- Q1.4
|
||||
Reference in New Issue
Block a user