- •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 **************
28 Понимание sql
______________________________________________________________________
ГЛ. 3
=============== SQL Execution Log ============
| |
| SELECT snum |
| FROM Orders; |
| |
| ============================================= |
| snum |
| ------- |
| 1007 |
| 1001 |
| 1004 |
| 1002 |
| 1007 |
| 1003 |
| 1002 |
| 1001 |
| 1002 |
| 1001 |
=============================================
Рисунок 3. 4: SELECT с дублированием номеров продавцов.
Для получения списка без дубликатов, для удобочитаемости, вы можете
ввести следующее:
SELECT DISTINCT snum
FROM Orders;
Вывод для этого запроса показан в Рисунке 3.5.
Другими словами, DISTINCT следит за тем, какие значения были
ранее, так что бы они не были продублированы в списке. Это - полезный
способ избежать избыточности данных, но важно что бы при этом вы
понимали что вы делаете. Если вы не хотите потерять некоторые данные,
вы не должны безоглядно использовать DISTINCT, потому что это может
скрыть какую-то проблему или какие-то важные данные.
Например, вы могли бы предположить что имена всех ваших заказчиков
различны. Если кто-то помещает второго Clemens в таблицу Заказчиков,
а вы используете SELECT DISTINCT cname, вы не будете даже знать
о существовании двойника. Вы можете получить не того Clemens и даже
не знать об этом. Так как вы не ожидаете избыточности, в этом случае вы
не должны использовать DISTINCT.
Параметры distinct
DISTINCT может указываться только один раз в данном предложении
SELECT. Если предложение выбирает многочисленные поля,
ИСПОЛЬЗОВАНИЕ SQL ДЛЯ ИЗВЛЕЧЕНИЯ
ИНФОРМАЦИИ ИЗ ТАБЛИЦ 29
______________________________________________________________________
=============== SQL Execution Log ============
| |
| SELECT DISTINCT snum |
| FROM Orders; |
| |
| ============================================= |
| snum |
| ------- |
| 1001 |
| 1002 |
| 1003 |
| 1004 |
| 1007 |
=============================================
Рисунок 3.5: SELECT без дублирования
DISTINCT опускает строки где все выбранные поля идентичны. Строки в
которых некоторые значения одинаковы а некоторые различны - будут
сохранены. DISTINCT, фактически, приводит к показу всей строки вывода,
не указывая полей ( за исключением когда он используется внутри агрегат-
ных функций, как описано в Главе 6 ), так что нет никакого смысла чтобы
его повторять.
DISTINCT ВМЕСТО ALL
Вместо DISTINCT, вы можете указать - ALL. Это будет иметь противоположный
эффект, дублирование строк вывода сохранится.
Так как это - тот же самый случай когда вы не указываете ни DISTINCT ни
ALL, то ALL - по существу скорее пояснительный, а не действующий аргумент.
КВАЛИФИЦИРОВАННЫЙ ВЫБОР ПРИ
======= ИСПОЛЬЗОВАНИИ ПРЕДЛОЖЕНИЙ ========
Таблицы имеют тенденцию становиться очень большими, поскольку с
течением времени, все большее и большее количество строк в нее добавляется.
Поскольку обычно из них только определенные строки интересуют вас в
данное время, SQL дает возможность вам устанавливать критерии чтобы
определить какие строки будут выбраны для вывода.