Ознакомление с операторами IN и BETWEEN в MySQL
В сегодняшнем уроке мы рассмотрим основную информацию по операторам IN и BETWEEN в MySQL. С помощью оператора IN вы сможете определить, соответствует ли нужное значение какому-либо значению из списка (или в подзапросе). А с помощью оператора BETWEEN вы сможете определить, находится ли нужное значение в диапазоне доступных значений.
Ознакомление с оператором IN в MySQL
Оператор IN
позволяет определить, соответствует ли указанное значение какому-либо значению в наборе значений или наборе, возвращенным подзапросом.
Ниже показан синтаксис оператора IN
:
SELECT col_1,col_2,... FROM table_name WHERE (expr|col_1) IN ('value1','value2',...);
Давайте рассмотрим этот пример запроса более подробно:
- Используйте столбец (
col_1
) или выражение (expr
) с операторомIN
в предложении WHERE. - Разделяйте значения в списке запятыми (,).
Оператор IN
возвращает 1, если значение col_1
или результат выражения expr
равен любому значению в списке, в противном случае он возвращает 0.
Когда все значения в списке являются константами, MySQL выполняет следующие шаги:
- Сначала оценивает значения на основе типа
col_1
или результата выраженияexpr
. - Во-вторых, сортирует значения.
- В-третьих, ищет значение, используя алгоритм двоичного поиска (бинарный). Поэтому запрос, использующий оператор IN со списком констант, выполняется очень быстро.
Обратите внимание, что если expr
или любое значение в списке равно NULL
, оператор IN
возвращает NULL
.
Вы можете объединить оператор IN
с оператором NOT
, чтобы определить, не соответствует ли значение какому-либо значению в списке или подзапросе. И вы также можете использовать оператор IN в предложении WHERE
других операторов, таких как UPDATE
и DELETE
.
Примеры оператора IN в MySQL
Давайте попрактикуемся на некоторых примерах использования оператора IN.
Если вы хотите найти офисы, расположенные в Германии и США, вы можете использовать оператор IN
в качестве следующего запроса:
SELECT officeCode, country FROM offices WHERE country IN ('Germany', 'USA');
Использование оператора IN с подзапросом
Оператор IN
часто используется с подзапросом. Вместо предоставления списка литеральных значений подзапрос получает список значений из одной или нескольких таблиц и использует их в качестве входных значений оператора IN.
Например, если вы хотите найти заказы, суммарные значения которых превышают 50 000, вы можете использовать оператор IN, как показано в следующем запросе:
SELECT orderNumber, status FROM orders WHERE orderNumber IN ( SELECT orderNumber FROM orderDetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 50000 );
Ознакомление с оператором BETWEEN в MySQL
Оператор BETWEEN
– это логический оператор, который позволяет определить, находится ли нужное значение в указанном диапазоне, или же нет. Оператор BETWEEN часто используется в предложении WHERE
операторов SELECT, UPDATE
и DELETE
.
Ниже показан синтаксис оператора BETWEEN
:
expr BETWEEN start_expr AND end_expr;
Значение expr
– это выражение для тестирования в диапазоне, определенном значениями start_expr
и end_expr
. Все три выражения: expr
, start_expr
и end_expr
должны иметь одинаковый тип данных.
Оператор BETWEEN возвращает true
, если значение expr
больше или равно (>=) значения start_expr
и меньше или равно (<=) значения end_expr
, в противном случае возвращается ноль.
Условие NOT BETWEEN
возвращает true
, если значение expr меньше (<) значения start_expr или больше (>) значения значения end_expr, в противном случае возвращается 0.
Если какое-либо выражение равно NULL
, оператор BETWEEN возвращает NULL
.
Примеры использования оператора BETWEEN в MySQL
Давайте попрактикуемся на некоторых примерах использования оператора BETWEEN
.
Пример №1: Использование оператора BETWEEN с указанием чисел
В следующем примере оператор BETWEEN
используется для поиска товаров, у которых цены находятся в диапазоне от 500 до 1000:
SELECT productName, prodPrice FROM products WHERE prodPrice BETWEEN 500 AND 1000;
Вы также можете переписать приведенный выше запрос, используя в качестве запроса значения меньше или равно (<=), больше или равно (>=) и логический оператор AND
:
SELECT productName, prodPrice FROM products WHERE prodPrice >= 500 AND prodPrice <= 1000;
Пример №2: Использование оператора BETWEEN с указанием дат
Когда вы используете оператор BETWEEN
со значениями даты, чтобы получить наилучший результат, вы должны использовать приведение типа для явного преобразования типа столбца или выражения в тип DATE
.
В следующем примере мы ищем заказы, которые были сделаны в период между датами с 01.01.2019 по 31.12.2019:
SELECT orderNumber, orderDate FROM orders WHERE orderDate BETWEEN CAST('2019-01-01' AS DATE) AND CAST('2019-12-31' AS DATE);
Поскольку типом данных, который используется в столбце с датой, является DATE
, мы используем оператор CAST
, который преобразовывает буквенные строки вида ‘2019-01-01’ и ‘2019-12-31’ в значения DATE
.
Вот и все на сегодня! Из этого урока вы узнали основную информацию об операторах IN
и BETWEEN
в MySQL. Используя оператор IN, вы сможете определить соответствие нужного значения какому-либо значению из списка. А используя оператор BETWEEN, вы сможете определять, находится ли требуемое значение в диапазоне доступных значений.
Спасибо, что читаете нас!