Программирование >>  Понятие sql 

1 ... 8 9 10 [ 11 ] 12 13 14 ... 95


В ДОПОЛНЕНИИ К РЕЛЯЦИОННЫМ И БУЛЕВСКИМ операторам, обсуждаемым вГлаве4, SQL использует специальные операторы IN, BETWEEN, LIKE, и IS NULL. В этой главе, вы узнаете как их использовать и как реляционные операторы позволяют создавать более сложные и мощные предикаты. Обсуждение оператора IS NULL будет включать отсутствие данных и значение NULL, которое указывает на то: что данные отсутствуют. Вы также узнаете о разновидностях использования оператора NOT применяющегося с этими операторами.

ОПЕРАТОР IN

Оператор IN определяет набор значений в которое данное значение может или не может быть включено. В соответствии с нашей учебной базой данных на которой вы обучаетесь по настоящее временя, если вы хотите найти всех продавцов, которые размещены в Barcelona или в London, вы должны использовать следующий запрос (вывод показывается в Рисунке 5.1):

SELECT *

FROM Salespeople

WHERE city = Barcelona OR city = London;

================ SQL Execution Log ============

SELECT *

FROM Salespeople

WHERE city = Barcelona

OR city = London;

snum sname city comm

1001 Peel London 0.12

1004 Motika London 0.11

1007 Rifkin Barcelona 0.15

Рисунок 5.1: Нахождение продавцов в Барселоне и Лондоне

Имеется и более простой способ получить ту же информацию:

SELECT *

FROM Salespeople

WHERE city IN ( Barcelona, London );

Вывод для этого запроса показывается в Рисунке 5.2.



SQL Execution Log

SELECT *

FROM Salespeople

WHERE city IN (Barcelona, London;

==============================================

snum

1001 1004 1007

sname

Peel

Motika

Rifkin

city

London London Barcelona

comm

0.12 0.11 0.15

Рисунок 5.2: SELECT использует IN

Как вы можете видеть,IN определяет набор значений с помощью имен членов набора заключеных в круглые скобки и отделенных запятыми. Он затем проверяет различные значения указанного поля пытаясь найти совпадение со значениями из набора. Если это случается, то предикат верен. Когда набор содержит значения номеров, анесимволов, одиночные кавычки опускаются. Давайте найдем всех заказчиков относящихся к продавцам имеющих значения snum = 1001, 1007, и 1004. Вывод для следующего запроса показан на Рисунке 5.3:

SELECT *

FROM Customers

WHERE cnum IN ( 1001, 1007, 1004 );

SQL Execution Log SELECT * FROM Customers

WHERE snum IN (1001, 1007, 1004);

snum

cname

city

rating

snum

2001

Hoffman

London

1001

2006

Clemens

London

1001

2008

Cisneros

San Jose

1007

2007

Pereira

Rome

1004

Рисунок 5.3: SELECT использует IN с номерами

ОПЕРАТОР BETWEEN

Оператор BETWEEN похож на оператор IN. В отличии от определения по номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения которого должны уменьшаться что делает предикат верным. Вы должны ввести ключевое слово BETWEEN с начальным значением, ключевое AND и конечное значение. В отличие от IN, BETWEEN чувствителен к порядку, и первое значение в предложении должно быть первым по алфавитному или числовому порядку.(Обратите Внимание что, вот-личие от Английского языка,SQL не говорит что значение находится (между) BETWEEN значением и значением , а просто значение BETWEEN значение AND значение . Это применимо и к оператору LIKE). Следующий пример будет извлекать из таблицы Продавцов всех продавцов с комиссионными между .10 и .12 (вывод показывается в Рисунке 5.4):



SELECT *

FROM Salespeople

WHERE comm BETWEEN .10 AND .12;

Для включенного оператора BETWEEN, значение совпадающее с любым из двух значений границы (вэтом случае,.10 и .12) заставляет предикат быть верным.

=============== SQL Execution Log ============

SELECT *

FROM Salespeople

WHERE comm BETWEEN .10 AND .12;

snum sname city comm

1001 Peel London 0.12

1004 Motika London 0.11

1003 Axelrod New York 0.10

Рисунок 5.4: SELECT использует BETWEEN

SQL не делает непосредственной поддержки невключения BETWEEN. Вы должны или определить ваши граничные значения так, чтобы включающая интерпретация была приемлема, или сделать что-нибудь типа этого:

SELECT *

FROM Salespeople

WHERE (comm BETWEEN .10, AND .12) AND NOT comm IN (.10, .12);

Вывод для этого запроса показывается в Рисунке 5.5.

=============== SQL Execution Log ============

SELECT *

FROM Salespeople

WHERE ( comm BETWEEN .10 AND .12

AND NOT comm IN (.10 .12);

snum sname city comm

1004 Motika London 0.11

Рисунок 5.5: Сделать BETWEEN - невключенн1м

По общему признанию, это немного неуклюже, но зато показывает как эти новые операторы могут комбинироваться с операторами Буля чтобы производить более сложные предикаты. В основном, вы используете IN и BETWEEN также как вы использовали реляционные операторы чтобы сравнивать значения, которые берутся либо из набора (для IN) либо из диапазона (для BETWEEN).

Также, подобно реляционным операторам, BETWEEN может работать с символьными полями в терминах эквивалентов ASCII. Это означает что вы можете использовать BETWEEN чтобы выбирать ряд значений из упорядоченных по алфавиту значений.

Этот запрос выбирает всех заказчиков чьи имена попали в определенный алфавитный диапазон:

SELECT *

FROM Customers

WHERE cname BETWEEN A AND G;



1 ... 8 9 10 [ 11 ] 12 13 14 ... 95

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика