🧠 SQL AVANZADO: Agregación, Subconsultas, DCL, DTL, JOINS y más
🔢 FUNCIONES DE AGREGACIÓN y AGRUPACIÓN
| Función | Descripción | Ejemplo SQL |
|---|
AVG(col) | Media de un atributo numérico | SELECT AVG(Precio) AS Precio_Medio FROM Artic; |
COUNT(*) | Cuenta ocurrencias (incluye nulos) | SELECT COUNT(*) FROM Artic; |
SUM(col) | Suma | SELECT SUM(Sueldo) FROM Empleados; |
MAX(col) | Máximo | SELECT MAX(Edad) FROM Usuarios; |
MIN(col) | Mínimo | SELECT MIN(Fecha) FROM Eventos; |
STDEV(col) | Desviación estándar estadística | SELECT STDEV(Sueldo) FROM Empleados; |
👉 Se agrupan con GROUP BY y se filtran con HAVING:
SELECT num, nombre, COUNT(num), AVG(dinero)
FROM Proveedores
WHERE num < 5
GROUP BY num, nombre
HAVING COUNT(num) > 1
ORDER BY nombre ASC;
🔍 FUNCIONES DE VENTANA
| Función | Descripción |
|---|
RANK() OVER | Asigna rangos, puede haber empates |
DENSE_RANK() | Rangos sin huecos |
NTILE(n) | Divide filas en n grupos ordenados |
ROW_NUMBER() | Número secuencial sin repeticiones |
📤 COMANDOS DCL: Permisos
| Comando | Función |
|---|
GRANT | Concede permisos |
REVOKE | Revoca permisos concedidos |
GRANT INSERT, UPDATE ON tabla1 TO pepe;
REVOKE INSERT ON tabla1 FROM pepe;
✅ Puedes añadir WITH GRANT OPTION para permitir delegar permisos.
🔄 COMANDOS DTL (Transacciones)
| Comando | Descripción |
|---|
ROLLBACK | Deshace cambios |
COMMIT | Confirma cambios |
SAVEPOINT | Crea un punto de guardado parcial |
🗑️ DELETE, INSERT y ACTUALIZACIONES
🔁 DELETE
DELETE FROM tabla WHERE columna = valor;
🧱 INSERTAR TUPLAS
INSERT INTO R (col1, col2) VALUES (val1, val2);
⚠️ No se puede insertar más de una tupla con INSERT INTO SELECT * FROM ...
🔐 INTEGRIDAD REFERENCIAL
| Acción SQL | Efecto |
|---|
ON DELETE/UPDATE CASCADE | Propaga acción |
SET NULL | Establece valores nulos |
SET DEFAULT | Establece valores por defecto |
🔎 SUBCONSULTAS
- Se permiten en
WHERE y HAVING.
- Requiere que las columnas coincidan entre SELECT y subconsulta.
- ⚠️ Si usas operadores como
=, la subconsulta debe devolver una sola fila.
Ejemplo:
SELECT * FROM clientes
WHERE ciudad = (SELECT ciudad FROM oficinas WHERE id = 3);
🔗 JOINS (Combinación de Tablas)
| Tipo de JOIN | Descripción |
|---|
INNER JOIN | Devuelve coincidencias entre ambas tablas |
LEFT JOIN | Todo de la izquierda + coincidencias de la derecha |
RIGHT JOIN | Todo de la derecha + coincidencias de la izquierda |
FULL OUTER JOIN | Todo de ambas tablas |
CROSS JOIN | Producto cartesiano |
SELF JOIN | Une una tabla consigo misma |
SELECT A.Nombre, B.Nombre
FROM empleados A
INNER JOIN empleados B ON A.JefeID = B.ID;
🔀 UNION, INTERSECT, EXCEPT
| Operación | Función |
|---|
UNION | Une dos conjuntos sin duplicados |
UNION ALL | Une incluyendo duplicados |
INTERSECT | Devuelve filas comunes entre ambos SELECT |
EXCEPT | Devuelve las filas del 1er SELECT no presentes en el 2º |
🔧 Requisitos:
- Las columnas deben tener mismo número y tipos compatibles.
- Opcionalmente puedes ordenar el resultado con
ORDER BY.
SELECT col1 FROM tabla1
UNION
SELECT col1 FROM tabla2;
✅ BUENAS PRÁCTICAS
- Usa
ALIAS (AS) para mejorar la legibilidad.
- Usa
HAVING solo después de GROUP BY.
- Usa funciones de ventana para análisis avanzado.
- Asegúrate que subconsultas devuelvan el número correcto de filas.
Una respuesta a “Píldora TAI CXXIII SQL Avanzado: Comandos DCL, DTL y Funciones Esenciales”
[…] Píldora TAI CXXIII SQL Avanzado: Comandos DCL, DTL y Funciones Esenciales – Anacrolibrum […]