Database
 sql >> Base de Dados >  >> RDS >> Database

Operador SQL menor que () para iniciantes


No SQL, o operador menor que (< ) compara duas expressões e retorna TRUE se o operando esquerdo tiver valor inferior ao operando direito; caso contrário, o resultado é FALSE .

Exemplo


Aqui está um exemplo para demonstrar.
SELECT * FROM city 
WHERE Population < 600;

Resultado:
+------+--------------------+---------------+-------------+--------------+
| ID   | Name               | CountryCode   | District    | Population   |
|------+--------------------+---------------+-------------+--------------|
| 62   | The Valley         | AIA           | –           | 595          |
| 2316 | Bantam             | CCK           | Home Island | 503          |
| 2317 | West Island        | CCK           | West Island | 167          |
| 2728 | Yaren              | NRU           | –           | 559          |
| 2912 | Adamstown          | PCN           | –           | 42           |
| 3333 | Fakaofo            | TKL           | Fakaofo     | 300          |
| 3538 | Città del Vaticano | VAT           | –           | 455          |
+------+--------------------+---------------+-------------+--------------+

Essa consulta retorna todas as cidades com população inferior a 600.

Exclusivo


O operador menor que não inclui o valor especificado em sua avaliação.

Por exemplo, o exemplo a seguir não retorna Fakaofo, que tem uma população de 300:
SELECT * FROM city 
WHERE Population < 300;

Resultado:
+------+-------------+---------------+-------------+--------------+
| ID   | Name        | CountryCode   | District    | Population   |
|------+-------------+---------------+-------------+--------------|
| 2317 | West Island | CCK           | West Island | 167          |
| 2912 | Adamstown   | PCN           | –           | 42           |
+------+-------------+---------------+-------------+--------------+

Para incluir cidades com uma população de 300 habitantes, precisaríamos aumentar nosso valor especificado:
SELECT * FROM city 
WHERE Population < 301;

Resultado:
+------+-------------+---------------+-------------+--------------+
| ID   | Name        | CountryCode   | District    | Population   |
|------+-------------+---------------+-------------+--------------|
| 2317 | West Island | CCK           | West Island | 167          |
| 2912 | Adamstown   | PCN           | –           | 42           |
| 3333 | Fakaofo     | TKL           | Fakaofo     | 300          |
+------+-------------+---------------+-------------+--------------+

Datas


Aqui está um exemplo para demonstrar o uso do operador menor que para comparar valores de data.
SELECT PetName, DOB 
FROM Pets
WHERE DOB < '2020-01-01';

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

Cordas


Você também pode usar o operador menor que para comparar valores de string. Ao comparar com um valor de string, use aspas ao redor da string.
SELECT * FROM city 
WHERE Name < 'Ab';

Resultado:
+------+------------------------------+---------------+---------------------+--------------+
| ID   | Name                         | CountryCode   | District            | Population   |
|------+------------------------------+---------------+---------------------+--------------|
| 20   | ´s-Hertogenbosch             | NLD           | Noord-Brabant       | 129170       |
| 548  | Šumen                        | BGR           | Varna               | 94686        |
| 670  | A Coruña (La Coruña)         | ESP           | Galicia             | 243402       |
| 698  | [San Cristóbal de] la Laguna | ESP           | Canary Islands      | 127945       |
| 2450 | Šiauliai                     | LTU           | Šiauliai            | 146563       |
| 3097 | Aachen                       | DEU           | Nordrhein-Westfalen | 243825       |
| 3318 | Aalborg                      | DNK           | Nordjylland         | 161161       |
| 3479 | Šostka                       | UKR           | Sumy                | 90000        |
| 3665 | Šahty                        | RUS           | Rostov-na-Donu      | 221800       |
| 3736 | Štšolkovo                    | RUS           | Moskova             | 104900       |
+------+------------------------------+---------------+---------------------+--------------+

Esta consulta retorna todas as cidades menores que Ab . Basicamente, ele retorna todas as cidades que começam com letras menores que Ab .

Várias Condições


Se você tiver várias condições, poderá usar vários operadores menores que.

Assim:
SELECT * FROM city 
WHERE Name < 'Ab' AND Population < 100000;

Resultado:
+------+--------+---------------+------------+--------------+
| ID   | Name   | CountryCode   | District   | Population   |
|------+--------+---------------+------------+--------------|
| 548  | Šumen  | BGR           | Varna      | 94686        |
| 3479 | Šostka | UKR           | Sumy       | 90000        |
+------+--------+---------------+------------+--------------+

Precedência


Você também pode usar uma combinação de operadores ao filtrar os resultados.

Observe que o SQL tem uma ordem de precedência que atribui a diferentes tipos de operadores. Por exemplo, ele avalia qualquer operador condicional antes de qualquer operador lógico, como AND e OR . Ele também avalia qualquer AND operadores antes de qualquer OR operadores.

Os parênteses têm precedência mais alta do que todos os operadores e, portanto, você pode usar parênteses para especificar a ordem na qual cada condição deve ser avaliada.

Considere o seguinte exemplo:
SELECT * FROM city 
WHERE Name < 'Ab' 
    AND Population < 100000
    OR District = 'Canary Islands';

Resultado:
+------+------------------------------+---------------+----------------+--------------+
| ID   | Name                         | CountryCode   | District       | Population   |
|------+------------------------------+---------------+----------------+--------------|
| 548  | Šumen                        | BGR           | Varna          | 94686        |
| 660  | Las Palmas de Gran Canaria   | ESP           | Canary Islands | 354757       |
| 672  | Santa Cruz de Tenerife       | ESP           | Canary Islands | 213050       |
| 698  | [San Cristóbal de] la Laguna | ESP           | Canary Islands | 127945       |
| 3479 | Šostka                       | UKR           | Sumy           | 90000        |
+------+------------------------------+---------------+----------------+--------------+

Nesta consulta, não forneci parênteses e, portanto, o AND operador foi avaliado antes do OR operador.

Portanto, obtivemos linhas que satisfizeram Name < 'Ab' AND Population < 100000 ou District = 'Canary Islands' . Podemos dizer apenas olhando para isso que todas as cidades das Ilhas Canárias serão devolvidas, além de quaisquer cidades que satisfaçam os primeiros critérios.

Isso é como fazer o seguinte:
SELECT * FROM city 
WHERE (Name < 'Ab' 
    AND Population < 100000)
    OR District = 'Canary Islands';

Isso nos daria o mesmo resultado da consulta anterior sem parênteses.

Mas veja o que acontece quando movemos os parênteses para o OR doença.
SELECT * FROM city 
WHERE Name < 'Ab' 
    AND (Population < 100000
    OR District = 'Canary Islands');

Resultado:
+------+------------------------------+---------------+----------------+--------------+
| ID   | Name                         | CountryCode   | District       | Population   |
|------+------------------------------+---------------+----------------+--------------|
| 548  | Šumen                        | BGR           | Varna          | 94686        |
| 698  | [San Cristóbal de] la Laguna | ESP           | Canary Islands | 127945       |
| 3479 | Šostka                       | UKR           | Sumy           | 90000        |
+------+------------------------------+---------------+----------------+--------------+

Desta vez, obtivemos apenas as cidades que satisfizeram tanto Population < 100000 OR District = 'Canary Islands' e Name < 'Ab' .

Negando a condição


Você pode usar o NOT operador para negar a condição fornecida pelo operador menor que. Aqui está um exemplo:
SELECT PetName, DOB 
FROM Pets
WHERE NOT DOB < '2019-12-31';

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