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