Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных / БД2012 / Understanding.SQL.doc
Скачиваний:
283
Добавлен:
28.03.2015
Размер:
1.75 Mб
Скачать

Работа с 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 );

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:

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 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 с номерами

Соседние файлы в папке БД2012