Database
 sql >> Database >  >> RDS >> Database

=) Operatore per principianti

In SQL, l'operatore maggiore o uguale a (>= ) confronta due espressioni e restituisce TRUE se l'operando di sinistra ha un valore maggiore o uguale all'operando di destra; in caso contrario, restituisce FALSE .

Esempio

Ecco un esempio da dimostrare.

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

Risultato:

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

Questa query restituisce tutte le città con una popolazione maggiore o uguale a 9269265.

Incluso

L'operatore maggiore o uguale a include il valore specificato nella sua valutazione.

Ad esempio, la query precedente includeva Karachi, che, secondo questo database, ha una popolazione di esattamente 9269265.

Se volessimo escludere le città con quella popolazione, dovremmo aumentare il valore specificato:

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

Risultato:

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

Oppure potremmo semplicemente usare il maggiore di (> ) operatore invece:

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

Risultato:

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

Date

Ecco un esempio per dimostrare l'utilizzo dell'operatore maggiore o uguale a per confrontare i valori della data.

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

Risultato:

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

Stringhe

È inoltre possibile utilizzare l'operatore maggiore o uguale a per confrontare i valori di stringa. Quando si confronta con un valore stringa, utilizzare le virgolette attorno alla stringa.

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

Risultato:

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

Condizioni multiple

Se hai più condizioni, puoi utilizzare più >= operatori.

In questo modo:

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

Risultato:

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

Precedenza

Puoi anche utilizzare una combinazione di operatori per filtrare i risultati.

Si noti che SQL ha un ordine di precedenza che assegna a diversi tipi di operatore. Ad esempio, valuta qualsiasi operatore condizionale prima di qualsiasi operatore logico, come AND e OR . Valuta anche qualsiasi AND operatori prima di qualsiasi OR operatori.

Le parentesi hanno una precedenza maggiore rispetto a tutti gli operatori, quindi puoi utilizzare le parentesi per specificare l'ordine in cui deve essere valutata ciascuna condizione.

Considera il seguente esempio:

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

Risultato:

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

In questa query, non ho fornito parentesi, quindi AND l'operatore è stato valutato prima di OR operatore.

Pertanto abbiamo ottenuto righe che soddisfacevano o Name >= 'Zukovski' AND Population >= 100000 o District = 'Overijssel' . Possiamo dire solo guardando questo che verranno restituite tutte le città del distretto di Overijssel, più tutte le città che soddisfano i primi criteri.

È come fare quanto segue:

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

Questo ci darebbe lo stesso risultato della query precedente senza parentesi.

Ma guarda cosa succede quando spostiamo le parentesi su OR condizione.

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

Risultato:

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

Questa volta abbiamo solo quelle città che soddisfano entrambi Population >= 100000 OR District = 'Overijssel' e Name >= 'Overijssel' .

Ciò ha comportato la restituzione di una sola città dell'Overijssel, rispetto alle due della query precedente.

Negazione della condizione

Puoi usare il NOT operatore per negare la condizione fornita da >= operatore. Ecco un esempio:

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

Risultato:

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