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

) Operador para Iniciantes


No SQL, o operador maior que (> ) compara duas expressões e retorna TRUE se o operando esquerdo tiver um valor maior que o operando direito; caso contrário, retorna FALSE .

Exemplo


Aqui está um exemplo para demonstrar.
SELECT * FROM city
WHERE Population > 9000000;

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

Essa consulta retorna todas as cidades com população superior a 9 milhões.

Exclusivo


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

Por exemplo, o exemplo a seguir não retorna Karachi, que, de acordo com esse banco de dados, possui uma população de exatamente 9269265:
SELECT * FROM city 
WHERE Population > 9269265;

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

Para incluir cidades com uma população de 9269265, precisaríamos diminuir nosso valor especificado:
SELECT * FROM city 
WHERE Population > 9269264;

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

Ou isso, ou podemos usar o maior ou igual a (>= ) operador.
SELECT * FROM city 
WHERE Population >= 9269265;

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

Datas


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

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

Cordas


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

Resultado:
+------+----------+---------------+------------+--------------+
| ID   | Name     | CountryCode   | District   | Population   |
|------+----------+---------------+------------+--------------|
| 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       |
+------+----------+---------------+------------+--------------+

Várias Condições


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

Assim:
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       |
+------+---------+---------------+------------+--------------+

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 > '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       |
+------+----------+---------------+------------+--------------+

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

Portanto, obtivemos linhas que satisfizeram Name > 'Zukovski' AND Population > 100000 ou District = 'Overijssel' . Podemos dizer apenas olhando para isso que todas as cidades do distrito de Overijssel serão devolvidas, além de quaisquer cidades que satisfaçam o primeiro critério.

Isso é como fazer o seguinte:
SELECT * FROM city 
WHERE (Name > 'Zukovski' 
    AND Population > 100000)
    OR District = 'Overijssel';

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 > '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       |
+------+---------+---------------+------------+--------------+

Desta vez, obtivemos apenas as cidades que satisfizeram tanto Population > 100000 OR District = 'Overijssel' e Name > 'Overijssel' .

Isso resultou em apenas uma cidade de Overijssel sendo retornada, em oposição a duas na consulta anterior.

Negando a condição


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

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