Выбрать главу

значение. Это иллюстрируется примером ниже, который не возвращает

ни одной строки, поскольку в списке есть NULL:

□ SELECT *

FROM customers

WHERE customer_id NOT IN (2, 3, 5, NULL);

no rows se lec ted

Предупреждение Оператор NOT IN возвращает false, если значение в списке не определено.

Это важно, поскольку в связи с тем, что вы можете использовать в списке любое выражение,

а не только символьные значения, порой бывает сложно обнаружить появление неопределённого

значения. Рассмотрите возможность использования функции NVL() для выражений,

которые могут возвращать неопределённое значение.

Использование оператора BETWEEN

Оператор BETWEEN во фразе WHERE используется в тех случаях, когда необходимо

отобрать строки,-значения столбцов которых попадают в определенный

интервал. Интервал является закрытым, это означает, что значения

обоих концов интервала также включены в него. В следующем ниже примере

оператор BETWEEN используется для отбора из таблицы customers

строк, где значение столбца customer_id лежит в диапазоне от 1 до 3:

□ SELECT *

FROM customers

WHERE customer_id BETWEEN (1 AND 3);

CUSTOMER_ID FIRST_NAME LAST_NAME DOB PHONE

1 John Brown 01-JAN-65 800-555-1211

2 Cynthia Green 05-FEB-68 800-555-1212

3 Steve White 16-MAR-71 800-555-1213

Оператор NO T BETWEEN возвращает строки, не полученные при помощи

BETWEEN:

□ SELECT *

FROM customers

WHERE customerJLd NOT BETWEEN (1 AND 3);

CUST0MER_ID FIRST_NAME LAST_NAME DOB PHONE

4 G a il Black 800-555-1214

5 Doreen Blue 20-MAY-70

Использование логических операторов

Логические операторы позволяют ограничивать число отбираемых строк

на основании логических условий. Логические операторы перечислены в

приведенной ниже таблице.

46 Глава 2

Оператор Описание

х AND у Возвращает значение true (истина), если оба операнда

имеют значение true

х OR у Возвращает значение true (истина), если либо х, либо у

имеют значение true

NOT х Возвращает true, если х имеет значение false; возвращает

false, если х имеет значение true

Следующий пример иллюстрирует применение оператора AND для отбора

строк из таблицы customers, для которых будут удовлетворены оба поставленных

условия:

■ Столбец dob больше, чем 1 января 1070 г.

■ Столбец customer_id больше 3.

□ SELECT *

FROM customers

WHERE dob > ‘01-JAN-1970’

AND customer_id >3;

CUST0MER_ID FIRST_NAME LAST_NAME DOB PHONE

5 Doreen Blue 20-MAY-70

Следующий запрос иллюстрирует применение оператора OR для отбора

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

условий:

■ Столбец dob больше 1 января 1970 года.

■ Столбец customer_id больше 3.

□ SELECT *

FROM customers

WHERE dob > ‘01-JAN-1970’

OR customer_id > 3;

CUST0MER_ID FIRST_NAME LAST_NAME DOB PHONE

3 Steve White 16-MAR-71 800-555-1213

4 Gail Black 800-555-1214

5 Doreen Blue 20-MAY-70

Можно использовать операторы AND и OR для комбинирования выражений

во фразе WHERE.

Соглашение о порядке старшинства операторов

Если в одном выражении комбинируются операторы AND и 0R, оператор

AND предшествует оператору 0R (это значит, что AND выполняется раньше

0R). Операторы сравнения предшествуют оператору AND. Разумеется, принятый

порядок выполнения можно изменить с помощью круглых скобок.

Выборка информации из таблиц базы данных 47

В следующем примере из таблицы customers отбираются строки, удовлетворяющие

любому из двух условий:

■ Столбец dob больше 1 января 1970 года.

■ Столбец custome r_id меньше 2 и в конце столбца с номером телефона

содержится строка 1211.

□ SELECT *

FROM customers

WHERE dob > ‘01—JAN—1970'

OR customer_id < 2

AND phone LIKE ‘*1211’;

CUST0MER_ID FIRST_NAME LASTJIAME DOB PHONE

1 John Brown 01-JAN-65 800-555-1211

3 Steve White 16-MAR-71 800-555-1213

5 Doreen Blue 20-MAY-70

Оператор AND предшествует оператору OR, так что можно представить

фразу WHERE предыдущего-запроса в следующем виде:

□ dob > ‘ 01-JAN-1970' OR (customer_id < 2 AND phone LIKE *%1211')

Поэтому будут отобраны строки для покупателей № 1, № 3 и № 5.

Сортировка строк с использованием фразы ORDER BY

Фраза ORDER BY используется для сортировки строк, отобранных из базы

данных. Эта фраза может определять один или несколько столбцов, по которым

должны быть отсортированы данные, и должна следовать за фразами

FROM или WHERE (если последняя присутствует).

В следующем примере фраза ORDER BY используется для сортировки

строк таблицы customers по столбцу last_name:

□ SELECT *

FROM customers

ORDER BY last_name;

CUST0MER_ID FIRST_NAME LAST_NAME DOB PHONE

4 G a il Black 800-555-1214

5 Doreen Blue 20-MAY-65

1 John Brown 01-JAN-65 800-555-1211

2 Cynthia Green 05-Feb-68 800-555-1212

3 Steve White 16-MAR-71 800-555-1213

По умолчанию фраза ORDER BY сортирует столбцы в возрастающем

порядке (от меньших значений к большим). Чтобы сортировать столбцы