0% encontró este documento útil (0 votos)
41 vistas4 páginas

Práctica 5

El documento describe la creación de una base de datos para un supermercado, incluyendo la definición de tablas con integridad referencial y la inserción de datos para ciudades, supermercados, productos y ventas. También se incluyen consultas para actualizar ventas, eliminar productos, calcular el importe total de ventas por supermercado, identificar el supermercado con mayores ventas, y ajustar precios de productos. Finalmente, se presenta un listado de productos con su importe total de ventas.

Cargado por

aimar.ruano387
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
41 vistas4 páginas

Práctica 5

El documento describe la creación de una base de datos para un supermercado, incluyendo la definición de tablas con integridad referencial y la inserción de datos para ciudades, supermercados, productos y ventas. También se incluyen consultas para actualizar ventas, eliminar productos, calcular el importe total de ventas por supermercado, identificar el supermercado con mayores ventas, y ajustar precios de productos. Finalmente, se presenta un listado de productos con su importe total de ventas.

Cargado por

aimar.ruano387
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

a) Creación de la base de datos y tablas con integridad referencial

-- Crear Base de Datos


CREATE DATABASE ventas_supermercado;
USE ventas_supermercado;

-- Tabla CIUDAD
CREATE TABLE ciudad (
cod_ciudad CHAR(2) PRIMARY KEY,
nom_ciudad VARCHAR(50)
);

-- Tabla SUPERMERCADO
CREATE TABLE supermercado (
cod_sup CHAR(2) PRIMARY KEY,
direccion VARCHAR(100),
tfno CHAR(9),
cod_ciudad CHAR(2),
FOREIGN KEY (cod_ciudad) REFERENCES ciudad(cod_ciudad)
);

-- Tabla PRODUCTO
CREATE TABLE producto (
cod_prod CHAR(2) PRIMARY KEY,
denominacion VARCHAR(100),
precio DECIMAL(5,2)
);

-- Tabla VENTAS
CREATE TABLE ventas (
cod_sup CHAR(2),
cod_prod CHAR(2),
cant INT,
PRIMARY KEY (cod_sup, cod_prod),
FOREIGN KEY (cod_sup) REFERENCES supermercado(cod_sup),
FOREIGN KEY (cod_prod) REFERENCES producto(cod_prod)
);
b) Inserción de datos

-- CIUDAD
INSERT INTO ciudad VALUES
('C1', 'Bilbao'),
('C2', 'Vitoria'),
('C3', 'San Sebastián');

-- SUPERMERCADO
INSERT INTO supermercado VALUES
('S1', 'Gran Vía 1', '111111111', 'C1'),
('S2', 'Alda. Recalde 7', '222222222', 'C1'),
('S3', 'Ondarreta 7', '333333333', 'C2'),
('S4', 'Dato 3', '444444444', 'C3'),
('S5', 'Avda. de Vitoria 8', '555555555', 'C3');

-- PRODUCTO
INSERT INTO producto VALUES
('P1', 'Nocilla', 3.00),
('P2', 'Tomate Orlando', 1.50),
('P3', 'Cereales Nestlé', 3.50),
('P4', 'Cerales Crunch', 3.00),
('P5', 'Pan Bimbo', 2.00),
('P6', 'Pan Panrico', 1.90),
('P7', 'Bonito Zallo', 2.75);

-- VENTAS
INSERT INTO ventas VALUES
('S1', 'P1', 10),
('S2', 'P1', 15),
('S3', 'P1', 8),
('S1', 'P2', 20),
('S2', 'P2', 25),
('S3', 'P2', 15),
('S1', 'P3', 25),
('S2', 'P3', 18),
('S3', 'P3', 20);
c) Aumentar las ventas del producto P1 en 5 unidades para el
supermercado S1

UPDATE ventas
SET cant = cant + 5
WHERE cod_sup = 'S1' AND cod_prod = 'P1';

d) Eliminar el producto P3

-- Primero eliminar las ventas del producto P3 (por restricciones de


integridad)
DELETE FROM ventas
WHERE cod_prod = 'P3';

-- Ahora se puede eliminar el producto


DELETE FROM producto
WHERE cod_prod = 'P3';

e) Importe total de ventas por supermercado

SELECT v.cod_sup, SUM([Link] * [Link]) AS total_ventas


FROM ventas v
JOIN producto p ON v.cod_prod = p.cod_prod
GROUP BY v.cod_sup;

f) Supermercado con mayor importe de ventas

SELECT v.cod_sup, SUM([Link] * [Link]) AS total_ventas


FROM ventas v
JOIN producto p ON v.cod_prod = p.cod_prod
GROUP BY v.cod_sup
ORDER BY total_ventas DESC
LIMIT 1;
g) Producto más vendido (en unidades)

SELECT v.cod_prod, [Link], SUM([Link]) AS total_unidades


FROM ventas v
JOIN producto p ON v.cod_prod = p.cod_prod
GROUP BY v.cod_prod, [Link]
ORDER BY total_unidades DESC
LIMIT 1;

h) Aumentar precio en 5% para productos que hayan tenido alguna venta

UPDATE producto
SET precio = precio * 1.05
WHERE cod_prod IN (SELECT DISTINCT cod_prod FROM ventas);

i) Listado de productos y su importe total de ventas

SELECT p.cod_prod, [Link],


COALESCE(SUM([Link] * [Link]), 0) AS importe_total
FROM producto p
LEFT JOIN ventas v ON p.cod_prod = v.cod_prod
GROUP BY p.cod_prod, [Link];

También podría gustarte