En esta sección, vamos a implementar el proyecto final del curso de SQL. Este proyecto integrará todos los conceptos y habilidades que has aprendido a lo largo del curso. Asegúrate de seguir cada paso cuidadosamente y de revisar tu trabajo para garantizar que todo funcione correctamente.
Objetivos del Proyecto
- Crear una base de datos y tablas: Diseñar y crear una base de datos con las tablas necesarias.
- Insertar datos: Poblar las tablas con datos relevantes.
- Realizar consultas: Ejecutar consultas para extraer y manipular datos.
- Optimizar consultas: Aplicar técnicas de optimización para mejorar el rendimiento.
- Implementar transacciones: Asegurar la integridad de los datos mediante el uso de transacciones.
- Crear procedimientos almacenados y triggers: Automatizar tareas comunes y mantener la integridad de los datos.
Paso 1: Crear la Base de Datos y Tablas
1.1 Crear la Base de Datos
1.2 Crear las Tablas
Vamos a crear tres tablas: Clientes, Pedidos y Productos.
CREATE TABLE Clientes (
ClienteID INT PRIMARY KEY AUTO_INCREMENT,
Nombre VARCHAR(100) NOT NULL,
Email VARCHAR(100) NOT NULL,
FechaRegistro DATE NOT NULL
);
CREATE TABLE Productos (
ProductoID INT PRIMARY KEY AUTO_INCREMENT,
Nombre VARCHAR(100) NOT NULL,
Precio DECIMAL(10, 2) NOT NULL,
Stock INT NOT NULL
);
CREATE TABLE Pedidos (
PedidoID INT PRIMARY KEY AUTO_INCREMENT,
ClienteID INT,
ProductoID INT,
Cantidad INT NOT NULL,
FechaPedido DATE NOT NULL,
FOREIGN KEY (ClienteID) REFERENCES Clientes(ClienteID),
FOREIGN KEY (ProductoID) REFERENCES Productos(ProductoID)
);Paso 2: Insertar Datos
2.1 Insertar Datos en la Tabla Clientes
INSERT INTO Clientes (Nombre, Email, FechaRegistro) VALUES
('Juan Perez', '[email protected]', '2023-01-15'),
('Maria Lopez', '[email protected]', '2023-02-20'),
('Carlos Sanchez', '[email protected]', '2023-03-10');2.2 Insertar Datos en la Tabla Productos
INSERT INTO Productos (Nombre, Precio, Stock) VALUES
('Laptop', 1200.00, 10),
('Mouse', 25.00, 100),
('Teclado', 45.00, 50);2.3 Insertar Datos en la Tabla Pedidos
INSERT INTO Pedidos (ClienteID, ProductoID, Cantidad, FechaPedido) VALUES (1, 1, 1, '2023-04-01'), (2, 2, 2, '2023-04-02'), (3, 3, 1, '2023-04-03');
Paso 3: Realizar Consultas
3.1 Consultar Todos los Clientes
3.2 Consultar Pedidos con Detalles de Clientes y Productos
SELECT p.PedidoID, c.Nombre AS Cliente, pr.Nombre AS Producto, p.Cantidad, p.FechaPedido FROM Pedidos p JOIN Clientes c ON p.ClienteID = c.ClienteID JOIN Productos pr ON p.ProductoID = pr.ProductoID;
3.3 Consultar Productos con Bajo Stock
Paso 4: Optimizar Consultas
4.1 Crear Índices
CREATE INDEX idx_cliente_email ON Clientes(Email); CREATE INDEX idx_producto_nombre ON Productos(Nombre);
4.2 Analizar el Rendimiento de Consultas
Utiliza la instrucción EXPLAIN para analizar el rendimiento de las consultas.
Paso 5: Implementar Transacciones
5.1 Ejemplo de Transacción
START TRANSACTION; UPDATE Productos SET Stock = Stock - 1 WHERE ProductoID = 1; INSERT INTO Pedidos (ClienteID, ProductoID, Cantidad, FechaPedido) VALUES (1, 1, 1, '2023-04-04'); COMMIT;
Paso 6: Crear Procedimientos Almacenados y Triggers
6.1 Procedimiento Almacenado para Crear un Pedido
DELIMITER //
CREATE PROCEDURE CrearPedido(
IN p_ClienteID INT,
IN p_ProductoID INT,
IN p_Cantidad INT
)
BEGIN
DECLARE p_Stock INT;
SELECT Stock INTO p_Stock FROM Productos WHERE ProductoID = p_ProductoID;
IF p_Stock >= p_Cantidad THEN
START TRANSACTION;
UPDATE Productos SET Stock = Stock - p_Cantidad WHERE ProductoID = p_ProductoID;
INSERT INTO Pedidos (ClienteID, ProductoID, Cantidad, FechaPedido) VALUES (p_ClienteID, p_ProductoID, p_Cantidad, CURDATE());
COMMIT;
ELSE
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Stock insuficiente';
END IF;
END //
DELIMITER ;6.2 Trigger para Actualizar Stock
DELIMITER //
CREATE TRIGGER ActualizarStock AFTER INSERT ON Pedidos
FOR EACH ROW
BEGIN
UPDATE Productos SET Stock = Stock - NEW.Cantidad WHERE ProductoID = NEW.ProductoID;
END //
DELIMITER ;Conclusión
En esta sección, hemos implementado un proyecto completo utilizando SQL. Hemos creado una base de datos y tablas, insertado datos, realizado consultas, optimizado el rendimiento, implementado transacciones y creado procedimientos almacenados y triggers. Este proyecto te ha permitido aplicar todos los conceptos aprendidos a lo largo del curso y te ha preparado para enfrentar desafíos del mundo real en el uso de SQL. ¡Felicidades por llegar hasta aquí!
Curso de SQL
Módulo 1: Introducción a SQL
Módulo 2: Consultas básicas de SQL
- Instrucción SELECT
- Filtrando datos con WHERE
- Ordenando datos con ORDER BY
- Limitando resultados con LIMIT
Módulo 3: Trabajando con múltiples tablas
Módulo 4: Filtrado avanzado de datos
- Usando LIKE para coincidencia de patrones
- Operadores IN y BETWEEN
- Valores NULL y IS NULL
- Agregando datos con GROUP BY
- Cláusula HAVING
Módulo 5: Manipulación de datos
Módulo 6: Funciones avanzadas de SQL
Módulo 7: Subconsultas y consultas anidadas
- Introducción a subconsultas
- Subconsultas correlacionadas
- EXISTS y NOT EXISTS
- Usando subconsultas en cláusulas SELECT, FROM y WHERE
Módulo 8: Índices y optimización de rendimiento
- Entendiendo los índices
- Creación y gestión de índices
- Técnicas de optimización de consultas
- Análisis del rendimiento de consultas
Módulo 9: Transacciones y concurrencia
- Introducción a las transacciones
- Propiedades ACID
- Instrucciones de control de transacciones
- Manejo de concurrencia
