|
Программирование >> Понятие sql
В ДОПОЛНЕНИИ К РЕЛЯЦИОННЫМ И БУЛЕВСКИМ операторам, обсуждаемым вГлаве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);
Рисунок 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;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |