sql >> Base de Datos >  >> RDS >> Mysql

DONDE Condición en MySQL con 16 ejemplos de consultas diferentes

En este artículo, vamos a hablar sobre el WHERE cláusula y cómo usarla en MySQL. Además de SELECT , el alcance de WHERE incluye la cláusula UPDATE y DELETE declaraciones. El WHERE cláusula es indispensable para un trabajo de calidad con bases de datos MySQL. Es por eso que el artículo actual se ocupará de esta cláusula y explorará sus características distintivas en profundidad.

Cuando tratamos con MySQL, necesitamos cláusulas condicionales para las declaraciones SELECT en la mayoría absoluta de los casos. Dichas cláusulas determinan los criterios de selección, por lo que solo obtenemos los datos que necesitamos.

MySQL WHERE La cláusula es el medio más práctico para filtrar los resultados. Es flexible, lo que permite a los usuarios especificar varias condiciones para la selección de datos y combinar varias condiciones en una declaración. Para que su rutina de trabajo diaria sea aún más agradable, siempre es mejor recurrir a la optimización de consultas y perfiles de MySQL.

Contenido

  • MySQL WHERE sintaxis
  • Usando WHERE en MySQL
  • Ejemplo de condición única de consulta WHERE
  • Múltiples condiciones WHERE
  • DÓNDE Y operador
  • DÓNDE O operador
  • Uso de AND con condiciones OR
  • DÓNDE ENTRE operador
  • Operador WHERE LIKE
  • DONDE NO ME GUSTA ejemplo
  • Operador WHERE IN
  • DONDE NO EN ejemplo
  • Operador DONDE ESTÁ NULO
  • Ejemplo de DONDE NO ES NULO
  • DONDE NO EXISTE
  • DONDE EXISTE
  • Uso de la cláusula WHERE de MySQL con operadores de comparación
  • Resumen

Sintaxis de MySQL WHERE

Para empezar, echemos un vistazo más de cerca al uso de WHERE en el SELECT declaración. La sintaxis básica es la siguiente:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

SELECT … FROM es la declaración estándar que define a qué columnas y qué tabla nos dirigimos. El WHERE palabra clave identifica los criterios de selección de datos. Puede haber un solo valor, el rango entre valores, la subconsulta y más de una condición.

Automatiza tu trabajo con criterios de consulta. Véalos y edítelos visualmente en las pestañas separadas de nuestro visual Herramienta de consulta MySQL donde está dibujando su consulta. No necesita escribir los nombres de las columnas ni recordar reglas complejas. Simplemente seleccione los datos requeridos de las listas y disfrute de los resultados.

Usando WHERE en MySQL

MySQL funciona de la siguiente manera al ejecutar SELECT declaración que contiene el WHERE cláusula:

  1. Evaluar el FROM cláusula para identificar la tabla de destino.
  2. Proceder al WHERE cláusula para evaluar los criterios para la selección de datos.
  3. Marque el SELECT instrucción para definir las columnas a recuperar.

Nota :El SELECT declaración a menudo incluye el ORDER BY cláusula que pone los resultados en orden ascendente o descendente. Si es así, MySQL lo evaluará al final.

El principio de trabajo de MySQL WHERE es similar al IF condición en lenguajes de programación. Compara los valores que proporcionamos con los de la tabla MySQL de destino. Cuando estos valores coinciden, el RDBMS obtiene esos registros para los usuarios.

Cuando la condición para WHERE cláusula es un valor de texto, ponemos ese texto entre comillas simples. Sin embargo, no se necesitan comillas para los valores numéricos.

SELECT first_name, last_name, city 
FROM Readers
WHERE City = ‘Seattle’;

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Mejora tus habilidades de creación de scripts con el formateador MySQL avanzado que permite embellecer tu código para obtenerlo exactamente como te gusta.

Ahora, revisemos el uso de WHERE cláusula. Se trata de un montón de casos específicos. La mejor manera de explorarlos es consultar un MySQL práctico WHERE ejemplo para cada escenario.

WHERE ejemplo de consulta de condición única

El escenario más simple de usar esta cláusula es MySQL WHERE teniendo un único criterio para la selección de datos. Supongamos que alguna empresa desea recuperar la lista de sus empleados que trabajan en el departamento de Atención al Cliente como gerentes de soporte:

SELECT 
    last_name, 
    first_name, 
    job_title
FROM
    employees
WHERE
    jobtitle = 'Support';

La consulta recuperará datos de los empleados y filtre los registros de acuerdo con el valor en el job_title columna. Debe devolver la lista de todos los apellidos y nombres de todos los empleados que trabajan como gerentes de soporte. El resultado es el siguiente:

apellido nombre título_trabajo
Zorro María Soporte
Negro Juan Soporte
Johnson Steve Soporte
Hudson Diana Soporte
Williams Katie Soporte
Verde Jake Soporte

