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

44 Понимание sql

______________________________________________________________________

ГЛ. 4

Булевы и Реляционные операторы могут эффективно управляться с помощью

круглых скобок, которые определяют порядок, в котором операции будут

выполнены. Эти операции применимы к любому уровню сложности и вы

поняли как сложные условия могут создаваться из этих простых частей.

Теперь, когда мы показали как используются стандартные математические

операторы, мы можем перейти к операторам которые являются исключитель-

ными в SQL. Это мы сделаем в Главе 5.

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

ДЛЯ БОЛЕЕ ИЗОЩРЕННЫХ ПРЕДИКАТОВ 45

______________________________________________________________________

************** РАБОТА С SQL **************

1. Напишите запрос который может дать вам все порядки со значениями

суммы выше чем $1,000.

2. Напишите запрос который может выдать вам поля sname и city для всех

продавцов в Лондоне с комиссионными выше .10 .

3. Напишите запрос к таблице Заказчиков чей вывод может включить всех

заказчиков с оценкой =< 100, если они не находятся в Риме.

4. Что может быть выведено в результате следующего запроса ?

SELECT *

FROM Orders

WHERE (amt < 1000 OR

NOT (odate = 10/03/1990

AND cnum > 2003 ));

5. Что может быть выведено в результате следующего запроса ?

SELECT *

FROM Orders

WHERE NOT ((odate = 10/03/1990 OR snum > 1006)

AND amt > = 1500 );

6. Как можно проще переписать такой запрос ?

SELECT snum, sname, city, comm

FROM Salespeople

WHERE ( comm > + .12 OR

comm < .14 );

( См. Приложение A для ответов. )

5

Использование специальных операторов в условиях

48 ПОНИМАНИЕ SQL

_____________________________________________________________________

ГЛ. 5

В ДОПОЛНЕНИИ К РЕЛЯЦИОННЫМ И БУЛЕВСКИМ

операторам обсуждаемым в Главе 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';

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

SELECT *

FROM Salespeople

WHERE city IN ( 'Barcelona', 'London' );

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

Как вы можете видеть, IN определяет набор значений с помощью имен

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

Он затем проверяет различные значения указанного поля пытаясь найти

совпадение со значениями из набора. Если это случается, то предикат

верен. Когда наборсодержит значения номеров а не символов, одиночные

кавычки опускаются. Давайте найдем всех заказчиков относящихся к

продавцам имеющих значения snum = 1001, 1007, и 1004. Вывод для

следующего запроса показан на Рисунке 5.3:

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

______________________________________________________________________

SELECT *

FROM Customers

WHERE cnum IN ( 1001, 1007, 1004 );

=============== 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 Нахождение продавцов в Барселоне и Лондоне

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

| |

| SELECT * |

| FROM Salespeople |

| WHERE city IN ('Barcelona', 'London'; |

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

| snum sname city comm |

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

| 1001 Peel London 0.12 |

| 1004 Motika London 0.11 |

| 1007 Rifkin Barcelona 0.15 |

| |

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

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

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