Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec3.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
221.18 Кб
Скачать

Ограничение количества выбираемых строк

Ограничить набор строк, возвращаемых в результате запроса, можно с помощью предложения WHERE. Ограничение количества выбираемых строк с помощью предложения WHERE соответствует операции выборки реляционной алгебры.

Предложение WHERE следует сразу за предложением FROM и задает условие, которое должно быть выполнено. Условие представляет собой некоторое логическое выражение, которое может состоять из имен столбцов, выражений, констант, операторов сравнения и логических операторов. В результирующую выборку попадут только те строки таблицы, для которых заданное логическое выражение будет иметь значение ‘истина’.

I. Простые операторы сравнения.

В предложении WHERE могут использоваться следующие операторы сравнения:

= равно

<> не равно

> больше

>= больше или равно

< меньше

<= меньше или равно

Пример: Вывод должности сотрудника по фамилии Ngao:

SELECT title

FROM s_emp

WHERE last_name=’Ngao’;

Результат:

TITLE

----------------

VP, Operations

Обратите внимание, что строки символов и даты в предложении WHERE должны быть заключены в апострофы (‘ ‘), в то время как числа – нет.

Пример: Вывод фамилий и должностей сотрудников с зарплатой от 2000:

SELECT last_name, title

FROM s_emp

WHERE salary>=2000;

Результат:

LAST_NAME TITLE

------------- -----------

Velasquez President

II. Специальные операторы сравнения sql.

1. BETWEENAND – используется для поиска значений попадающих в заданный интервал (включительно).

Пример: Вывод фамилии сотрудников, чья зарплата больше или равна 1500 и меньше или равна 2000:

SELECT last_name

FROM s_emp

WHERE salary BETWEEN 1500 AND 2000;

Результат:

LAST_NAME

---------

Ropeburn

Sedeghi

Nguyen

2. IN (список) – используется для поиска значений, совпадающих с каким-либо значением из списка.

Пример: Вывод фамилий сотрудников с номерами 1, 3 и 5:

SELECT last_name

FROM s_emp

WHERE id IN (1, 3, 5);

Результат:

LAST_NAME

-----------

Ropeburn

Nagayama

Velasquez

3. LIKE – позволяет производить поиск по некоторому символьному шаблону. Такая операция называется поиском по метасимволам. В SQL можно использовать два метасимвола:

% - заменяет любую последовательность из нуля и более символов;

_ - заменяет любой одиночный символ.

Пример: Вывод фамилий сотрудников с фамилиями, начинающимися на букву ‘C’:

SELECT last_name

FROM s_emp

WHERE last_name like ‘C%’;

Результат:

LAST_NAME

----------

Catchpole

Chang

Пример: Вывод фамилий, второй буквой в которых является “а”:

SELECT last_name

FROM s_emp

WHERE last_name like ‘_a%’;

Результат:

LAST_NAME

---------

Nagayama

Catchpole

Havel

Magee

Maduro

Patel

Markarian

Patel

Dancs

4. IS NULL – используется для поиска неизвестных значений. Как мы уже упоминали в Лекции 3, любые операции сравнения с неизвестным значением дают ‘неизвестно’. Поэтому для поиска неизвестных значений нельзя использовать простые операторы сравнения. Вместо этого используются специальные операторы SQL IS NULL – для поиска неизвестных значений, IS NOT NULL – для поиска значений не являющихся неизвестными.

Пример: Вывод фамилий и должностей для всех служащих, не получающих комиссионные:

SELECT last_name, title

FROM s_emp

WHERE commission_pct = NULL;

Результат:

no rows selected

-- Запрос не вернул ни одной строки, так как при любом значении -- commission_pct выражение commission_pct = NULL дает значение -- ‘неизвестно’.

Правильный запрос:

SELECT last_name, title

FROM s_emp

WHERE commission_pct IS NULL;

Результат:

LAST_NAME TITLE

-------------- ---------------------

Velasquez President

Ngao VP, Operations

Nagayama VP, Sales

Quick-To-See VP, Finance

Ropeburn VP, Administration

Urguhart Warehouse Manager

Menchu Warehouse Manager

Biri Warehouse Manager

20 rows selected.

Пример: Вывод фамилий и должностей для всех служащих, получающих комиссионные:

SELECT last_name, title

FROM s_emp

WHERE commission_pct <> NULL;

Результат:

no rows selected

-- Запрос не вернул ни одной строки, так как при любом значении -- commission_pct выражение commission_pct <> NULL дает значение -- ‘неизвестно’.

Правильный запрос:

SELECT last_name, title

FROM s_emp

WHERE commission_pct IS NOT NULL;

Результат:

LAST_NAME TITLE

---------------- ----------------------

Magee Sales Representative

Giljum Sales Representative

Sedeghi Sales Representative

Nguyen Sales Representative

Dumas Sales Representative

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]