Nota :Codifique menos y logre más con el verificador de sintaxis de MySQL. dbForge Studio para MySQL es un IDE rico en funciones diseñado para facilitar el desarrollo, mantenimiento y administración de bases de datos MySQL y MariaDB.

Múltiples condiciones WHERE

El ejemplo anterior demuestra que MySQL WHERE cláusula trae datos que coinciden con la condición. En este caso, filtró a todos aquellos empleados que tenían el cargo especificado. Sin embargo, a menudo necesitamos establecer varios criterios para recuperar los datos. Es factible:necesitamos aplicar MySQL WHERE con los operadores específicos:AND operador y el OR operador.

DONDE Y operador

Hagamos nuestro ejemplo anterior un poco más complicado. Queremos la lista de empleados que trabajan en el departamento de Soporte, contratados el año pasado.

Para lograr eso, estableceremos dos condiciones y las uniremos con AND operador lógico:

SELECT 
    last_name, 
    first_name, 
    job_title,
    hire_year
FROM
    employees
WHERE
    jobtitle = 'Support' AND 
    hire_year = 2021;

La salida:

apellido nombre título_trabajo año_contratación
Zorro María Soporte 2021
Negro Juan Soporte 2021
Johnson Steve Soporte 2021

La escritura de código en sí ocupa la mayor parte del tiempo total que dedica al desarrollo y la administración de la base de datos. Duplique su velocidad de codificación con el editor de código MySQL Server refinado y optimizado que viene con dbForge Studio para MySQL.

operador DONDE O

Usando el OR El operador lógico es otro método para trabajar con varias condiciones en MySQL WHERE cláusula. Si enviamos esta consulta, devolverá datos que coincidan con los criterios que establecimos.

La empresa quiere comprobar los clientes regulares que vienen de dos ciudades. Para eso, especificaremos esas ciudades y usaremos el OR operador.

SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
apellido nombre ciudad
Anderson María Seattle
Negro Juan Seattle
Thompson Steve Bellevue
Smith Diana Bellevue
Williams Katie Seattle
Pedros Jake Seattle

Uso de AND con condiciones OR

MySQL permite combinar MySQL WHERE AND OR – ambos operadores lógicos pueden estar presentes en una sola sentencia. En este caso, MySQL verificará tres condiciones a la vez.

Por ejemplo, la biblioteca quiere obtener información sobre sus lectores que residen en Bellevue, que se convirtieron en lectores habituales de la biblioteca en 2021 o que han leído más de 20 libros.

En este caso, MySQL WHERE cadena se vuelve más compleja. Para encajar y organizar AND &OR condiciones, usamos los paréntesis para determinar cómo MySQL debe evaluarlas.

Eche un vistazo al siguiente ejemplo:

SELECT *
FROM readers
WHERE (city = 'Bellevue' AND reg_year = '2020')
OR (books_read > 20);

La salida:

apellido nombre ciudad reg_year libros_leer
Anderson María Seattle 2021 25
Jones Chris Bellevue 2020 12
Thompson Lora Seattle 2020 35
Farrell Brian Bellevue 2021 48
Smith Jeff Bellevue 2020 50
Pedros Ana Bellevue 2020 10
Patterson Juan Bellevue 2020 11

Esta salida muestra algunos resultados que coinciden con la condición de la ciudad de residencia + año de registro. También incluye resultados que cumplen la segunda condición de haber leído más de 20 libros.

DONDE ENTRE operador

El operador BETWEEN permite establecer límites más amplios. Suponga que la biblioteca quiere obtener la lista de sus lectores que se unieron en 2019, 2020 y 2021. En lugar de enviar varias consultas o usar AND operador, podemos establecer el rango para el WHERE condición usando BETWEEN operador.

Para recuperar la lista de lectores que se unieron entre 2019 y 2022, enviamos la siguiente consulta:

SELECT 
    last_Name, 
    first_Name, 
    reg_year
FROM
    readers
WHERE
    reg_year BETWEEN 2019 AND 2021
ORDER BY reg_year;

La salida:

apellido nombre reg_year
Anderson María 2019
Jones Chris 2019
Thompson Lora 2019
Farrell Brian 2019
Smith Jeff 2020
Pedros Ana 2020
Patterson Juan 2020
Williams Marcar 2021
Hiks Andrés 2021
Otorgar Valentina 2021

operador WHERE LIKE

Aplicar el operador LIKE le permite usar la cláusula WHERE para seleccionar ciertos registros que incluyen un patrón específico. Para definir ese patrón, usamos el signo de porcentaje (%) para reemplazar un carácter o una cadena de varios caracteres de cualquier longitud.

Los patrones más comunes para MySQL SELECT WHERE LIKE son los siguientes:

WHERE valor LIKE 'abc% ‘ – encuentra y devuelve todos los valores que comienzan con “abc”

