
- •Iso (международной организацией по
- •2 Понимание sql
- •Что такое - реляционная база данных?
- •Порядок строк произволен
- •4 Понимание sql ___________________________________________________________________
- •Идентификация строк ( первичные ключи )
- •Столбцы именуются и нумеруются
- •8 Понимание sql
- •************** Работа с sql **************
- •Sql : обзор
- •Что делает ansi ?
- •Интерактивный и вложенный sql
- •14 Понимание sql
- •Субподразделения sql
- •16 Понимание sql
- •Sql несогласованности
- •Что такое - пользователь?
- •18 Понимание sql
- •Условия и терминология
- •************** Работа с sql **************
- •24 Понимание sql
- •26 Понимание sql
- •Переупорядочение столбца
- •28 Понимание sql
- •Параметры distinct
- •30 Понимание sql
- •32 Понимание sql
- •************* Работа с sql ***************
- •38 Понимание sql
- •40 Понимание sql
- •42 Понимание sql
- •44 Понимание sql
- •Использование специальных операторов в условиях
- •50 Понимание sql
- •52 Понимание sql
- •54 Понимание sql
- •56 Понимание sql
- •************** Работа с sql **************
- •Обобщение данных с помощью агрегатных функций
- •64 Понимание sql
- •66 Понимание sql
- •Включение дубликатов в агрегатные функции
- •Предложение group by
- •68 Понимание sql
- •Предложение having
- •70 Понимание sql
- •72 Понимание sql
- •************** Работа с sql **************
- •Формирование выводов запросов
- •Помещение текста в вашем выводе запроса
- •78 Понимание sql
- •80 Понимание sql
- •82 Понимание sql
- •Упорядочение вывода по номеру столбца
- •84 Понимание sql
- •************** Работа с sql **************
- •Запрашивание многочисленых таблиц также как одной
- •90 Понимание sql
- •92 Понимание sql
- •94 Понимание sql
- •************** Работа с sql **************
- •Объединение таблицы с собой
- •Псевдонимы
- •100 Понимание sql
- •Устранение избыточности
- •102 Понимание sql
- •Больше псевдонимов
- •104 Понимание sql
- •106 Понимание sql
- •************** Работа с sql **************
- •Вставка одного запроса внутрь другого
- •112 Понимание sql
- •114 Понимание sql
- •116 Понимание sql
- •In определяет набор значений, одно из которых должно совпадать с другим
- •118 Понимание sql
- •In является подходящим, если запрос может ограниченно производить одно
- •120 Понимание sql
- •122 Понимание sql
- •*************** Работа с sql *************
- •Соотнесенные подзапросы
- •130 Понимание sql
- •132 Понимание sql
- •Соотнесенные подзапросы в предложении having
- •134 Понимание sql
- •*************** Работа с sql *************
- •Использование оператора exists
- •140 Понимание sql
- •142 Понимание sql
- •144 Понимание sql
- •146 Понимание sql
- •************** Работа с sql **************
- •Использование оператора exists
- •152 Понимание sql
- •154 Понимание sql _____________________________________________________________________
- •156 Понимание sql
- •158 Понимание sql
- •160 Понимание sql
- •162 Понимание sql
- •Использование count вместо exists
- •166 Понимание sql
- •************** Работа с sql **************
42 Понимание sql
______________________________________________________________________
ГЛ. 4
=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Customers |
| WHERE NOT (city = 'San Jose' |
| OR rating > 200); |
| ============================================= |
| cnum cname city rating snum |
| ----- -------- ------- ----- ------ |
| 2001 Hoffman London 100 1001 |
| 2002 Giovanni Rome 200 1003 |
| 2006 Clemens London 100 1001 |
| 2007 Pereira Rome 100 1004 |
=============================================
Рисунок 4.5: SELECT использующий NOT и вводное предложение
=============== SQL Execution Log ==============
| |
| SELECT * |
| FROM Orders |
| WHERE NOT ((odate = 10/03/1990 AND snum > 1002) |
| OR amt > 2000.00); |
| =============================================== |
| onum amt odate cnum snum |
| ------ -------- ---------- ----- ----- |
| 3003 767.19 10/03/1990 2001 1001 |
| 3009 1713.23 10/04/1990 2002 1003 |
| 3007 75.75 10/04/1990 2004 1002 |
| 3010 1309.95 10/06/1990 2004 1002 |
=================================================
Рисунок 4.6: Полный (комплексный) запрос
Несмотря на то что Булевы опреаторы индивидуально просты, они не так
просты когда комбинируются в комплексное выражение.
ИСПОЛЬЗОВАНИЕ РЕЛЯЦИОННЫХ И БУЛЕВЫХ ОПЕРАТОРОВ
ДЛЯ СОЗДАНИЯ БОЛЕЕ СЛОЖНЫХ ПРЕДИКАТОВ 43
______________________________________________________________________
Способ оценки комплекса Булева состоит в том, чтобы оценивать
Булевы выражения наиболее глубоко вложенные в круглых скобках,
объединять их в единичное Булево значение, и затем объединять
его с верхними значениями.
Имеется подробное объяснение того как пример выше был вычислен.
Наиболее глубоко вложенные выражения Буля в предикате - это
odate = 10/03/1990 и snum > 1002 являются объединеными с
помощью AND, формируя одно выражение Буля которое будет
оценено как верное для всех строк в которых встретились оба эти
условия. Это составное Булево выражение (которое мы будем называть
Булево номер 1, или B1 для краткости) объдиняется с выражением
(amt) > 2000.00 (B2) с помощью OR, формируя третье выражение (B3),
которое является верным для данной строки, если или B1 или B2
- верны для этой строки.
B3 полностью содержится в круглых скобках которым предшествует
NOT, формируя последнее выражение Буля(B4), которое является
условием предиката.
Таким образом B4, предикат запроса, - будет верен всякий раз, когда B3
неправилен. B3 - неправилен всегда, когда B1 и B2 - оба неверны.
B1 неправилен для строки если дата порядка строки не 10/03/1990, или
если значение snum не большее чем 1002. B2 неправилен для всех строк,
значения суммы приобретений которых не превышает 2000.00.
Любая строка со значением выше 2000.00 сделает B2 - верным; в
результате B3 будет верен, а B4 нет. Следовательно, все эти строки будут
удалены из вывода.
Из оставшихся, строки которые на 3 Октября имеют snum > 1002 ( такие
как строки для onum 3001 на 3 Октября со snum = 1007 ), делают B1
верным, с помощью верного B3 и неверного предиката запроса.
Они будут также удалены из вывода. Вывод показан для строк которые
оставлены.
================ РЕЗЮМЕ ================
В этой главе, вы значительно расширили ваше знакомство с предикатами.
Теперь вы можете находить значения которые связаны с данным значением
любым способом - определяемым различными реляционными операторами.
Вы можете также использовать операторы Буля AND и OR чтобы много
условий, каждое из которых автономно в предикатах, объединять в
единый предикат.
Оператор Буля NOT, как вы уже видели, может изменять значение
условия или группы условий на противоположное.