MySQL Cláusula WHERE: AND, OR, IN, NOT IN Ejemplo de consulta

⚡ Resumen inteligente

MySQL La cláusula WHERE filtra las filas antes de que lleguen al conjunto de resultados, aplicando criterios precisos a las sentencias SELECT, UPDATE y DELETE. Comprender los operadores AND, OR, IN, NOT IN y de comparación permite a los principiantes recuperar exactamente los registros que requiere una consulta.

  • 🔍 Propósito principal: La cláusula WHERE restringe las filas que afecta una instrucción, por lo que SELECT, UPDATE y DELETE solo afectan a las filas coincidentes.
  • 🔗 Y Operacolina: Solo se devuelven filas cuando todas las condiciones se evalúan como verdaderas, lo que reduce el conjunto de resultados.
  • 🔀 OR Operacolina: Se devuelven filas cuando cualquiera de las condiciones se evalúa como verdadera, ampliando así el conjunto de resultados.
  • 📋 DENTRO y NO DENTRO: La palabra clave IN coincide con una lista de valores en una expresión, mientras que NOT IN excluye esa misma lista.
  • 🇧🇷 Comparación Operatores: Los filtros "igual a" (=), "mayor que" (>), "menor que" (<) y "distinto de" (<>) permiten filtrar columnas numéricas, de texto y de fecha.
  • ⚠️ Manejo de valores nulos: NULL nunca coincide con = o <>, por lo que se requieren IS NULL e IS NOT NULL para comprobar si hay valores faltantes.

¿Qué es la cláusula WHERE? MySQL?

Dónde cláusula in MySQL es una palabra clave utilizada para especificar los criterios exactos de los datos o filas que se verán afectados por la declaración SQL especificada. La cláusula WHERE se puede utilizar con declaraciones SQL como INSERT, UPDATE, SELECT y DELETE para filtrar registros y realizar diversas operaciones con los datos.

Vimos cómo consultar datos de un base de datos de CRISPR Medicine News usando la instrucción SELECT en el tutorial anterior. La instrucción SELECT devolvió todos los resultados de la tabla de la base de datos consultada.

Sin embargo, hay ocasiones en las que queremos restringir los resultados de una consulta a una condición específica. La cláusula WHERE en SQL resulta útil en tales situaciones y funciona de la misma manera en una consulta. Consulta de ELIMINACIÓN o ACTUALIZACIÓN como lo hace en una consulta SELECT.

cláusula WHERE en MySQL

Sintaxis de la cláusula WHERE

La sintaxis básica de la cláusula WHERE es la siguiente.

SELECT * FROM tableName WHERE condition;

AQUÍ

  • “SELECCIONAR * DESDE nombre de tabla” es el estándar Instrucción SELECT
  • "DÓNDE" es la palabra clave que restringe el conjunto de resultados, y "condición" es el filtro aplicado a los resultados. El filtro puede ser un rango, un valor único o una subconsulta.

Supongamos que queremos obtener los detalles de un miembro de la tabla de miembros, dado el número de miembro 1. El siguiente script lo logra.

SELECT * FROM `members` WHERE `membership_number` = 1;

Ejecutar este script en MySQL banco de trabajo Al ejecutar “myflixdb” se obtiene el siguiente resultado.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

Una sola condición rara vez es suficiente. Las secciones siguientes combinan WHERE con operadores logicos.

Cláusula WHERE combinada con – Y LÓGICA Operator

Con el operador lógico AND, se devuelve una fila solo si se cumplen TODOS los criterios especificados.

Supongamos que queremos todas las películas de la categoría 2 que se estrenaron en 2008. El siguiente script lo consigue.

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

Al ejecutar el script anterior en “myflixdb” se obtiene el siguiente resultado.

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

AND reduce el conjunto de resultados. OR lo amplía.

Cláusula WHERE combinada con – OR LÓGICA Operator

Con el operador OR, se devuelve una fila si se cumple ALGUNO de los criterios especificados.

El siguiente script obtiene todas las películas de la categoría 1 o de la categoría 2.

SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

El conjunto de resultados se muestra a continuación.

movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Encadenar muchas condiciones OR dificulta la lectura. La palabra clave IN soluciona ese problema.

Cláusula WHERE combinada con – IN Palabra clave

