From f8ba195d2d2328a577791c75f9f571f84d34704f Mon Sep 17 00:00:00 2001 From: xavistem <117859727+xavistem@users.noreply.github.com> Date: Wed, 14 May 2025 11:24:31 +0200 Subject: [PATCH] Lab done --- Database Design Diagram.png | Bin 0 -> 41868 bytes create.sql | 53 ++++++++++++++++++++++++++++++++++++ delete.sql | 11 ++++++++ seeding.sql | 37 +++++++++++++++++++++++++ update.sql | 22 +++++++++++++++ 5 files changed, 123 insertions(+) create mode 100644 Database Design Diagram.png create mode 100644 create.sql create mode 100644 delete.sql create mode 100644 seeding.sql create mode 100644 update.sql diff --git a/Database Design Diagram.png b/Database Design Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..4545486fe559d4664ca1f9c754eb612161e78c0a GIT binary patch literal 41868 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 literal 0 HcmV?d00001 diff --git a/create.sql b/create.sql new file mode 100644 index 0000000..eee85a1 --- /dev/null +++ b/create.sql @@ -0,0 +1,53 @@ +CREATE DATABASE IF NOT EXISTS lab_mysql; +USE lab_mysql; + +-- Eliminamos invoices primero porque depende de cars, customers y salespersons +DROP TABLE IF EXISTS invoices; +DROP TABLE IF EXISTS salespersons; +DROP TABLE IF EXISTS customers; +DROP TABLE IF EXISTS cars; + +-- Tabla cars +CREATE TABLE IF NOT EXISTS cars ( + car_id INT AUTO_INCREMENT PRIMARY KEY, -- columna de identificación numérica con incremento automático utilizando la función AUTO INCREMENT + vin VARCHAR(17) NOT NULL UNIQUE, -- NOT NULL indica que no se puede dejar vacío (es obligatorio), UNIQUE indica que debe ser única, VARCHAR indica número máximo de caracteres + manufacturer VARCHAR(50) NOT NULL, + model VARCHAR(50) NOT NULL, + car_year YEAR NOT NULL, -- Usamos YEAR porque almacena el formato correcto + color VARCHAR(20) +); + +-- Tabla customers +CREATE TABLE IF NOT EXISTS customers ( + id INT AUTO_INCREMENT PRIMARY KEY, + cust_id INT NOT NULL UNIQUE, + cust_name VARCHAR(100) NOT NULL, + cust_phone VARCHAR(30), + cust_email VARCHAR(100), + cust_address VARCHAR(200), + cust_city VARCHAR(50), + cust_state VARCHAR(50), + cust_country VARCHAR(50), + cust_zipcode VARCHAR(20) +); + +-- Tabla salespersons +CREATE TABLE IF NOT EXISTS salespersons ( + id INT AUTO_INCREMENT PRIMARY KEY, + staff_id INT NOT NULL UNIQUE, + salesperons_name VARCHAR(100) NOT NULL, + store VARCHAR(100) +); + +-- Tabla invoices +CREATE TABLE IF NOT EXISTS invoices ( + invoice_id INT AUTO_INCREMENT PRIMARY KEY, + invoice_number INT NOT NULL UNIQUE, + invoices_date DATE NOT NULL, + car_id INT NOT NULL, + customer_id INT NOT NULL, + salesperson_id INT NOT NULL, + FOREIGN KEY (car_id) REFERENCES cars(car_id), -- FOREIGN KEY para conectar una tabla con otra y relacionarlas, es decir por ejemplo: la tabla invoices el apartado car debe coincidir con el id de la tabla cars (cada factura debe estar asociada a un coche que exista) + FOREIGN KEY (customer_id) REFERENCES customers(id), + FOREIGN KEY (salesperson_id) REFERENCES salespersons(id) +); \ No newline at end of file diff --git a/delete.sql b/delete.sql new file mode 100644 index 0000000..95a5249 --- /dev/null +++ b/delete.sql @@ -0,0 +1,11 @@ +USE lab_mysql; + +-- Desactivamos el modo seguro +SET SQL_SAFE_UPDATES = 0; + +-- Eliminar el coche duplicado con car_id = 4 +DELETE FROM cars +WHERE car_id = 4; + +-- Volver a activar el modo seguro +SET SQL_SAFE_UPDATES = 1; \ No newline at end of file diff --git a/seeding.sql b/seeding.sql new file mode 100644 index 0000000..203cd05 --- /dev/null +++ b/seeding.sql @@ -0,0 +1,37 @@ +USE lab_mysql; + +-- Insertar datos en cars +INSERT INTO cars (vin, manufacturer, model, car_year, color) -- No hace falta poner al principio la variable 'id' porque pusimos id como AUTO_INCREMENT +VALUES +('3K096I98581DHSNUP', 'Volkswagen', 'Tiguan', 2019, 'Blue'), +('ZM8G7BEUQZ97IH46V', 'Peugeot', 'Rifter', 2019, 'Red'), +('RKXVNNIHLVVZOUB4M', 'Ford', 'Fusion', 2018, 'White'), +('HKNDGS7CU31E9Z7JW', 'Toyota', 'RAV4', 2018, 'Silver'), +('DAM41UDN3CHU2WVF6', 'Volvo', 'V60', 2019, 'Gray'), +('DAM41UDN3CHU2WVF7', 'Volvo', 'V60 Cross Country', 2019, 'Gray'); + +-- Insertar datos en customers +INSERT INTO customers (cust_id, cust_name, cust_phone, cust_email, cust_address, cust_city, cust_state, cust_country, cust_zipcode) -- No hace falta poner al principio la variable 'id' porque pusimos id como AUTO_INCREMENT +VALUES +(10001, 'Pablo Picasso', '+34 636 17 63 82', NULL, 'Paseo de la Chopera, 14', 'Madrid', 'Madrid', 'Spain', '28045'), +(20001, 'Abraham Lincoln', '+1 305 907 7086', NULL, '120 SW 8th St', 'Miami', 'Florida', 'United States', '33130'), +(30001, 'Napoléon Bonaparte', '+33 1 79 75 40 00', NULL, '40 Rue du Colisée', 'Paris', 'Île-de-France', 'France', '75008'); + +-- Insertar datos en salespersons +INSERT INTO salespersons (staff_id, salesperons_name, store) -- No hace falta poner al principio la variable 'id' porque pusimos id como AUTO_INCREMENT +VALUES +(00001, 'Petey Cruiser', 'Madrid'), +(00002, 'Anna Sthesia', 'Barcelona'), +(00003, 'Paul Molive', 'Berlin'), +(00004, 'Gail Forcewind', 'Paris'), +(00005, 'Paige Turner', 'Mimia'), +(00006, 'Bob Frapples', 'Mexico City'), +(00007, 'Walter Melon', 'Amsterdam'), +(00008, 'Shonda Leer', 'São Paulo'); + +-- Insertar datos en invoices +INSERT INTO invoices (invoice_number, invoices_date, car_id, customer_id, salesperson_id) -- No hace falta poner al principio la variable 'id' porque pusimos id como AUTO_INCREMENT +VALUES +(852399038, '2018-08-22', 1, 1, 3), +(731166526, '2018-12-31', 3, 3, 5), +(271135104, '2019-01-22', 2, 2, 7); \ No newline at end of file diff --git a/update.sql b/update.sql new file mode 100644 index 0000000..1a3c15a --- /dev/null +++ b/update.sql @@ -0,0 +1,22 @@ +USE lab_mysql; + +-- Desactivamos el modo seguro para permitir actualizaciones sin clave primaria +SET SQL_SAFE_UPDATES = 0; + +-- Actualizar el email de Pablo Picasso +UPDATE customers +SET cust_email = 'ppicasso@gmail.com' +WHERE cust_name = 'Pablo Picasso'; + +-- Actualizar el email de Abraham Lincoln +UPDATE customers +SET cust_email = 'lincoln@us.gov' +WHERE cust_name = 'Abraham Lincoln'; + +-- Actualizar el email de Napoléon Bonaparte +UPDATE customers +SET cust_email = 'hello@napoleon.me' +WHERE cust_name = 'Napoléon Bonaparte'; + +-- Volver a activar el modo seguro +SET SQL_SAFE_UPDATES = 1; \ No newline at end of file