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

Tabla de contenido:

Anonim

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

La cláusula WHERE en MySQL es una palabra clave que se usa 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 sentencias SQL como INSERT, UPDATE, SELECT y DELETE para filtrar registros y realizar varias operaciones en los datos.

Vimos cómo consultar datos de una 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, son momentos en los que queremos restringir los resultados de la consulta a una condición específica. La cláusula WHERE en SQL es útil en tales situaciones.

Cláusula WHERE en MySQL

Sintaxis de la cláusula WHERE

La sintaxis básica de la cláusula WHERE cuando se usa en una instrucción SELECT WHERE de MySQL es la siguiente.

SELECT * FROM tableName WHERE condition;

AQUÍ

  • "SELECT * FROM tableName" es la instrucción SELECT estándar
  • "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á a los resultados. El filtro puede ser un rango, un valor único o una subconsulta.

Veamos ahora un ejemplo práctico .

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

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

La ejecución del script anterior en MySQL workbench 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 This email address is being protected from spambots. You need JavaScript enabled to view it.

Cláusula WHERE combinada con - Y operador lógico

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 lanzaron 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;

La ejecución del script anterior en MySQL workbench 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 LOGICAL Operador

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 guión incluye 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;

La ejecución del script anterior en MySQL workbench 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 Keyword

La cláusula WHERE en MySQL, cuando se usa junto con la palabra clave IN, solo afecta a las filas cuyos valores coinciden con la lista de valores proporcionada en la palabra clave IN. La instrucción MySQL IN ayuda a reducir la cantidad de cláusulas OR que puede tener que usar. La siguiente consulta de MySQL WHERE IN da filas donde número_de_membresía es 1, 2 o 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

La ejecución del script anterior en MySQL workbench 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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 This email address is being protected from spambots. You need JavaScript enabled to view it.

La cláusula WHERE combinada con - NOT IN Keyword

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 da filas donde número_de_membresía NO es 1, 2 o 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

La ejecución del script anterior en MySQL workbench 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 - Operadores COMPARISON

Los operadores de comparación menor que (), igual a (=), no igual a () 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 a.
SELECT * FROM `members` WHERE `gender` = 'Female';

La ejecución del script anterior en MySQL workbench 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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Mayor que

La siguiente secuencia de comandos obtiene todos los pagos superiores a 2000 de la tabla de pagos. SELECCIONE * DE `pagos` DONDE` monto_pagado`> 2000; La ejecución del script anterior en MySQL workbench 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 cuya identificación de categoría no es 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
La ejecución del script anterior en MySQL workbench 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 SQL WHERE se utiliza para restringir el número de filas afectadas por una consulta SELECT, UPDATE o DELETE.
  • La condición WHERE en SQL se puede usar junto con operadores lógicos como AND y OR, operadores de comparación como, = etc.
  • Cuando se utiliza con el operador lógico AND, 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.

Rompecabezas 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 SQL WHERE 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;
La ejecución del script anterior en MySQL workbench da 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