Предложение WHERE
Предложение WHERE ограничивает выходной набор теми строками, которые удовлетворяют предикату в этом предложении. Предположим, что у нас имеется следующее соответствие между объемом памяти ПК и типом используемой операционной системы (естественно, условно):
RAM < 64 | W95 |
RAM >=64 и < 128 | W98 |
RAM >= 128 | W2k |
Если мы захотим отобрать компьютеры по типу ОС (заметим, что такого поля нет в таблице PC), то можно написать следующий оператор:
SELECT *
FROM PC
WHERE
CASE
WHEN ram < 64
THEN 'W95'
WHEN ram < 128
THEN 'W98'
ELSE 'W2k'
END ='W98';
[[ column ]] |
---|
NULL [[ value ]] |
Здесь мы выбираем модели, подходящие для операционной системы W98. Ниже приведен результат выполнения этого запроса.
code | model | speed | ram | hd | cd | price |
---|---|---|---|---|---|---|
1 | 1232 | 500 | 64 | 5 | 12x | 600 |
3 | 1233 | 500 | 64 | 5 | 12x | 600 |
8 | 1232 | 450 | 64 | 8 | 24x | 350 |
Это может оказаться полезнее, чем кажется на первый взгляд, если иметь в виду конфиденциальность информации. Например, на клиенте можно формировать запросы, которые будут оперировать такими категориями, как высоко, средне и низко оплачиваемый специалист. То есть сами критерии (оклады) будут спрятаны, скажем, в хранимой процедуре, а через параметр будет передаваться что-то типа символьной строки «средний».