Sintaxis Básica de Filtrado
La consulta condicional permite depurar los registros de una tabla orgiinal para extraer únicamente aquellos que cumplen con criterios específicos. La estructura fundamental es:
SELECT
columnas, expresiones_o_constantes
FROM
nombre_tabla
WHERE
condicion_a_evaluar;
- Filtrado mediante Operadores de Comparación
Se utilizan operadores rleacionales básicos como >, <, =, !=, <>, >= y <=.
Ejemplo 1: Obtener los datos de los miembros del personal cuyo ingreso mensual supere los 5000.
SELECT
*
FROM
staff_members
WHERE
monthly_income > 5000;
Ejemplo 2: Listar el apellido y el código de departamento de aquellos cuyo código de departamento sea distinto de 5.
SELECT
surname,
dept_code
FROM
staff_members
WHERE
dept_code <> 5;
- Filtrado mediante Operadores Lógicos
Estos operadores (AND, OR, NOT, o sus equivalentes &&, ||, !) se emplean para combinar múltiples expresiones booleanas.
Ejemplo 1: Recuperar el apellido, ingreso mensual y tasa de bonificación de los empleados con ingresos entre 3000 y 8000.
SELECT
surname,
monthly_income,
bonus_rate
FROM
staff_members
WHERE
monthly_income >= 3000 AND monthly_income <= 8000;
Ejemplo 2: Mostrar la información completa de los trabajadores cuyo código de departamento esté fuera del rango 10 a 20, o que ganen más de 7500.
SELECT
*
FROM
staff_members
WHERE
NOT(dept_code >= 10 AND dept_code <= 20) OR monthly_income > 7500;
- Búsquedas Avanzadas y Patrones
MySQL ofrece herramientas especializadas para evaluar rangos, conjuntos de valores, coincidencias de texto y valores nulos: LIKE, BETWEEN AND, IN, IS NULL y el operador de igualdad segura <=>.
LIKE
Se utiliza para buscar patrones en cadenas de texto o valores numéricos. Requiere el uso de comodines:
%: Representa cero o más caracteres._: Representa exactamente un carácter.
Nota: No evalúa valores nulos.
Ejemplo 1: Ancontrar empleados cuyo apellido contenga la letra 'o'.
SELECT
*
FROM
staff_members
WHERE
surname LIKE '%o%';
Ejemplo 2: Identificar apellidos donde la segunda letra sea 'r' y la cuarta sea 's', junto con su ingreso.
SELECT
surname,
monthly_income
FROM
staff_members
WHERE
surname LIKE '_r_s%';
Ejemplo 3: Buscar apellidos donde el tercer carácter sea literalmente un guion bajo (_).
SELECT
surname
FROM
staff_members
WHERE
surname LIKE '__$_%' ESCAPE '$';
BETWEEN AND
Optimiza la legibilidad para consultas de rangos. Incluye ambos límites y exige que el valor inferior se escriba primero.
Ejemplo: Extraer el personal con identificadores entre 200 y 250.
SELECT
*
FROM
staff_members
WHERE
staff_id BETWEEN 200 AND 250;
Advertencia: Escribir BETWEEN 250 AND 200 no devolverá resultados, ya que el rango queda vacío.
IN
Permite verificar si un valor coincide con cualquiera de los elementos de una lista. Todos los elementos de la lista deben ser del mismo tipo de dato y no admite comodines.
Ejemplo: Obtener el apellido y código de rol de los empleados cuyo rol sea 'DEV_ENG', 'SYS_ADMIN' o 'DB_ARCH'.
SELECT
surname,
role_code
FROM
staff_members
WHERE
role_code IN ('DEV_ENG', 'SYS_ADMIN', 'DB_ARCH');
IS NULL e IS NOT NULL
Los operadores de igualdad estándar (= o <>) no funcionan para evaluar NULL. Deben usarse IS NULL o IS NOT NULL.
Ejemplo 1: Listar empleados sin tasa de bonificación.
SELECT
surname,
bonus_rate
FROM
staff_members
WHERE
bonus_rate IS NULL;
Ejemplo 2: Listar empleados que sí tienen una tasa de bonificación asignada.
SELECT
surname,
bonus_rate
FROM
staff_members
WHERE
bonus_rate IS NOT NULL;
Uso incorrecto: WHERE monthly_income IS 5000; generará un error o no funcionará como se espera.
Operador de Igualdad Segura (<=>)
Este operador evalúa igualdad de manera segura, permitiendo comparar tanto valores normales como NULL. Sin embargo, su legibilidad es menor en comparación con IS NULL.
Ejemplo 1: Empleados sin bonificación usando el operador seguro.
SELECT
surname,
bonus_rate
FROM
staff_members
WHERE
bonus_rate <=> NULL;
Ejemplo 2: Empleados con un ingreso exacto de 5000.
SELECT
surname,
monthly_income
FROM
staff_members
WHERE
monthly_income <=> 5000;
Comparación: IS NULL vs <=>
IS NULL: Exclusivo para valores nulos, alta legibilidad. Es la opción recomendada.<=>: Versátil para nulos y valores estándar, pero reduce la claridad del código.