La cláusula WHERE, cuando se utiliza con la palabra clave IN, solo afecta a las filas cuyos valores coinciden con la lista proporcionada. IN reduce la cantidad de cláusulas OR que tendrías que escribir de otra manera.

Las siguientes MySQL La consulta WHERE IN devuelve filas donde membership_number es 1, 2 o 3.

SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

El conjunto de resultados se muestra a continuación.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

NOT IN realiza el filtro opuesto.

Cláusula WHERE combinada con – NO EN Palabra clave

Con la palabra clave NOT IN, la cláusula WHERE excluye todas las filas cuyo valor coincida con la lista proporcionada.

La siguiente consulta devuelve filas donde membership_number NO es 1, 2 o 3.

SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

El conjunto de resultados se muestra a continuación.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

WHERE también filtra los valores por tamaño e igualdad, utilizando operadores de comparación.

Cláusula WHERE combinada con – COMPARACIÓN Operatoros

Los operadores de comparación menor que (<), igual a (=), mayor que (>) y distinto de (<>) se pueden utilizar con la cláusula WHERE.

= Igual a

El siguiente script obtiene todos los miembros femeninos de la tabla de miembros utilizando el operador de comparación igual.

SELECT * FROM `members` WHERE `gender` = 'Female';

El conjunto de resultados se muestra a continuación.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Más que

El siguiente script obtiene todos los pagos mayores a 2,000 de la tabla de pagos.

SELECT * FROM `payments` WHERE `amount_paid` > 2000;

El conjunto de resultados se muestra a continuación.

payment_id membership_number payment_date description amount_paid external_reference_number
1 1 23-07-2012 Movie rental payment 2500 11
3 3 30-07-2012 Movie rental payment 6000 NULL

<> No es igual a

El siguiente script obtiene todas las películas cuyo ID de categoría no es 1.

SELECT * FROM `movies` WHERE `category_id` <> 1;

El conjunto de resultados se muestra a continuación.

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8

Referencia rápida: Cláusula WHERE Operatoros

Los operadores que se combinan con mayor frecuencia con WHERE se resumen a continuación. Las definiciones completas aparecen en el MySQL Referencia del operador.

Operator Significado Ejemplo de condición
= Igual a `género` = 'Femenino'
<> No igual a `category_id` <> 1
> / Mayor que / menor que `cantidad_pagada` > 2000
Y / o Todos los criterios / cualquier criterio `category_id` = 2 Y `year_released` = 2008
DENTRO / NO DENTRO Coincide con/excluye una lista `número_de_miembro` EN (1,2,3)
ES NULO / NO ES NULO Pruebas para valores faltantes `postal_address` ES NULO

⚠️ Nota: NULL nunca coincide con = o <>. Utilice IS NULL o IS NOT NULL cuando una columna no pueda contener ningún valor.

Acertijo: Encuentra películas que se devolvieron tarde

Supongamos que queremos obtener las películas alquiladas que no fueron devueltas antes del 25/06/2012. Combinando la cláusula WHERE con el operador "menor que" y el operador AND, logramos esto.

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

Ejecutando el script anterior en MySQL El banco de trabajo arroja los siguientes resultados.

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0

Preguntas Frecuentes

WHERE filtra filas individuales antes de agruparping, por lo que no puede hacer referencia a funciones de agregación. HAVING filtra grupos después de que se ejecuta GROUP BY, lo que lo convierte en el lugar adecuado para condiciones como COUNT(*) > 5.

Utilice IS NULL o IS NOT NULL. OperaLos operadores como = y <> devuelven desconocido para NULL, por lo que `postal_address` = NULL no coincide con nada, mientras que `postal_address` IS NULL sí funciona.

Sí, cuando la columna filtrada está indexada, MySQL Lee solo las filas coincidentes en lugar de escanear la tabla.ping Una columna en una función, como por ejemplo YEAR(`date_of_birth`) = 1980, impide el uso de índices.

Sí. Los asistentes de IA convierten el inglés simple en SQL, y MySQL Banco de trabajo puede ejecutar el resultado. RevRevisa todas las condiciones en función de tu esquema, ya que un modelo puede inventar nombres de columna.

Pruébalo primero con SELECT. Una cláusula WHERE incorrecta en una Consulta de ELIMINACIÓN o ACTUALIZACIÓN Puede modificar cada fila. Previsualice las filas coincidentes y, a continuación, reutilice la misma condición para la escritura.

Resumir este post con: