BASE DE DATOS GUIA
BASE DE DATOS GUIA
--REPASO 1 Y 2
--Error
-- Insertar detalles del pedido
/*INSERT INTO DetallePedido (PedidoID, ProductoID, Cantidad, PrecioUnitario)
VALUES
(@PedidoID, (SELECT ProductoID FROM Productos WHERE NombreProducto = 'Laptop'), 1,
1200.00),
(@PedidoID, (SELECT ProductoID FROM Productos WHERE NombreProducto = 'Mouse'), 2,
25.00);+*/
--5.9 Obtener la cantidad total de productos vendidos cuyos precios unitarios están
entre $20 y $100
SELECT SUM(DP.Cantidad) AS TotalProductosVendidos
FROM DetallePedido DP
WHERE DP.PrecioUnitario BETWEEN 20 AND 100;
--5.10 Obtener los productos con stock entre 5 y 50 unidades, junto con el valor
total de ese stock
SELECT ProductoID, NombreProducto, Stock, (Stock * Precio) AS ValorTotalStock
FROM Productos
WHERE Stock BETWEEN 5 AND 50;
--5.11 Obtener todos los pedidos realizados por clientes cuyo nombre comienza con
"Ana"
SELECT P.PedidoID, C.Nombre, P.FechaPedido, P.Total
FROM Pedidos P
JOIN SistemaVentas C ON P.ClienteID = C.ClienteID
WHERE C.Nombre LIKE 'Ana%';
--5.13 Muestra la venta máxima, mínima y el promedio de ventas de todos los pedidos
SELECT
MAX(Total) AS VentaMaxima,
MIN(Total) AS VentaMinima,
AVG(Total) AS VentaPromedio
FROM Pedidos;
--5.15 Muestra el total de unidades vendidas por cada producto, ordenados de mayor a
menor
SELECT P.NombreProducto, SUM(DP.Cantidad) AS TotalUnidadesVendidas
FROM DetallePedido DP
JOIN Productos P ON DP.ProductoID = P.ProductoID
GROUP BY P.NombreProducto
ORDER BY TotalUnidadesVendidas DESC;
Objetivo:
Procedimiento:
GO --Instrucción que separa el bloque y le indica al servidor que lo ejecute como una unidad.
USE Banco;
GO
);
GO
FechaCreacion DATE NOT NULL DEFAULT GETDATE(), -- Fecha de creación con valor
predeterminado
);
GO
3. Insertar registros
-- Insertar en Clientes
VALUES
GO
-- Insertar en Cuentas
GO
CREATE PROCEDURE InsertarCliente -- Nombre del SP, a continuación parámetros que el usuario
debe proporcionar para llamar al SP
AS -- Inicio del SP
INSERT INTO Clientes (Nombre, Apellido, Email, Telefono) -- Instrucción para insertar datos en
la tabla Clientes
PRINT 'Cliente insertado correctamente.'; -- Mensaje para confirmar que el cliente fue
insertado
END;
GO
6. Ejecución SP InsertarCliente
EXEC InsertarCliente
@Nombre = 'Sofía',
@Apellido = 'Martínez',
@Email = '[email protected]',
@Telefono = '555-7788';
/* Observaciones:
Manejo de parámetros: Los valores se controlan de manera clara y organizada a través de los
parámetros.*/
Resultado:
6. Verificar que el cliente se ha añadido correctamente a través del SP InsertarCliente
8. Ejercicio: Añadir un cliente más con los siguientes parámetros: Cristina, Granda,
[email protected] y 111-1234
AS --Inicio del SP
-- Actualizar los datos de la cuenta (antes verificar los datos de la tabla Cuentas)
UPDATE Cuentas
SET
END;
GO
10. Supongamos que quieres actualizar la cuenta con ID 2 para cambiar su saldo a 2500.00 y
su número de cuenta a '6789012345'.
EXEC ActualizarCuenta
@CuentaID = 2,
@NuevoSaldo = 2500.00,
@NuevoNumeroCuenta = '6789012345';
Resultado:
Practica 4: Triggers
Objetivos:
1. Verificar como el uso de lo triggers ayudan a llevar un control o tracking de los eventos
realizados en las tablas: validaciones, auditorías (inserciones, actualizaciones,
eliminaciones de registros).
2. Verificar la función de los triggers antes y después de ejecutar eventos.
ClienteID INT,
Fecha DATE,
Operacion NVARCHAR(50)
);
AS
BEGIN
SELECT
FROM INSERTED; -- 'INSERTED' es una tabla virtual que contiene los datos recién
insertados
END;
GO
Paso 3: Prueba del Trigger: Inserta un nuevo cliente y verifica la tabla de auditoría
EXEC InsertarCliente
@Nombre = 'Carlos',
@Apellido = 'Sánchez',
@Email = '[email protected]',
@Telefono = '555-5678';
Paso 4: Verificar el ingreso del nuevo cliente en la tabla Clientes y la auditoria del ingreso de
clientes en la tabla AuditoriaClientes
CuentaID INT,
SaldoAntiguo DECIMAL(10,2),
SaldoNuevo DECIMAL(10,2),
Fecha DATE
);
ON Cuentas
AFTER UPDATE
AS
BEGIN
END;
GO
Paso 3: Actualizar saldo y el número de la cuenta a traves del SP_ActualizarCuenta del cliente
con CuentaID=3 a $2500.00 y al NumeroCuenta 6789012345 respectivamente
--SP_ ActualizarCuenta
EXEC ActualizarCuenta
@CuentaID = 3,
@NuevoSaldo = 2500.00,
@NuevoNumeroCuenta = '6789012345';
/*UPDATE Cuentas