Скачиваний:
25
Добавлен:
01.04.2014
Размер:
761.34 Кб
Скачать

50 Понимание sql

______________________________________________________________________

ГЛ. 5

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

| SELECT * |

| FROM Customers |

| WHERE snum IN ( 1001, 1007, 1004 ); |

| ============================================= |

| snum cname city rating snum |

| ------ -------- ------ ---- ------ |

| 2001 Hoffman London 100 1001 |

| 2006 Clemens London 100 1001 |

| 2008 Cisneros San Jose 300 1007 |

| 2007 Pereira Rome 100 1004 |

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

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

=========== ОПЕРАТОР BETWEEN ==========

Оператор BETWEEN похож на оператор IN. В отличии от определения по

номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения

которого должны уменьшаться что делает предикат верным. Вы должны ввести

ключевое слово BETWEEN с начальным значением, ключевое AND и конечное

значение. В отличие от IN, BETWEEN чувствителен к порядку, и первое значение

в предложении должно быть первым по алфавитному или числовому порядку.

( Обратите Внимание что, в отличие от Английского языка, SQL не говорит что

"значение находится (между)BETWEEN значением и значением, а просто

"значение BETWEEN значение значение”. Это применимо и к оператору 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

ИСПОЛЬЗОВАНИЕ СПЕЦИАЛЬНЫХ ОПЕРАТОРОВ В УСЛОВИЯХ 51

______________________________________________________________________

SQL не делает непосредственной поддержки невключения BETWEEN.

Вы должны или определить ваши граничные значения так, чтобы

включающая интерпретация была приемлема, или сделать что-нибудь

типа этого:

SELECT *

FROM Salespeople

WHERE ( comm BETWEEN .10, AND .12 )

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

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

По общему признанию, это немного неуклюже, но зато показывает

как эти новые операторы могут комбинироваться с операторами Буля

чтобы производить более сложные предикаты. В основном, вы

используете IN и BETWEEN также как вы использовали реляционные

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

набора ( для IN ) либо из диапазона ( для BETWEEN ).

Также, подобно реляционным операторам, BETWEEN может работать

с символьными полями в терминах эквивалентов ASCII. Это означает

что вы можете использовать BETWEEN чтобы выбирать ряд значений

из упорядоченных по алфавиту значений.

Соседние файлы в папке ПОНИМАНИЕ SQL