Mis ejemplos propuestos BD Tiendas
script base de datos Tienda
CREATE TABLE productos (
producto_id INT PRIMARY KEY,
nombre VARCHAR(50),
descripcion VARCHAR(255),
precio DECIMAL(10,2)
);
CREATE TABLE ventas (
venta_id INT PRIMARY KEY,
producto_id INT,
cantidad INT,
fecha_venta DATE,
FOREIGN KEY (producto_id) REFERENCES productos (producto_id)
);
CREATE TABLE inventario (
producto_id INT PRIMARY KEY,
cantidad INT,
FOREIGN KEY (producto_id) REFERENCES productos (producto_id)
);
INSERT INTO productos (producto_id, nombre, descripcion, precio)
VALUES
(1, 'Producto 1', 'Descripción del producto 1', 10.50),
(2, 'Producto 2', 'Descripción del producto 2', 20.25),
(3, 'Producto 3', 'Descripción del producto 3', 15.75),
(4, 'Producto 4', 'Descripción del producto 4', 5.00),
(5, 'Producto 5', 'Descripción del producto 5', 12.35);
INSERT INTO inventario (producto_id, cantidad)
VALUES
(1, 10),
(2, 15),
(3, 7),
(4, 20),
(5, 12);
INSERT INTO ventas (venta_id, producto_id, cantidad, fecha_venta)
VALUES
(2, 2, 1, '2023-04-18'),
(3, 3, 5, '2023-04-19'),
(4, 5, 2, '2023-04-19'),
(5, 4, 4, '2023-04-19');
Trigger:
Enunciado: Cree un trigger que se active cuando se inserte una nueva fila en la tabla "ventas", y actualice la columna "cantidad" en la tabla "inventario" restando la cantidad vendida.
Código fuente:
create trigger Tr_Actualizar_Inventario
on ventas
After insert
as
begin
update inventario
set inventario.cantidad = inventario.cantidad - inserted.cantidad
from inventario
inner join inserted on inventario.producto_id = inserted.producto_id;
end
Vistas:
Enunciado: Cree una vista que muestre el nombre y la cantidad de ventas de cada producto en el último mes.
Código fuente:
CREATE VIEW vista_ventas_ultimo_mes AS
SELECT p.nombre, SUM(v.cantidad) AS cantidad_ventas
FROM productos p
INNER JOIN ventas v ON p.producto_id = v.producto_id
WHERE v.fecha_venta >= DATEADD(month, -1, GETDATE())
GROUP BY p.nombre;
Procedimiento almacenado:
Enunciado: Cree un procedimiento almacenado que acepte el ID de un producto y una cantidad, y actualice la tabla "inventario" agregando esa cantidad al inventario existente.
Código fuente:
CREATE PROCEDURE sp_agrega_inventario
@producto_id INT,
@cantidad INT
AS
BEGIN
UPDATE inventario
SET cantidad = cantidad + @cantidad
WHERE producto_id = @producto_id;
END
Funciones:
Enunciado: Cree una función que acepte un precio como parámetro y devuelva el precio con un descuento del 10%.
Código fuente:
CREATE FUNCTION fn_aplica_descuento
(@precio DECIMAL(10,2))
RETURNS DECIMAL(10,2)
AS
BEGIN
DECLARE @precio_con_descuento DECIMAL(10,2);
SET @precio_con_descuento = @precio * 0.9;
RETURN @precio_con_descuento;
END
Seguridad en la base de datos:
Enunciado: Cree un usuario llamado "Miguel" con permisos de lectura en la tabla "ventas".
Código fuente:
CREATE LOGIN Miguel WITH PASSWORD = 'password';
CREATE USER miguel FOR LOGIN Miguel;
GRANT SELECT ON ventas TO Miguel;
Comentarios
Publicar un comentario