Las expresiones condicionales en SQL permiten realizar operaciones basadas en condiciones específicas. Estas expresiones son útiles para tomar decisiones dentro de una consulta y pueden simplificar la lógica de tus consultas SQL. En este tema, cubriremos las siguientes expresiones condicionales:
- CASE
- IF
- COALESCE
- NULLIF
- CASE
La expresión CASE es una estructura de control que permite evaluar una lista de condiciones y devolver un valor específico cuando se cumple la primera condición verdadera.
Sintaxis
Ejemplo
Supongamos que tenemos una tabla employees con las siguientes columnas: employee_id, name, salary, y department_id. Queremos clasificar a los empleados según su salario.
SELECT
employee_id,
name,
salary,
CASE
WHEN salary > 100000 THEN 'High'
WHEN salary BETWEEN 50000 AND 100000 THEN 'Medium'
ELSE 'Low'
END AS salary_category
FROM employees;Explicación
CASEevalúa cada condición en orden.- Si
salaryes mayor que 100000, devuelve 'High'. - Si
salaryestá entre 50000 y 100000, devuelve 'Medium'. - Si ninguna de las condiciones anteriores se cumple, devuelve 'Low'.
- IF
La función IF es una expresión condicional que devuelve un valor si una condición es verdadera y otro valor si es falsa. Es más común en MySQL.
Sintaxis
Ejemplo
Queremos etiquetar a los empleados como 'Senior' si su salario es mayor a 80000, de lo contrario, 'Junior'.
SELECT
employee_id,
name,
salary,
IF(salary > 80000, 'Senior', 'Junior') AS position
FROM employees;Explicación
IFevalúa la condiciónsalary > 80000.- Si la condición es verdadera, devuelve 'Senior'.
- Si la condición es falsa, devuelve 'Junior'.
- COALESCE
La función COALESCE devuelve el primer valor no nulo de una lista de expresiones.
Sintaxis
Ejemplo
Queremos mostrar el nombre del departamento de los empleados, pero si el nombre del departamento es nulo, mostrar 'Unknown'.
SELECT
employee_id,
name,
salary,
COALESCE(department_name, 'Unknown') AS department_name
FROM employees;Explicación
COALESCEevalúa cada expresión en orden.- Devuelve el primer valor no nulo encontrado.
- Si
department_namees nulo, devuelve 'Unknown'.
- NULLIF
La función NULLIF compara dos expresiones y devuelve NULL si son iguales; de lo contrario, devuelve la primera expresión.
Sintaxis
Ejemplo
Queremos evitar mostrar el salario como 0, en su lugar, mostrar NULL.
Explicación
NULLIFcomparasalarycon 0.- Si
salaryes 0, devuelveNULL. - Si
salaryno es 0, devuelve el valor desalary.
Ejercicios Prácticos
Ejercicio 1
Dada la tabla students con las columnas student_id, name, y grade, clasifica a los estudiantes en 'Pass' o 'Fail' según su calificación. Una calificación mayor o igual a 50 es 'Pass', de lo contrario, 'Fail'.
SELECT
student_id,
name,
grade,
CASE
WHEN grade >= 50 THEN 'Pass'
ELSE 'Fail'
END AS result
FROM students;Ejercicio 2
Usa la función COALESCE para mostrar el nombre del supervisor de los empleados. Si el nombre del supervisor es nulo, muestra 'No Supervisor'.
SELECT
employee_id,
name,
COALESCE(supervisor_name, 'No Supervisor') AS supervisor_name
FROM employees;Ejercicio 3
Utiliza la función NULLIF para evitar mostrar el valor 0 en la columna bonus. Si el valor es 0, debe mostrarse como NULL.
Conclusión
Las expresiones condicionales en SQL son herramientas poderosas que permiten realizar operaciones basadas en condiciones específicas. En este módulo, hemos cubierto las expresiones CASE, IF, COALESCE y NULLIF, proporcionando ejemplos prácticos y ejercicios para reforzar los conceptos aprendidos. Con estas herramientas, puedes escribir consultas más dinámicas y adaptativas, mejorando la flexibilidad y funcionalidad de tus bases de datos SQL.
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
