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.

¿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.
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 | |
|---|---|---|---|---|---|---|---|
| 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 | |
|---|---|---|---|---|---|---|---|
| 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 | |
|---|---|---|---|---|---|---|---|
| 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 | |
|---|---|---|---|---|---|---|---|
| 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 |

