Filtrado de Registros en MySQL mediante Consultas Condicionales

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;
  1. 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;
  1. 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;
  1. 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.

Etiquetas: MySQL SQL consultas-condicionales clausula-where filtrado-de-datos

Publicado el 6-28 21:08