WHERE valor LIKE '%abc' – encuentra y devuelve todos los valores que terminan en “abc”

WHERE valor LIKE '%abc%' – encuentra y devuelve valores que tienen “abc” en cualquier lugar entre el inicio y el final

Echemos un vistazo a WHERE LIKE ejemplo. La empresa quiere obtener la lista de sus clientes de EE. UU. y Reino Unido. La consulta es la siguiente:

SELECT ContactName, Country, City
FROM Customers
WHERE Country LIKE 'U%'
ORDER BY ContactName;

La salida es:

Nombre del contacto País Ciudad
Helen Bennett Reino Unido Vacas
Simon Crowther Reino Unido Londres
Hari Kumar Reino Unido Londres
Howard Snyder EE.UU. Eugenio
Yoshi Latimer EE.UU. Elgin
John Steel EE.UU. Walla Walla
Jaime Torres EE.UU. San Francisco
Fran Wilson EE.UU. Portland

DONDE NO ME GUSTA ejemplo

Hay otro caso en el que necesita excluir algunos datos de los resultados. Podemos usar MySQL WHERE NOT LIKE operador. Encuentra y devuelve los datos que no tienen caracteres específicos.

La empresa quiere una lista de sus clientes de todos los países excepto el Reino Unido y los Estados Unidos. La sintaxis de WHERE NOT LIKE en MySQL tendrá el siguiente aspecto:

SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT LIKE 'U%'
ORDER BY Country;

La salida:

Nombre del contacto País Ciudad
Roland Mendel Austria Graz
Georg Pipps Austria Salzburgo
Catherine Dewey Bélgica Bruselas
Pascale Cartrain Bélgica Charleroi
Elizabeth Lincoln Canadá Tsawassen
Yoshi Tannamuri Canadá Vancouver
Jean Fresnière Canadá Montreal
Jytte Petersen Dinamarca København
Palle Ibsen Dinamarca Århus
Pirkko Koskitalo Finlandia Oulu
Matti Karttunen Finlandia Helsinki
Annette Roulet Francia Toulouse
María Bertrand Francia París
Maria Anders Alemania Berlín
Hanna Mooss Alemania Mannheim

operador DONDE EN

Usando el IN y NOT IN Las palabras clave son otra opción para filtrar las filas y recuperar solo una parte de los datos que coincidan con nuestros estrictos criterios. El propósito principal es reducir el número de OR cláusulas en un SELECT declaración.

MySQL WHERE IN apela a las filas que contienen los valores que especificamos para WHERE condición. Por ejemplo, queremos recuperar la lista de clientes que residen en varios países europeos. El WHERE IN la sintaxis es la siguiente en MySQL:

SELECT ContactName, Country, City
FROM Customers
WHERE Country IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

Tenga en cuenta que adjuntamos nuestros valores que especifican la condición de búsqueda entre paréntesis. En el caso de trabajar con valores de texto, debemos ponerlos todos entre comillas simples. Sin embargo, si nuestros valores son numéricos, los enumeraremos sin comillas simples, por ejemplo, (25, 35, 45).

La salida de MySQL anterior WHERE IN cláusula en el SELECT declaración es:

Nombre del contacto País Ciudad
Catherine Dewey Bélgica Bruselas
Pascale Cartrain Bélgica Charleroi
Frédérique Citeaux Francia Estrasburgo
Laurence Lebihans Francia Marsella
Janine Labrune Francia Nantes
Martine Rancé Francia Lille
Alexander Feuer Alemania Leipzig
Henriette Pfalzheim Alemania Köln
Horst Kloss Alemania Cunewalde
Karin Josephs Alemania Munster
Rita Müller Alemania Stuttgart
Thomas Hardy Reino Unido Londres
Victoria Ashworth Reino Unido Londres
Elizabeth Brown Reino Unido Mánchester
Ann Devon Reino Unido Londres

DONDE NO EN ejemplo

El caso contrario es MySQL WHERE NOT IN cláusula. Se utiliza para asegurarse de que su consulta ignorará las filas que contienen los valores especificados para la condición. En el ejemplo anterior, solicitamos clientes de los 4 países europeos definidos. MySQL WHERE NOT IN SELECT la consulta para la misma solicitud devolverá todos los clientes que residen en otros países, excepto los 4 definidos anteriormente.

SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

La salida:

Nombre del contacto País Ciudad
Patricio Simpson Argentina Buenos Aires
Sergio Gutiérrez Argentina Buenos Aires
Brian Citeaux Canadá Montreal
Laura Smith Canadá Toronto
Jane Green Canadá Toronto
Martine Rancé Canadá Vancouver
Alexander Feuer Canadá Århus
Paolo Accorti Italia Roma
Giovanni Rovelli Italia Torino
Ana Moroni Italia Pavía

