Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену.docx
Скачиваний:
123
Добавлен:
28.06.2014
Размер:
478.43 Кб
Скачать

Использование between

С помощью BETWEEN ... AND ... (находится в интервале от ... до ...) можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне.

Например, выдать перечень продуктов, в которых значение содержания белка находится в диапазоне от 10 до 50:

SELECT Продукт, Белки FROM Продукты WHERE Белки BETWEEN 10 AND 50;

Можно задать и NOT BETWEEN (не принадлежит диапазону между), например

SELECT Продукт, Белки, Жиры FROM Продукты

WHERE Белки NOT BETWEEN 10 AND 50 AND Жиры > 100;

BETWEEN особенно удобен при работе с данными, задаваемыми интервалами, начало и конец которых расположен в разных столбцах.

Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос

SELECT Начало, Оклад FROM Оклад

WHERE Начало BETWEEN #01-09-93# AND #31-08-94#;

Отметим, что при формировании запросов значения дат следует заключать в #.

Для выявления всех значений минимальных окладов, которые существовали в 1993/94 учебном году, можно сформировать запрос

SELECT * FROM Оклад WHERE Начало BETWEEN #01-09-93# AND #31-08-94#

OR Конец BETWEEN #01-09-93# AND #31-08-94#;

Проверка на вхождение во множество in

Логическая операция, которую можно использовать в условии для операторов SELECT, UPDATE и DELETE ­это операция IN. Эта логическая операция возвращает истину, когда значение слева от слова IN входит во множество значений, указанного справа от слова IN. Множество возможных значений может быть указано явно - через запятую в скобках, а может формироваться другим оператором SELECT:

<выражение> IN (<значение 1>, <значение 2>, ....)

<выражение> IN (<оператор SELECT>)

Выдать сведения о блюдах на основе яиц, крупы и овощей

SELECT* FROM Блюда WHERE Основа IN (Яйца Крупа Овощи);

Форма IN является в действительности просто краткой записью последовательности отдельных сравнений, соединенных операторами OR. Предыдущее предложение эквивалентно такому:

SELECT * FROM Блюда WHERE Основа = Яйца OR Основа = Крупа OR Основа = Овощи;

Например, получить адреса фирм «АО Сделай Сам» и «ОСО Довгань»:

SELECT название,адрес FROM фирма WHERE название IN ("АО Сделай Сам", "ООО Довгань");

Это запрос можно сформулировать и с помощью операций "=" и "OR", но во многих случаях использование операции IN более наглядно и компактно.

Например, найти названия и адреса всех фирм, поставляющих молоко. Этот запрос выполняется одним SQL-оператором:

SELECT название, адрес FROM фирма WHERE id_фирмы IN (SELECT товар.id_фирмы FROM товар WHERE название = "молоко");

Найти все фирмы, которые еще не поставляют молоко:

SELECT название, адрес FROM фирма WHERE id_фирмы NOT IN(SELECT товар.id_фирмы FROM товар WHERE название = "молоко");

Если известно, что оператор SELECT возвращает одну запись, то можно вместо слова IN использовать проверку на равенство.

Например, получить список самых дорогих товаров, а именно их названия и цену (цена будет для всех одна - максимальная), то надо выполнить запрос:

SELECT название, цена FROM товар WHERE цена = (SELECT MAX(цена) FROM товар);