Skip to content

Lab done #355

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Database Design Diagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
53 changes: 53 additions & 0 deletions create.sql
Original file line number Diff line number Diff line change
@@ -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)
);
11 changes: 11 additions & 0 deletions delete.sql
Original file line number Diff line number Diff line change
@@ -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;
37 changes: 37 additions & 0 deletions seeding.sql
Original file line number Diff line number Diff line change
@@ -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);
22 changes: 22 additions & 0 deletions update.sql
Original file line number Diff line number Diff line change
@@ -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 = '[email protected]'
WHERE cust_name = 'Pablo Picasso';

-- Actualizar el email de Abraham Lincoln
UPDATE customers
SET cust_email = '[email protected]'
WHERE cust_name = 'Abraham Lincoln';

-- Actualizar el email de Napoléon Bonaparte
UPDATE customers
SET cust_email = '[email protected]'
WHERE cust_name = 'Napoléon Bonaparte';

-- Volver a activar el modo seguro
SET SQL_SAFE_UPDATES = 1;