Unidad 2 Lenguaje de manipulación de datos

Unidad 2: Lenguaje de Manipulación de Datos (DML)
Gestión, Consultas Avanzadas y Optimización en SQL Server
Inserción, Eliminación y Modificación de Registros
El Lenguaje de Manipulación de Datos (DML) permite realizar operaciones CRUD (Crear, Leer, Actualizar y Borrar) sobre las tablas de una base de datos relacional.
Diagrama de Operaciones DML
Explicación Paso a Paso
- Inserción (INSERT): Específica el nombre de la tabla, las columnas receptoras y los valores respetando el orden y tipo de dato.
- Modificación (UPDATE): Actualiza columnas mediante
SET. Es imprescindible usarWHEREpara evitar modificar toda la tabla. - Eliminación (DELETE): Borra registros específicos con la cláusula
WHERE.
5 Ejercicios Prácticos (Tema 2.1)
INSERT INTO Clientes (ClienteID, Nombre, Correo, Telefono)
VALUES (101, 'Carlos Mendoza', 'carlos.m@email.com', '2381234567');
INSERT INTO Productos (ProductoID, Nombre, Precio, Stock)
VALUES
(1, 'Teclado Mecánico', 850.00, 15),
(2, 'Mouse Inalámbrico', 450.00, 30),
(3, 'Monitor 24 Pulgadas', 3200.00, 8);
UPDATE Empleados
SET Salario = 18500.00, Cargo = 'Desarrollador Senior'
WHERE EmpleadoID = 45;
UPDATE Productos
SET Precio = Precio * 1.10
WHERE CategoriaID = 3;
DELETE FROM Clientes
WHERE Estatus = 'Inactivo' AND UltimaCompra < '2023-01-01';
Consultas Básicas y Filtrado (SELECT)
La sentencia SELECT permite recuperar datos almacenados en una o más tablas especificando criterios de filtrado y ordenamiento.
Estructura de Ejecución de una Consulta SQL
5 Ejercicios Prácticos (Tema 2.2)
SELECT ProductoID, Nombre, Stock, Precio
FROM Productos
WHERE Stock < 5;
SELECT Nombre, Apellido, Salario
FROM Empleados
WHERE Salario BETWEEN 12000 AND 25000
ORDER BY Salario DESC;
SELECT Nombre, Correo
FROM Clientes
WHERE Nombre LIKE 'A%' OR Nombre LIKE '%López%';
SELECT DISTINCT ClienteID
FROM Ventas
WHERE YEAR(FechaVenta) = 2025;
SELECT
Nombre AS [Nombre del Producto],
Precio AS [Precio Unitario],
(Precio * 0.16) AS [IVA 16%]
FROM Productos;
Funciones, Conversión, Agrupamiento y Ordenamiento
Permite procesar conjuntos de datos para calcular agregaciones (totales, promedios) utilizando GROUP BY y aplicar filtros a los grupos mediante HAVING.
5 Ejercicios Prácticos (Tema 2.3)
SELECT
DepartamentoID,
COUNT(*) AS TotalEmpleados,
AVG(Salario) AS PromedioSalario,
SUM(Salario) AS NominaTotal
FROM Empleados
GROUP BY DepartamentoID;
SELECT CategoriaID, COUNT(*) AS TotalProductos
FROM Productos
GROUP BY CategoriaID
HAVING COUNT(*) > 10;
SELECT
VentaID,
CONVERT(VARCHAR(10), FechaVenta, 103) AS FechaFormatoDDMMYYYY
FROM Ventas;
SELECT
Nombre,
' $ ' + CAST(Precio AS VARCHAR(10)) AS PrecioTexto
FROM Productos;
SELECT
UPPER(Nombre) AS NombreMayusculas,
LOWER(Correo) AS CorreoMinusculas,
DATEDIFF(YEAR, FechaNacimiento, GETDATE()) AS EdadEstimada
FROM Alumnos;
Combinaciones de Tablas (JOINS)
Los JOINS permiten vincular registros de dos o más tablas basándose en claves primarias y foráneas relacionadas.
Tipos de Combinaciones (Diagramas de Venn)
5 Ejercicios Prácticos (Tema 2.4)
SELECT E.Nombre, E.Salario, D.NombreDepartamento
FROM Empleados E
INNER JOIN Departamentos D ON E.DepartamentoID = D.DepartamentoID;
SELECT C.Nombre, C.Correo, V.VentaID, V.MontoTotal
FROM Clientes C
LEFT JOIN Ventas V ON C.ClienteID = V.ClienteID;
SELECT P.Nombre AS Producto, PR.NombreEmpresa AS Proveedor
FROM Productos P
RIGHT JOIN Proveedores PR ON P.ProveedorID = PR.ProveedorID;
SELECT A.NombreAlumno, C.NombreCurso
FROM Alumnos A
FULL OUTER JOIN Inscripciones C ON A.AlumnoID = C.AlumnoID;
SELECT T.Talla, C.Color
FROM Tallas T
CROSS JOIN Colores C;
Subconsultas (Subqueries)
Una subconsulta es una instrucción SELECT anidada dentro de otra consulta principal (SELECT, INSERT, UPDATE o DELETE).
5 Ejercicios Prácticos (Tema 2.5)
SELECT Nombre, Precio
FROM Productos
WHERE Precio > (SELECT AVG(Precio) FROM Productos);
SELECT Nombre, Salario
FROM Empleados
WHERE DepartamentoID IN (
SELECT DepartamentoID
FROM Departamentos
WHERE Utopicacion = 'Edificio A'
);
SELECT C.Nombre
FROM Clientes C
WHERE EXISTS (
SELECT 1 FROM Ventas V
WHERE V.ClienteID = C.ClienteID AND V.MontoTotal > 5000
);
SELECT Resumen.DepartamentoID, Resumen.PromSueldo
FROM (
SELECT DepartamentoID, AVG(Salario) AS PromSueldo
FROM Empleados
GROUP BY DepartamentoID
) AS Resumen
WHERE Resumen.PromSueldo > 15000;
UPDATE Empleados
SET Salario = Salario * 1.05
WHERE DepartamentoID = (
SELECT DepartamentoID FROM Departamentos WHERE NombreDepartamento = 'Ventas'
);
Operadores Set (De Conjuntos)
Unen los resultados de dos o más consultas en una sola tabla de resultados. Las consultas deben tener el mismo número de columnas y tipos de datos compatibles.
5 Ejercicios Prácticos (Tema 2.6)
SELECT Correo FROM Clientes
UNION
SELECT Correo FROM Empleados;
SELECT Ciutopicad FROM Proveedores
UNION ALL
SELECT Ciutopicad FROM Clientes;
SELECT ClienteID FROM Clientes
INTERSECT
SELECT ClienteID FROM Ventas;
SELECT ProductoID FROM Productos
EXCEPT
SELECT DISTINCT ProductoID FROM DetalleVentas;
SELECT Nombre, Correo, 'Cliente' AS Tipo FROM Clientes
UNION
SELECT Nombre, Correo, 'Empleado' AS Tipo FROM Empleados
ORDER BY Nombre ASC;
Vistas (Views)
Una vista es una tabla virtual basada en el resultado de una consulta SQL almacenada en la base de datos.
5 Ejercicios Prácticos (Tema 2.7)
CREATE VIEW vw_ResumenVentas AS
SELECT V.VentaID, C.Nombre AS Cliente, V.FechaVenta, V.MontoTotal
FROM Ventas V
INNER JOIN Clientes C ON V.ClienteID = C.ClienteID;
SELECT * FROM vw_ResumenVentas
WHERE MontoTotal > 10000;
CREATE VIEW vw_DirectorioEmpleados AS
SELECT EmpleadoID, Nombre, Apellido, Cargo, Correo
FROM Empleados;
ALTER VIEW vw_DirectorioEmpleados AS
SELECT EmpleadoID, Nombre, Apellido, Cargo, Correo, Telefono
FROM Empleados;
DROP VIEW vw_ResumenVentas;
Examen Integrador de la Unidad 2
Responde las siguientes 5 preguntas de opción múltiple para evaluar tus conocimientos acumulados sobre el Lenguaje de Manipulación de Datos (DML).
https://ofortiz.my.canva.site/manipulaciondedatos