sql >> Base de Datos >  >> RDS >> Database

=) Operador para principiantes

En SQL, el operador mayor o igual que (>= ) compara dos expresiones y devuelve TRUE si el operando izquierdo tiene un valor mayor o igual que el operando derecho; de lo contrario, devuelve FALSE .

Ejemplo

Aquí hay un ejemplo para demostrarlo.

SELECT * FROM city
WHERE Population >= 9269265
ORDER BY Population ASC;

Resultado:

+------+-----------------+---------------+--------------+--------------+
| ID   | Name            | CountryCode   | District     | Population   |
|------+-----------------+---------------+--------------+--------------|
| 2822 | Karachi         | PAK           | Sindh        | 9269265      |
| 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
| 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
| 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
| 2331 | Seoul           | KOR           | Seoul        | 9981619      |
| 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
+------+-----------------+---------------+--------------+--------------+

Esta consulta devuelve todas las ciudades que tienen una población mayor o igual a 9269265.

Inclusivo

El operador mayor que o igual a incluye el valor especificado en su evaluación.

Por ejemplo, la consulta anterior incluía Karachi, que, según esta base de datos, tiene una población de exactamente 9269265.

Si quisiéramos excluir ciudades con esa población, tendríamos que aumentar el valor especificado:

SELECT * FROM city
WHERE Population >= 9269266
ORDER BY Population ASC;

Resultado:

+------+-----------------+---------------+--------------+--------------+
| ID   | Name            | CountryCode   | District     | Population   |
|------+-----------------+---------------+--------------+--------------|
| 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
| 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
| 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
| 2331 | Seoul           | KOR           | Seoul        | 9981619      |
| 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
+------+-----------------+---------------+--------------+--------------+

O simplemente podríamos usar el mayor que (> ) operador en su lugar:

SELECT * FROM city
WHERE Population > 9269265
ORDER BY Population ASC;

Resultado:

+------+-----------------+---------------+--------------+--------------+
| ID   | Name            | CountryCode   | District     | Population   |
|------+-----------------+---------------+--------------+--------------|
| 939  | Jakarta         | IDN           | Jakarta Raya | 9604900      |
| 1890 | Shanghai        | CHN           | Shanghai     | 9696300      |
| 206  | São Paulo       | BRA           | São Paulo    | 9968485      |
| 2331 | Seoul           | KOR           | Seoul        | 9981619      |
| 1024 | Mumbai (Bombay) | IND           | Maharashtra  | 10500000     |
+------+-----------------+---------------+--------------+--------------+

Fechas

Aquí hay un ejemplo para demostrar el uso del operador mayor o igual que para comparar valores de fecha.

SELECT PetName, DOB 
FROM Pets
WHERE DOB >= '2020-03-15';

Resultado:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fluffy    | 2020-11-20 |
| Wag       | 2020-03-15 |
| Tweet     | 2020-11-28 |
| Fluffy    | 2020-09-17 |
+-----------+------------+

Cuerdas

También puede utilizar el operador mayor o igual que para comparar valores de cadena. Al comparar con un valor de cadena, use comillas alrededor de la cadena.

SELECT * FROM city 
WHERE Name >= 'Zukovski'
ORDER BY Name;

Resultado:

+------+----------+---------------+------------+--------------+
| ID   | Name     | CountryCode   | District   | Population   |
|------+----------+---------------+------------+--------------|
| 3756 | Zukovski | RUS           | Moskova    | 96500        |
| 2669 | Zumpango | MEX           | México     | 99781        |
| 2025 | Zunyi    | CHN           | Guizhou    | 261862       |
| 3245 | Zürich   | CHE           | Zürich     | 336800       |
| 3145 | Zwickau  | DEU           | Saksi      | 104146       |
| 28   | Zwolle   | NLD           | Overijssel | 105819       |
| 3446 | Zytomyr  | UKR           | Zytomyr    | 297000       |
+------+----------+---------------+------------+--------------+

Múltiples Condiciones

