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
CASE
evalúa cada condición en orden.- Si
salary
es mayor que 100000, devuelve 'High'. - Si
salary
está 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
IF
evalú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
COALESCE
evalúa cada expresión en orden.- Devuelve el primer valor no nulo encontrado.
- Si
department_name
es 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
NULLIF
comparasalary
con 0.- Si
salary
es 0, devuelveNULL
. - Si
salary
no 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