MySQL Cláusula WHERE: AND, OR, IN, NOT IN Ejemplo de 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 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 la consulta a una condición específica. La cláusula WHERE de SQL resulta útil en tales situaciones.

cláusula WHERE en MySQL
cláusula WHERE en MySQL

Sintaxis de la cláusula WHERE

La sintaxis básica de la cláusula WHERE cuando se utiliza en un MySQL La declaración SELECT 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 nuestro conjunto de resultados de consulta de selección y "condición" es el filtro que se aplicará sobre los resultados. El filtro podría ser un rango, un valor único o una subconsulta.

Veamos ahora un ejemplo practico.

Supongamos que queremos obtener los datos personales de un miembro de la tabla de miembros dado el número de membresía 1, usaríamos el siguiente script para lograrlo.

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

Ejecutando el script anterior en MySQL banco de trabajo en “myflixdb” produciría los siguientes resultados.

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

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

La condición WHERE en MySQL cuando se usa junto con el operador lógico AND, solo se ejecuta si se cumplen TODOS los criterios de filtro especificados.

Veamos ahora un ejemplo práctico: supongamos que queremos obtener una lista de todas las películas de la categoría 2 que se estrenaron en 2008, usaríamos el guión que se muestra a continuación para lograrlo.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Ejecutando el script anterior en MySQL El banco de trabajo contra “myflixdb” produce los siguientes resultados.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

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

La cláusula WHERE, cuando se usa junto con el operador OR, solo se ejecuta si se cumple alguno o todos los criterios de filtro especificados.
El siguiente script obtiene todas las películas de la categoría 1 o la categoría 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Ejecutando el script anterior en MySQL El banco de trabajo contra “myflixdb” produce los siguientes resultados.
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

Cláusula WHERE combinada con – IN Palabra clave

El DONDE en MySQL La cláusula, cuando se usa junto con la palabra clave IN, solo afecta las filas cuyos valores coinciden con la lista de valores proporcionada en la palabra clave IN. El MySQL La declaración IN ayuda a reducir la cantidad de cláusulas OR que quizás deba utilizar.
Las siguientes MySQL La consulta WHERE IN proporciona filas donde número_membresía es 1, 2 o 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Ejecutando el script anterior en MySQL El banco de trabajo contra “myflixdb” produce los siguientes resultados.

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

Cláusula WHERE combinada con – NO EN Palabra clave

La cláusula WHERE, cuando se usa junto con la palabra clave NOT IN, NO afecta las filas cuyos valores coinciden con la lista de valores proporcionada en la palabra clave NOT IN.
La siguiente consulta proporciona filas donde membership_number NO es 1, 2 o 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Ejecutando el script anterior en MySQL El banco de trabajo contra “myflixdb” produce los siguientes resultados.

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

Cláusula WHERE combinada con – COMPARACIÓN Operatoros

Los operadores de comparación menor que (), igual a (=), distinto de () se pueden usar 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';

Ejecutando el script anterior en MySQL El banco de trabajo contra “myflixdb” produce los siguientes resultados.

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.
SELECCIONE * DE `pagos` DONDE `monto_pagado` > 2000;
Ejecutando el script anterior en MySQL El banco de trabajo contra “myflixdb” produce los siguientes resultados.
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;
Ejecutando el script anterior en MySQL El banco de trabajo contra “myflixdb” produce los siguientes resultados.
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

Resumen

  • La cláusula WHERE de SQL se utiliza para restringir el número de filas afectadas por SELECT, UPDATE o BORRAR consulta.
  • La condición WHERE en SQL se puede utilizar junto con operadores lógicos como AND y OR, operadores de comparación como, =, etc.
  • Cuando se utiliza con el AND operador logico, se deben cumplir todos los criterios.
  • Cuando se utiliza con el operador lógico OR, se debe cumplir cualquiera de los criterios.
  • La palabra clave IN se utiliza para seleccionar filas que coinciden con una lista de valores.

Brain Teaser

Supongamos que queremos obtener una lista de películas alquiladas que no han sido devueltas a tiempo el 25/06/2012. Podemos usar la cláusula de instrucción WHERE de SQL junto con el operador de comparación menor que y el operador lógico AND para lograrlo.
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