С помощью BETWEEN... AND... (находится в интервале от... до...) можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне.
Например, выдать перечень продуктов, в которых значение содержания белка находится в диапазоне от 10 до 50:
SELECT Продукт, Белки FROM Продукты WHERE Белки BETWEEN 10 AND 50; |
Результат:
Продукт | Белки |
Майонез | 31. |
Сметана | 26. |
Молоко | 28. |
Морковь | 13. |
Лук | 17. |
Можно задать и NOT BETWEEN (не принадлежит диапазону между), например:
SELECT Продукт, Белки, Жиры FROM Продукты WHERE Белки NOT BETWEEN 10 AND 50 AND Жиры > 100; |
Результат:
Продукт | Белки | Жиры |
Говядина | 189. | 124. |
Масло | 60. | 825. |
Яйца | 127. | 115. |
BETWEEN особенно удобен при работе с данными, задаваемыми интервалами, начало и конец которых расположен в разных столбцах.
Для примера воспользуемся таблицей "минимальных окладов" (табл. 2.1), величина которых непосредственно связана со студенческой стипендией. В этой таблице для текущего значения минимального оклада установлена запредельная дата окончания 9 сентября 9999 года.
|
|
Таблица 2.1. Минимальные оклады. | ||
Миноклад | Начало | Конец |
01-01-1993 | 31-03-1993 | |
01-04-1993 | 30-06-1993 | |
01-07-1993 | 30-11-1993 | |
01-12-1993 | 30-06-1994 | |
01-07-1994 | 09-09-9999 |
Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос
SELECT Начало, Миноклад FROM Миноклады WHERE Начало BETWEEN '1-9-1993' AND '31-8-1994' |
и получить результат:
Начало | Миноклад |
01-12-1993 | |
01-07-1994 |
Отметим, что при формировании запросов значения дат следует заключать в апострофы, чтобы СУБД не путала их с выражениями и не пыталась вычитать из 31 значение 8, а затем 1994.
Для выявления всех значений минимальных окладов, которые существовали в 1993/94 учебном году, можно сформировать запрос
SELECT * FROM Миноклады WHERE Начало BETWEEN '1-9-1993' AND '31-8-1994' OR Конец BETWEEN '1-9-1993' AND '31-8-1994' |
Миноклад | Начало | Конец |
01/07/1993 | 30/11/1993 | |
01/12/1993 | 30/06/1994 | |
01/07/1994 | 09/09/9999 |
Наконец, для получения минимального оклада на 15-5-1994:
SELECT Миноклад FROM Миноклады WHERE '15-05-1994' BETWEEN Начало AND Конец |
Результат:
Миноклад |
Использование IN.
Выдать сведения о блюдах на основе яиц, крупы и овощей
SELECT * FROM Блюда WHERE Основа IN (Яйца Крупа Овощи); |
Результат:
БЛ | Блюдо | В | Основа | Выход | Труд |
Салат летний | З | Овощи | 200. | ||
Салат витаминный | З | Овощи | 200. | ||
Драчена | Г | Яйца | 180. | ||
Морковь с рисом | Г | Овощи | 260. | ||
Омлет с луком | Г | Яйца | 200. | ||
Каша рисовая | Г | Крупа | 210. | ||
Пудинг рисовый | Г | Крупа | 160. | ||
Помидоры с луком | Г | Овощи | 260. |
Рассмотренная форма IN является в действительности просто краткой записью последовательности отдельных сравнений, соединенных операторами OR. Предыдущее предложение эквивалентно такому:
|
|
SELECT * FROM Блюда WHERE Основа=Яйца OR Основа=Крупа OR Основа=Овощи; |