- •7.7.6. Определить общее количество поставщиков
- •7.7.7. Определить в поставках максимальное
- •7.7.8. Для каждой поставляемой детали указать номер и общий объем поставки в штуках
- •7.7.9. Указать номера всех типов деталей, поставляемых более чем одним поставщиком
- •7.7.10. Определить имена поставщиков детали с номером т2'
- •7.7.11. Определить имена поставщиков по крайней мере одной красной детали
- •7.7.12. Указать номера поставщиков, статус которых меньше текущего максимального статуса
- •7.7.13. Указать имена поставщиков детали с номером 'р2'
- •7.7.14. Выбрать имена поставщиков, которые не поставляют деталь с номером 'р2'
- •7.7.15. Определить имена поставщиков всех типов деталей
- •7.7.16. Определить номера деталей, которые либо весят более 16 фунтов, либо поставляются поставщиком с номером 's2', либо и то, и другое
- •7.8. Резюме
- •8.2. Ограничения типа
- •8.3. Ограничения атрибута
- •8.4. Ограничения переменной-отношения
- •8.5. Ограничения баз данных
- •8.6. "Золотое правило"
- •8.7. Ограничения состояния и ограничения перехода
- •8.8. Ключи
- •3. Пусть r1 и r2 — ссылающаяся и ссылочная переменные-отношения соответственно.
- •8.9. Средства языка sql
- •8.10. Резюме
- •9.1. Введение
- •9.2. Для чего нужны представления
- •9.3. Выборка данных из представлений
- •9.4. Обновление данных в представлениях
- •9.5. Моментальные снимки
- •9.6. Поддержка представлений в языке sql
- •9.7. Резюме
- •Часть III
- •10.1. Введение
- •10.2. Основные определения
- •10.3. Тривиальные и нетривиальные зависимости
- •10.4. Замыкание множества зависимостей
- •10.5. Замыкание множества атрибутов
- •10.6. Неприводимые множества зависимостей
- •10.7. Резюме
- •Глава 1 1
- •I Переменные-отношения в знф I
- •11.2. Декомпозиция без потерь
- •11.3. Первая, вторая и третья нормальные формы
- •11.4. Сохранение зависимостей
- •11.5. Нормальная форма Бойса-Кодда
- •11.6. Замечание по поводу атрибутов, содержащих в качестве значений отношения
- •11.7. Резюме
- •12.1. Введение
- •12.2. Многозначные зависимости и четвертая нормальная форма
- •12.3. Зависимости соединения и пятая нормальная форма
- •Соединение по комбинации атрибутов j#,s#
- •Исходное состояние spj
- •12.4. Общая схема процедуры нормализации
- •12.5. Денормализация
- •12.6. Ортогональное проектирование (небольшое отступление от темы)
- •12.7. Другие нормальные формы
- •12.8. Резюме
- •12.3. Brosda V., Vossen g. Update and Retrieval Through a Universal Schema Interface // acm tods. — December, 1988. — 13, № 4.
- •12.5. Date c.J. Will the Real Fourth Normal Form Please Stand Up? // c. J. Date and Hugh Darwen. Relational Database Writings 1989-1991.— Reading, Mass.: Addison-Wesley, 1992.
- •12.20.Kent w. The Universal Relation Revisited // acm tods. — December, 1983. — 8, № 4.
- •12.22.Maier d., Ullman j.D. Fragments of Relations // Proc. 1983 sigmod Intern. Conf. On Management of Data. — San Jose, Calif. — May, 1983.
- •12.24.Maier d., Ullman j.D. Maximal Objects and the Semantics of Universal Relation Databases // acm tods. — March, 1983. — 8, № 1.
- •Глава 13
- •13.1. Введение
- •13.2. Общий подход
- •Каждыи экземпляр сущности ности «Произведение"
- •13.3. Модель "сущность/связь"
- •13.5. Проектирование базы данных с помощью метода er-моделирования
- •13.6. Краткий анализ er-модели
- •13.7. Резюме
7.7.6. Определить общее количество поставщиков
SELECT COUNT(*) AS N FROM S ;
Результатом будет таблица с одним столбцом, которому присвоено имя N, и одной строкой, содержащей значение 5. Язык SQL поддерживает типичный набор обобщающих функций: COUNT, SUM, AVG, МАХ и MIN. Однако имеется несколько специфических для языка SQL особенностей, которые пользователю необходимо знать.
В общем случае аргументу обобщающей функции может предшествовать необязательное ключевое слово DISTINCT (например, SUM(DISTINCT QTY)), указывающее, что перед применением этой функции дублирующиеся строки должны быть удалены. Для функций МАХ и MIN ключевое слово DISTINCT является излишним и не вызывает никакого действия.
Специальная обобщающая функция C0UNT(*) не допускает использования ключевого слова DISTINCT и предназначена для подсчета всех строк в таблице без предварительного удаления дублирующихся строк.
Любые NULL-значения в столбце-аргументе (глава 18) удаляются перед применением обобщающей функции в зависимости от того, указано ли ключевое слово DISTINCT, кроме случая использования обобщающей функции C0UNT(*), когда NULL-значения обрабатываются так же, как обычные значения.
Если аргумент представляет собой пустое множество, обобщающая функция COUNT возвращает значение нуль, а все другие операторы возвращают NULL-значение (неопределенное значение). (В [3.3] показано, что подобное поведение операторов некорректно, однако язык SQL определяет их именно таким образом.)
7.7.7. Определить в поставках максимальное
и минимальное количество деталей с номером 'Р2'
SELECT МАХ ( SP.QTY ) AS MAXQ, MIN ( SP.QTY ) AS MINQ FROM SP
WHERE SP.Pl = 'P2' ;
6
Ортогональность здесь означает
независимость.
Язык
является ортогональным, если независимые
понятия сохраняют в нем свою независимость
и не смешиваются между собой непонятным
образом. Ортогональность весьма
желательна, поскольку чем менее
ортогонален язык, тем он более сложен
и, как это ни парадоксально, менее мощен.
зультате чего такой запрос, как "Получить среднее итоговое количество деталей", нельзя сформулировать без громоздких выражений. Если быть точным, то следующий запрос ***НЕКОРРЕКТЕН***.
SELECT AVG (SUM (SP.QTY) ) ~ Внимание! Это ошибка! FROM SP;
Вместо этого данный запрос следовало бы сформулировать, например, так. SELECT AVG ( X )
FROM ( SELECT SUM ( SP.QTY ) AS X FROM SP
GROUP BY SP.St ) AS POINTLESS ;
Назначение предложения GROUP BY разъясняется в следующем примере, а использование вложенных подзапросов — несколько ниже. Стоит отметить, что возможность вложения подзапросов в предложение WHERE, как было сделано в этом примере, появилась только в стандарте SQL/92 и еще не используется достаточно широко.
Замечание. Спецификация AS POINTLESS бессмысленна, однако ее наличия требуют синтаксические правила языка SQL (приложение А).