- •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 **************
160 Понимание sql
______________________________________________________________________
ГЛ. 13
РАВЕНСТВА И НЕРАВЕНСТВА
ALL используется в основном с неравенствами чем с равенствами, так как
значение может быть "равным для всех" результатом подзапроса только
если все результаты, фактически, идентичны.
Посмотрите следующий запрос:
SELECT *
FROM Customers
WHERE rating = ALL
( SELECT rating
FROM Customers
WHERE city = " San Jose' );
Эта команда допустима, но , c этими данными, мы не получим никакого
вывода. Только в единственом случае вывод будет выдан этим запросом -
если все значения оценки в San Jose окажутся идентичными. В этом случае,
можно сказать следующее :
SELECT *
FROM Customers
WHERE rating =
( SELECT DISTINCT rating
FROM Customers
WHERE city = " San Jose' );
Основное различие в том, что эта последняя команда должна потерпеть
неудачу если подзапрос выведет много значений, в то время как вариант
с ALL просто не даст никакого вывода. В общем, не самая удачная идея
использовать запросы которые работают только в определенных ситуациях
подобно этой. Так как ваша база данных будет постоянно меняться, это
неудачный способ, чтобы узнать о ее содержании.
Однако, ALL может более эффективно использоваться с неравенствами, то
есть с оператором "< >". Но учтите что сказанное в SQL что - значение
которое не равняется всем результатам подзапроса, - будет отличаться от
того же но сказанного с учетом граматики Английского языка.
Очевидно, если подзапрос возвращает много различных значений, как это
обычно бывает, ни одно отдельное значение не может быть равно им всем в
обычном смысле. В SQL, выражение - < > ALL - в действительности со-
ответствует " не равен любому " результату подзапроса. Другими словами,
предикат верен, если данное значение не найдено среди результатов подзапро-
са. Следовательно, наш предыдущий пример противоположен по смыслу это-
му примеру (с выводом показанным в Рисунке 13.11):
ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ ANY, ALL, И SOME 161
______________________________________________________________________
SELECT *
FROM Customers
WHERE rating < > ALL
( SELECT rating
FROM Customers
WHERE city = " San Jose' );
=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Customers |
| WHERE rating < > ALL |
| (SELECT rating |
| FROM Customers |
| WHERE city = 'San Jose'); |
| ============================================= |
| cnum cname city rating snum |
| ----- -------- ---- ------ ------ |
| 2001 Hoffman London 100 1001 |
| 2006 Clemens London 100 1001 |
| 2007 Pereira Rome 100 1004 |
=============================================
Рисунок 13.11: Использование ALL с < >
Вышеупомянутый подзапрос выберает все оценки для города San Jose.
Он выводит набор из двух значений: 200 ( для Liu ) и 300 (для Cisneros).
Затем, основной запрос, выбирает все строки, с оценкой не совпадающей
ни с одной из них - другими словами все строки с оценкой 100. Вы можете
сформулировать тот же самый запрос используя оператор NOT IN:
SELECT*
FROM Customers
WHERE rating NOT IN
( SELECT rating
FROM Customers
WHERE city = " San Jose' );
Вы могли бы также использовать оператор ANY: