Database
 sql >> Base de données >  >> RDS >> Database

Opérateur SQL inférieur ou égal à (=) pour les débutants

En SQL, l'opérateur inférieur ou égal à (<= ) compare deux expressions et renvoie TRUE si l'opérande de gauche a une valeur inférieure ou égale à l'opérande de droite; sinon, le résultat est FALSE .

Vous pouvez l'utiliser pour déterminer si une valeur est inférieure ou égale à une autre valeur.

Exemple

Voici un exemple pour illustrer.

SELECT * FROM city 
WHERE Population <= 455;

Résultat :

+------+--------------------+---------------+-------------+--------------+
| ID   | Name               | CountryCode   | District    | Population   |
|------+--------------------+---------------+-------------+--------------|
| 2317 | West Island        | CCK           | West Island | 167          |
| 2912 | Adamstown          | PCN           | –           | 42           |
| 3333 | Fakaofo            | TKL           | Fakaofo     | 300          |
| 3538 | Città del Vaticano | VAT           | –           | 455          |
+------+--------------------+---------------+-------------+--------------+

Cette requête renvoie toutes les villes dont la population est inférieure ou égale à 455 habitants.

Inclusif

L'opérateur inférieur ou égal à inclut la valeur spécifiée dans son évaluation. Nous l'avons vu dans l'exemple précédent lorsqu'il incluait la ville avec une population de 455, qui était la valeur exacte que nous avons spécifiée.

Si nous ne voulions pas que cette ville soit incluse, nous devrions soit diminuer la valeur :

SELECT * FROM city 
WHERE Population <= 454;

Résultat :

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

Ou nous pourrions simplement utiliser l'opérateur inférieur à (< ) à la place :

SELECT * FROM city 
WHERE Population < 455;

Résultat :

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

L'opérateur inférieur à n'inclut pas la valeur que vous spécifiez.

Dates

Voici un exemple pour illustrer l'utilisation de l'opérateur inférieur ou égal à pour comparer les valeurs de date.

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

Résultat :

+-----------+------------+
| PetName   | DOB        |
|-----------+------------|
| Fetch     | 2019-08-16 |
| Scratch   | 2018-10-01 |
| Wag       | 2020-03-15 |
+-----------+------------+

Chaînes

Vous pouvez également utiliser le <= opérateur pour comparer les valeurs de chaîne. Lors de la comparaison avec une valeur de chaîne, utilisez des guillemets autour du littéral de chaîne.

SELECT * FROM city 
WHERE Name <= 'Ab';

Résultat :

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

Cette requête renvoie toutes les villes inférieures ou égales à Ab . Fondamentalement, il renvoie toutes les villes qui commencent par des lettres inférieures à Ab ou exactement Ab .

Plusieurs conditions

Si vous avez plusieurs conditions, vous pouvez utiliser plusieurs <= opérateurs.

Comme ceci :

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

Résultat :

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

Priorité

Vous pouvez également utiliser une combinaison d'opérateurs lors du filtrage des résultats.

Notez que SQL a un ordre de priorité qu'il attribue aux différents types d'opérateurs. Par exemple, il évalue tous les opérateurs conditionnels avant tous les opérateurs logiques, tels que AND et OR . De plus, il évalue tout AND opérateurs avant tout OR opérateurs.

Les parenthèses ont une priorité plus élevée que tous les opérateurs, et vous pouvez donc utiliser des parenthèses pour spécifier l'ordre dans lequel chaque condition doit être évaluée.

Prenons l'exemple suivant :

SELECT * FROM city 
WHERE Name <= 'Ab' 
    AND Population <= 100000
    OR District = 'Canary Islands';

Résultat :

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

Dans cette requête, je n'ai fourni aucune parenthèse, et donc le AND l'opérateur a été évalué avant le OR opérateur.

Par conséquent, nous avons obtenu des lignes qui satisfaisaient soit Name <= 'Ab' AND Population <= 100000 ou District = 'Canary Islands' . Rien qu'en regardant cela, nous pouvons dire que toutes les villes des îles Canaries seront renvoyées, ainsi que toutes les villes qui satisfont au premier critère.

Cela revient à faire ce qui suit :

SELECT * FROM city 
WHERE (Name <= 'Ab' 
    AND Population <= 100000)
    OR District = 'Canary Islands';

Cela nous donnerait le même résultat que la requête précédente sans parenthèses.

Mais regardez ce qui se passe lorsque nous déplaçons les parenthèses vers le OR état.

SELECT * FROM city 
WHERE Name <= 'Ab' 
    AND (Population <= 100000
    OR District = 'Canary Islands');

Résultat :

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

Cette fois, nous n'avons obtenu que les villes qui satisfaisaient à la fois Population <= 100000 OR District = 'Canary Islands' et Name <= 'Ab' .

Négation de la condition

Vous pouvez utiliser le NOT opérateur pour annuler la condition fournie par le <= opérateur. Voici un exemple :

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

Résultat :

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