Nota :Recomendamos usar [NOT] EXISTS sobre [NOT] IN ya que EXISTS el operador lógico funciona más rápido que IN , al comparar conjuntos de datos mediante una subconsulta. Además, NOT EXISTS evitará resultados inesperados cuando los datos de origen contengan NULL valores.

DÓNDE ES NULL operador

Para verificar si un valor es NULL o no, use el IS NULL operador. La siguiente declaración usa el WHERE cláusula con IS NULL operador para obtener las filas sin un valor en books_read columna:

SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NULL;

La salida se verá así:

apellido nombre reg_year libros_leer
Janet Overacker 2020 NULO
Lidia Swenson 2017 NULO
Alberto Crepeau 2018 NULO
Anastasia Johnson 2021 NULO
Voluntad Smith 2017 NULO

Ejemplo de DONDE NO ES NULO

A diferencia del comando anterior, WHERE IS NOT NULL , por el contrario, muestra solo aquellas filas que contienen algún tipo de valor en la columna en cuestión. En el siguiente ejemplo, vamos a seleccionar solo aquellas filas donde books_read la columna no está vacía:

SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NOT NULL;

En la salida, verá solo aquellas filas que contienen un valor en books_read columna:

apellido nombre reg_year libros_leer
Cory Baster 2021 8
Maddison Winston 2022 3
Isabella Garsia 2014 45
Jeremy Koh 2022 1
Aaron Peterson 2021 15

WHERE EXISTS

The EXISTS operator checks if the subquery returns any value at all. Typically, this operator is used to indicate that at least one row in a table satisfies a certain condition.

In the example below,

SELECT last_name, first_name
FROM customers
WHERE EXISTS 
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)

WHERE NOT EXISTS

However, the NOT EXISTS operator is there for us in case we want to make sure whether there are rows in the table that do not satisfy a certain condition. For example, let’s find all products from the Products table for which there were no orders in the Orders table:

SELECT last_name, first_name
FROM customers
WHERE NOT EXISTS 
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)

There is a separate article in our blog for those willing to learn more about the difference between EXISTS and NOT EXISTS in SQL.

Using MySQL WHERE clause with comparison operators

As we know, the WHERE condition value can be any number, text, string, or subquery. Besides specifying the condition strictly, we can set a wider meaning for it by using the comparison operators. One example of a similar function is using the BETWEEN operador. Now, let us review other options to set the condition range.

Operator Description Example
= Equal to the value. It is applicable for almost any data type. SELECT * FROM VisitorsWHERE City =’London’;
<> or != Not equal to. It excludes the rows matching the value from the results. SELECT * FROM CustomersWHERE Country=’Germany’ AND City !=’Berlin’;
< Less than. Mostly applies to numbers and date/time. SELECT * FROM CustomersWHERE CustomerID <7;
> Greater than. Works in the same way, for numeric values and date/time. SELECT * FROM CustomersWHERE CustomerID> 10;
<= Less than or equal to. The results set includes the rows with the same values or less than the condition value. SELECT * FROM CustomersWHERE CustomerID <=5;
>= Greater than or equal to. The result set includes rows having the same values exceeding the condition values. SELECT * FROM CustomersWHERE CustomerID>=55;

In our example, we want to retrieve the list of customers with a customer ID lower than 90 who reside in the USA. The query is the following:

SELECT CustomerID, ContactName, City, Country 
FROM Customers
WHERE CustomerID < 90 AND Country ='USA';

The output is:

CustomerID ContactName City Country
65 Paula Wilson Albuquerque USA
55 Rene Phillips Anchorage USA
78 Liu Wong Butte USA
36 Yoshi Latimer Elgin USA
32 Howard Snyder Eugene USA
82 Helvetius Nagy Kirkland USA
48 Fran Wilson Portland USA
77 Liz Nixon Portland USA
45 Jaime Torres San Francisco USA
89 Karl Jablonski Seattle USA
55 Rene Phillips Anchorage USA

Resumen

As you see, MySQL WHERE is among the most helpful clauses for all MySQL users. The variety of different logical operators lets you focus on the specific portion of data only, filter it correctly, and receive the results you need. Besides, modern professional tools for MySQL databases allow you to perform all tasks faster and easier. They take the burden of manual routines off your shoulders and make the performance much more stable and reliable. To sum up, working with a WHERE statement is not too complicated. However, it requires being familiar with the corresponding commands. The command-line tools are more oriented toward experienced tech-savvy users. On the contrary, dbForge Studio for MySQL can boast an intuitive graphical interface. The intelligent code completion feature will be of use while working with the WHERE clause, navigating the code, obtaining quick object information, and instantly performing syntax checks. Moreover, dbForge Query Builder will be of use to easily build WHERE clauses visually.

Useful Links

  • Joins in MySQL
  • MySQL update query