Si tiene múltiples condiciones, puede usar múltiples >= operadores.

Así:

SELECT * FROM city 
WHERE Name >= 'Zukovski' AND Population >= 200000;

Resultado:

+------+---------+---------------+------------+--------------+
| ID   | Name    | CountryCode   | District   | Population   |
|------+---------+---------------+------------+--------------|
| 2025 | Zunyi   | CHN           | Guizhou    | 261862       |
| 3245 | Zürich  | CHE           | Zürich     | 336800       |
| 3446 | Zytomyr | UKR           | Zytomyr    | 297000       |
+------+---------+---------------+------------+--------------+

Precedencia

También puede utilizar una combinación de operadores al filtrar los resultados.

Tenga en cuenta que SQL tiene un orden de precedencia que asigna a diferentes tipos de operadores. Por ejemplo, evalúa cualquier operador condicional antes que cualquier operador lógico, como AND y OR . También evalúa cualquier AND operadores antes de cualquier OR operadores.

Los paréntesis tienen una precedencia más alta que todos los operadores, por lo que puede usar paréntesis para especificar el orden en el que se debe evaluar cada condición.

Considere el siguiente ejemplo:

SELECT * FROM city 
WHERE Name >= 'Zukovski' 
    AND Population >= 100000
    OR District = 'Overijssel';

Resultado:

+------+----------+---------------+------------+--------------+
| ID   | Name     | CountryCode   | District   | Population   |
|------+----------+---------------+------------+--------------|
| 15   | Enschede | NLD           | Overijssel | 149544       |
| 28   | Zwolle   | NLD           | Overijssel | 105819       |
| 2025 | Zunyi    | CHN           | Guizhou    | 261862       |
| 3145 | Zwickau  | DEU           | Saksi      | 104146       |
| 3245 | Zürich   | CHE           | Zürich     | 336800       |
| 3446 | Zytomyr  | UKR           | Zytomyr    | 297000       |
+------+----------+---------------+------------+--------------+

En esta consulta, no proporcioné ningún paréntesis, por lo que AND el operador fue evaluado antes del OR operador.

Por lo tanto, obtuvimos filas que satisfacían bien Name >= 'Zukovski' AND Population >= 100000 o District = 'Overijssel' . Podemos decir con solo mirar esto que se devolverán todas las ciudades del distrito de Overijssel, además de las ciudades que cumplan con el primer criterio.

Esto es como hacer lo siguiente:

SELECT * FROM city 
WHERE (Name >= 'Zukovski' 
    AND Population >= 100000)
    OR District = 'Overijssel';

Eso nos daría el mismo resultado que la consulta anterior sin paréntesis.

Pero mira lo que sucede cuando movemos los paréntesis al OR condición.

SELECT * FROM city 
WHERE Name >= 'Zukovski' 
    AND (Population >= 100000
    OR District = 'Overijssel');

Resultado:

+------+---------+---------------+------------+--------------+
| ID   | Name    | CountryCode   | District   | Population   |
|------+---------+---------------+------------+--------------|
| 28   | Zwolle  | NLD           | Overijssel | 105819       |
| 2025 | Zunyi   | CHN           | Guizhou    | 261862       |
| 3145 | Zwickau | DEU           | Saksi      | 104146       |
| 3245 | Zürich  | CHE           | Zürich     | 336800       |
| 3446 | Zytomyr | UKR           | Zytomyr    | 297000       |
+------+---------+---------------+------------+--------------+

Esta vez solo obtuvimos aquellas ciudades que satisficieron tanto Population >= 100000 OR District = 'Overijssel' y Name >= 'Overijssel' .

Esto dio como resultado que solo se devolviera una ciudad de Overijssel, a diferencia de las dos de la consulta anterior.

Negar la Condición

Puedes usar el NOT operador para negar la condición proporcionada por >= operador. He aquí un ejemplo:

SELECT PetName, DOB 
FROM Pets
WHERE NOT DOB >= '2019-12-31';

Resultado:

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
+-----------+------------+