Database
 sql >> база данни >  >> RDS >> Database

SQL по-малко от () оператор за начинаещи

В SQL операторът по-малко от (< ) сравнява два израза и връща TRUE ако левият операнд има стойност по-ниска от десния операнд; в противен случай резултатът е FALSE .

Пример

Ето пример за демонстрация.

SELECT * FROM city 
WHERE Population < 600;

Резултат:

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

Тази заявка връща всички градове с население под 600.

Изключително

Операторът по-малко от не включва посочената стойност в оценката си.

Например, следният пример не връща Fakaofo, който има население от 300:

SELECT * FROM city 
WHERE Population < 300;

Резултат:

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

За да включим градове с население от 300 души, ще трябва да увеличим посочената стойност:

SELECT * FROM city 
WHERE Population < 301;

Резултат:

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

Дати

Ето пример за демонстриране на използването на оператора less than за сравняване на стойности за дата.

SELECT PetName, DOB 
FROM Pets
WHERE DOB < '2020-01-01';

Резултат:

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

Стрингове

Можете също да използвате оператора less than, за да сравните стойностите на низовете. Когато сравнявате със стойност на низ, използвайте кавички около низа.

SELECT * FROM city 
WHERE Name < 'Ab';

Резултат:

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

Тази заявка връща всички градове, които са по-малко от Ab . По принцип той връща всички градове, които започват с букви, по-ниски от Ab .

Множество условия

Ако имате няколко условия, можете да използвате няколко оператора less than.

Като това:

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

Резултат:

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

Приоритет

Можете също да използвате комбинация от оператори, когато филтрирате резултатите.

Имайте предвид, че SQL има ред на приоритет, който присвоява на различни типове оператори. Например, той оценява всички условни оператори преди логически оператори, като AND и OR . Той също така оценява всяко AND оператори преди всяко OR оператори.

Скобите имат по-висок приоритет от всички оператори и затова можете да използвате скоби, за да посочите реда, в който трябва да се оценява всяко условие.

Помислете за следния пример:

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

Резултат:

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

В тази заявка не предоставих никакви скоби и така AND операторът е оценен преди OR оператор.

Следователно получихме редове, които удовлетворяват или Name < 'Ab' AND Population < 100000 или District = 'Canary Islands' . Само като погледнем това, можем да кажем, че всички градове от Канарските острови ще бъдат върнати, плюс всички градове, които отговарят на първите критерии.

Това е като да направите следното:

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

Това ще ни даде същия резултат като предишната заявка без скоби.

Но вижте какво се случва, когато преместим скобите в OR състояние.

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

Резултат:

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

Този път получихме само онези градове, които удовлетвориха и двете Population < 100000 OR District = 'Canary Islands' и Name < 'Ab' .

Отрицание на условието

Можете да използвате NOT оператор за отхвърляне на условието, предоставено от оператора less than. Ето един пример:

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

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обосноваване на новия Mac Pro

  2. Основи на табличните изрази, част 5 – CTEs, логически съображения

  3. Разбиране на внедряването на Amazon Auroras Multi-AZ

  4. Релационни срещу нерелационни бази данни – част 1

  5. Какво представляват базите данни?