From 7be3377bc36a10ff315b179317468c54b9671bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaura=20Mart=C3=AD?= Date: Tue, 24 Jan 2023 14:24:04 +0100 Subject: [PATCH 1/2] exercise mysql-basics --- diagramaDatabase.png | Bin 0 -> 50148 bytes employees.sql | 108 ++++++++++++++++++ queries.sql | 265 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 373 insertions(+) create mode 100644 diagramaDatabase.png create mode 100644 employees.sql create mode 100644 queries.sql diff --git a/diagramaDatabase.png b/diagramaDatabase.png new file mode 100644 index 0000000000000000000000000000000000000000..0702ab1dbabce586862a591f76f5337bea1d9d52 GIT binary patch literal 50148 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 literal 0 HcmV?d00001 diff --git a/employees.sql b/employees.sql new file mode 100644 index 0000000..345964d --- /dev/null +++ b/employees.sql @@ -0,0 +1,108 @@ +-- Sample employee database +-- See changelog table for details +-- Copyright (C) 2007,2008, MySQL AB +-- +-- Original data created by Fusheng Wang and Carlo Zaniolo +-- http://www.cs.aau.dk/TimeCenter/software.htm +-- http://www.cs.aau.dk/TimeCenter/Data/employeeTemporalDataSet.zip +-- +-- Current schema by Giuseppe Maxia +-- Data conversion from XML to relational by Patrick Crews +-- +-- This work is licensed under the +-- Creative Commons Attribution-Share Alike 3.0 Unported License. +-- To view a copy of this license, visit +-- http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to +-- Creative Commons, 171 Second Street, Suite 300, San Francisco, +-- California, 94105, USA. +-- +-- DISCLAIMER +-- To the best of our knowledge, this data is fabricated, and +-- it does not correspond to real people. +-- Any similarity to existing people is purely coincidental. +-- + +DROP DATABASE IF EXISTS employees; +CREATE DATABASE IF NOT EXISTS employees; +USE employees; + +SELECT 'CREATING DATABASE STRUCTURE' as 'INFO'; + +DROP TABLE IF EXISTS dept_emp, + dept_manager, + titles, + salaries, + employees, + departments; + +/*!50503 set default_storage_engine = InnoDB */; +/*!50503 select CONCAT('storage engine: ', @@default_storage_engine) as INFO */; + +CREATE TABLE employees ( + emp_no INT NOT NULL, + birth_date DATE NOT NULL, + first_name VARCHAR(14) NOT NULL, + last_name VARCHAR(16) NOT NULL, + gender ENUM ('M','F') NOT NULL, + hire_date DATE NOT NULL, + PRIMARY KEY (emp_no) +); + +CREATE TABLE departments ( + dept_no CHAR(4) NOT NULL, + dept_name VARCHAR(40) NOT NULL, + PRIMARY KEY (dept_no), + UNIQUE KEY (dept_name) +); + +CREATE TABLE dept_manager ( + emp_no INT NOT NULL, + dept_no CHAR(4) NOT NULL, + from_date DATE NOT NULL, + to_date DATE NOT NULL, + FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE, + FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE, + PRIMARY KEY (emp_no,dept_no) +); + +CREATE TABLE dept_emp ( + emp_no INT NOT NULL, + dept_no CHAR(4) NOT NULL, + from_date DATE NOT NULL, + to_date DATE NOT NULL, + FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE, + FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE, + PRIMARY KEY (emp_no,dept_no) +); + +CREATE TABLE titles ( + emp_no INT NOT NULL, + title VARCHAR(50) NOT NULL, + from_date DATE NOT NULL, + to_date DATE, + FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE, + PRIMARY KEY (emp_no,title, from_date) +) +; + +CREATE TABLE salaries ( + emp_no INT NOT NULL, + salary INT NOT NULL, + from_date DATE NOT NULL, + to_date DATE NOT NULL, + FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE, + PRIMARY KEY (emp_no, from_date) +) +; + +CREATE OR REPLACE VIEW dept_emp_latest_date AS + SELECT emp_no, MAX(from_date) AS from_date, MAX(to_date) AS to_date + FROM dept_emp + GROUP BY emp_no; + +# shows only the current department for each employee +CREATE OR REPLACE VIEW current_dept_emp AS + SELECT l.emp_no, dept_no, l.from_date, l.to_date + FROM dept_emp d + INNER JOIN dept_emp_latest_date l + ON d.emp_no=l.emp_no AND d.from_date=l.from_date AND l.to_date = d.to_date; \ No newline at end of file diff --git a/queries.sql b/queries.sql new file mode 100644 index 0000000..d863afe --- /dev/null +++ b/queries.sql @@ -0,0 +1,265 @@ +-- INSERT DATA + +-- At least 15 employees (at least 3 with same name) + +INSERT INTO employees VALUES + (1, "1990-12-03", "Laia", "Estruch", "F", "2015-07-14"), + (2, "1985-08-20", "Guillem", "Sala", "M", "2015-07-14"), + (3, "1980-03-23", "Laura", "RomiĆ ", "F", "2016-04-20"), + (4, "1989-04-10", "Aleix", "Pons", "M", "2016-07-30"), + (5, "1970-02-21", "Paula", "Gual", "F", "2017-01-24"), + (6, "1973-03-30", "Laia", "Mas", "F", "2018-01-15"), + (7, "1984-09-29", "Xavi", "Ros", "M", "2018-03-12"), + (8, "1985-11-21", "Blai", "Vives", "M", "2018-07-15"), + (9, "1983-12-12", "Laia", "Llach", "F", "2019-01-24"), + (10, "1989-08-19", "Joan", "Soler", "M", "2020-05-05"), + (11, "1985-07-25", "Ares", "Nadal", "F", "2020-05-05"), + (12, "1990-06-28", "Arnau", "Roig", "M", "2021-07-02"), + (13, "1994-07-12", "Rita", "Pitarch", "F", "2021-08-30"), + (14, "1995-10-21", "Xavi", "Vidal", "M", "2021-09-20"), + (15, "1984-12-11", "Marta", "Grau", "F", "2022-07-24"); + +-- Salaries between 5000 and 50000 of different gender +-- 5 employees must have at least two salaries in different ranges of dates and different amounts + +INSERT INTO salaries VALUES + (1, 15000, "2015-07-14", "2016-07-14"), + (1, 45000, "2016-07-14", "2019-07-14"), + (1, 37000, "2019-07-14", "2022-12-31"), + (2, 25000, "2015-07-14", "2017-07-14"), + (2, 35000, "2017-07-14", "2019-08-30"), + (2, 35000, "2019-08-31", "2022-12-31"), + (3, 45000, "2016-04-20", "2020-12-31"), + (3, 50000, "2021-01-01", "2022-12-31"), + (4, 37000, "2016-07-30", "2020-12-31"), + (4, 39000, "2021-01-01", "2022-12-31"), + (5, 37000, "2017-01-24", "2020-12-31"), + (5, 39000, "2021-01-01", "2022-12-31"), + (6, 26000, "2018-01-15", "2020-12-31"), + (6, 32000, "2021-01-01", "2022-12-31"), + (7, 27000, "2018-03-12", "2020-12-31"), + (7, 29000, "2021-01-01", "2022-12-31"), + (8, 50000, "2018-07-15", "2022-12-31"), + (9, 42000, "2019-01-24", "2022-12-31"), + (10, 36000, "2020-05-05", "2022-12-31"), + (11, 36000, "2020-05-05", "2022-12-31"), + (12, 24000, "2021-07-02", "2022-12-31"), + (13, 22000, "2021-08-30", "2022-12-31"), + (14, 19000, "2021-09-20", "2022-12-31"), + (15, 8000, "2022-07-24", "2022-12-31"); + +-- 10 employees belong to more than one department + +INSERT INTO departments VALUES + ("FNNC", "Finance"), + ("CCNT", "Accounting"), + ("MRKT", "Marketing"), + ("RSRC", "Research"), + ("DVLP", "Development"), + ("HMNR", "Human Resources"), + ("PRDC", "Production"); + +INSERT INTO dept_emp VALUES + (5, "HMNR", "2017-01-24", "2023-01-20"), + (5, "FNNC", "2017-01-24", "2023-01-20"), + (7, "FNNC", "2018-03-12", "2023-01-20"), + (7, "CCNT", "2018-03-12", "2023-01-20"), + (8, "PRDC", "2018-07-15", "2023-01-20"), + (9, "PRDC", "2019-01-24", "2023-01-20"), + (9, "MRKT", "2019-01-24", "2023-01-20"), + (10, "HMNR", "2020-05-05", "2023-01-20"), + (10, "MRKT", "2022-05-01", "2023-01-20"), + (11, "DVLP", "2020-05-05", "2023-01-20"), + (11, "RSRC", "2021-01-01", "2023-01-20"), + (12, "PRDC", "2021-07-02", "2023-01-20"), + (12, "RSRC", "2022-01-01", "2023-01-20"), + (13, "PRDC", "2021-08-30", "2023-01-20"), + (14, "PRDC", "2021-09-20", "2023-01-20"), + (15, "CCNT", "2022-07-24", "2023-01-20"), + (15, "PRDC", "2022-07-24", "2023-01-20"); + +-- 5 employees are managers + +INSERT INTO dept_manager VALUES + (1, "FNNC", "2020-01-01", "2023-01-20"), + (1, "CCNT", "2020-01-01", "2023-01-20"), + (3, "MRKT", "2018-05-15", "2023-01-20"), + (2, "RSRC", "2018-12-14", "2023-01-20"), + (2, "DVLP", "2018-12-14", "2023-01-20"), + (4, "HMNR", "2018-07-30", "2023-01-20"), + (6, "PRDC", "2019-03-24", "2023-01-20"); + +-- All employees have a degree and at least 5 titles are from 2020 + +INSERT INTO titles VALUES + (1, "Finance and Accounting Degree", "2010-02-15", "2015-02-15"), + (2, "Research and Development Degree", "2010-09-15", "2015-06-15"), + (3, "Marketing Degree", "2010-09-15", "2015-06-15"), + (4, "Human Resources Degree", "2011-02-15", "2016-02-15"), + (5, "Finance and Accounting Degree", "2011-09-15", "2016-06-15"), + (6, "Production Degree", "2012-09-15", "2017-06-15"), + (7, "Finance and Accounting Degree", "2012-09-15", "2017-06-15"), + (8, "Production Degree", "2013-09-15", "2018-06-15"), + (9, "Marketing Degree", "2013-02-15", "2018-02-15"), + (10, "Human Resources Degree", "2015-02-15", "2020-02-15"), + (11, "Research and Development Degree", "2015-02-15", "2020-02-15"), + (12, "Production Degree", "2015-09-15", "2020-06-15"), + (13, "Production Degree", "2015-09-15", "2020-06-15"), + (14, "Production Degree", "2015-09-15", "2020-06-15"), + (15, "Accounting Degree", "2015-09-15", "2020-06-15"); + +-- UPDATE DATA + +-- UPDATE EMPLOYEES _ Change name of an employee (query based on name, surname and date of birth) + +UPDATE employees + SET first_name = "Lara" + WHERE first_name = "Laura" AND last_name = "Romi?" AND birth_date = "1980-03-23"; + +-- UPDATE DEPARTMENTS _ Change the name of all departments + +UPDATE departments SET dept_name = CONCAT(dept_name, " Dpt"); + +-- GET DATA +-- Select all employees with a salary greater than 20,000, you must list all employees data and the salary. + +SELECT employees.*, salaries.salary FROM employees + LEFT JOIN salaries ON employees.emp_no = salaries.emp_no + WHERE salaries.salary > 20000; + +-- Select all employees with a salary below 10,000, you must list all employees data and the salary. + +SELECT employees.*, salaries.salary FROM employees + LEFT JOIN salaries ON employees.emp_no = salaries.emp_no + WHERE salaries.salary < 10000; + +-- Select all employees who have a salary between 14,000 and 50,000, you must list all employees data and the salary. + +SELECT employees.*, salaries.salary FROM employees + LEFT JOIN salaries ON employees.emp_no = salaries.emp_no + WHERE salaries.salary > 14000 AND salaries.salary < 50000; + +-- Select the total number of employees + +SELECT COUNT(emp_no) FROM employees; + +-- Select the total number of employees who have worked in more than one department + +SELECT COUNT(*) FROM + ( SELECT emp_no, COUNT(*) AS CNT + FROM dept_emp + GROUP BY emp_no + ) AS T + WHERE CNT > 1; + +-- Select the titles of the year 2020 + +SELECT title FROM titles WHERE to_date LIKE "2020%"; + +-- Select the name of all employees with capital letters + +SELECT UPPER(first_name) FROM employees; + +-- Select the name, surname and name of the current department of each employee + +SELECT first_name, last_name, dept_no FROM employees + INNER JOIN dept_emp ON employees.emp_no = dept_emp.emp_no; + +-- Select the name, surname and number of times the employee has worked as a manager + +SELECT first_name, last_name, COUNT(*) AS CNT FROM employees + INNER JOIN dept_manager ON employees.emp_no = dept_manager.emp_no + GROUP BY employees.emp_no; + +-- Select the name of employees without any being repeated + +SELECT DISTINCT first_name FROM employees; + +-- DELETE DATA + +-- Delete all employees with a salary greater than 20,000 + +DELETE employees FROM employees + INNER JOIN salaries ON employees.emp_no = salaries.emp_no + WHERE salaries.salary > 20000; + +-- Remove the department that has more employees. + +DELETE FROM departments + WHERE dept_no = (SELECT dept_no FROM dept_emp GROUP BY dept_no ORDER BY COUNT(dept_no) DESC LIMIT 1); + +-- Case more than one department to delete. + +DELETE FROM departments + WHERE dept_no IN (SELECT T.dept_no FROM + (SELECT dept_no, COUNT(dept_no) AS num_limit FROM dept_emp + GROUP BY dept_no) AS T + WHERE T.num_limit = (SELECT COUNT(dept_no) AS num_limit FROM dept_emp + GROUP BY dept_no ORDER BY num_limit DESC LIMIT 1)); + + +-- DESIGN AND CREATE A DATABASE + +DROP DATABASE IF EXISTS gym; +CREATE DATABASE IF NOT EXISTS gym; +USE gym; + +SELECT 'CREATING DATABASE STRUCTURE' as 'INFO'; + +DROP TABLE IF EXISTS rates, + users, + user_bracelet, + trainers, + activities, + activity_room; + +CREATE TABLE rates ( + id_rate CHAR(4) NOT NULL, + name_rate TEXT(15) NOT NULL, + price FLOAT(4) NOT NULL, + PRIMARY KEY (id_rate) +); + +CREATE TABLE users ( + id_user INT NOT NULL AUTO_INCREMENT, + full_name TEXT(50) NOT NULL, + phone VARCHAR(12) NOT NULL, + email VARCHAR(30) NOT NULL, + id_rate CHAR(4) NOT NULL, + PRIMARY KEY (id_user), + FOREIGN KEY (id_rate) REFERENCES rates (id_rate) ON DELETE CASCADE +); + +CREATE TABLE user_bracelet ( + bracelet_num INT(10) NOT NULL AUTO_INCREMENT, + id_user INT NOT NULL, + PRIMARY KEY (bracelet_num), + FOREIGN KEY (id_user) REFERENCES users (id_user) ON DELETE CASCADE +); + +CREATE TABLE trainers ( + id_trainer INT(2) NOT NULL AUTO_INCREMENT, + full_name TEXT(50) NOT NULL, + PRIMARY KEY (id_trainer) +); + +CREATE TABLE activity_room ( + id_room VARCHAR(5) NOT NULL, + name_room VARCHAR(20) NOT NULL, + PRIMARY KEY (id_room) +); + +CREATE TABLE activities ( + id_activity CHAR(4) NOT NULL, + name_activity VARCHAR(40) NOT NULL, + id_room VARCHAR(5) NOT NULL, + id_trainer INT(2) NOT NULL, + id_user INT NOT NULL, + PRIMARY KEY (id_activity), + FOREIGN KEY (id_room) REFERENCES activity_room (id_room) ON DELETE CASCADE, + FOREIGN KEY (id_trainer) REFERENCES trainers (id_trainer) ON DELETE CASCADE, + FOREIGN KEY (id_user) REFERENCES users (id_user) ON DELETE CASCADE +); + + + From 11e4b5257e5937a9015e8f5ec837309e7630f564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaura=20Mart=C3=AD?= Date: Tue, 24 Jan 2023 16:26:16 +0100 Subject: [PATCH 2/2] fix select --- queries.sql | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/queries.sql b/queries.sql index d863afe..b078147 100644 --- a/queries.sql +++ b/queries.sql @@ -162,8 +162,10 @@ SELECT UPPER(first_name) FROM employees; -- Select the name, surname and name of the current department of each employee -SELECT first_name, last_name, dept_no FROM employees - INNER JOIN dept_emp ON employees.emp_no = dept_emp.emp_no; +SELECT T.first_name, T.last_name, departments.dept_name FROM + (SELECT first_name, last_name, dept_no FROM employees + INNER JOIN dept_emp ON employees.emp_no = dept_emp.emp_no) AS T + INNER JOIN departments ON T.dept_no = departments.dept_no; -- Select the name, surname and number of times the employee has worked as a manager