- •2. Модели бд: простая двумерная структура, иерархическая структура, реляционная модель.
- •708 Тульский механический завод.
- •3. Понятия первичного и внешнего ключа.
- •9. Задача поиска информации. Индексные файлы, их структура и принцип работы, хеширование.
- •10. Проблема достоверности информации, семантические ошибки. Защита и сохранность бд.
- •11. Оперативные таблицы, справочники, словари.
- •12. Функции универсальной информационной системы (основные и вспомогательные). Документальные системы.
- •13. Структура интерфейса субд «Access». Объекты, режим конструктора. Создание таблицы в режиме конструктора, типы полей, свойства полей.
- •14. Определение связей между таблицами, типы связей, их обозначение и просмотр. Понятие целостности данных.
- •15. Присоединённые таблицы, ввод изменение и просмотр данных.
- •16. Создание простых форм. Типы форм. Элементы форм.
- •1 7. Понятие запроса, типы запросов, создание простого запроса.
- •18. Понятие отчёта, создание простых отчётов.
- •19. Анализ таблиц, понятие подстановки.
- •20. Создание связей и объединений в запросах. Ограничения в многотабличных запросах.
- •21. Создание связей для запросов. Объединения и их типы. Объединение в запросе двух копий одной таблицы (самообъединение).
- •22. Использование в запросе автоподстановки для автоввода данных. Создание параметризованных запросов.
- •23. Запросы, вносящие изменения. Проблемы, возникающие при работе с ними.
- •24. Создание и использование подчинённых форм (с помощью мастера и без него). Связывание главной и подчинённой форм. Создание итогов в подчинённых формах.
- •25. Язык sql, его основные команды и их структура, понятие предиката. Понятие транзакции.
- •26. Команда select, устранение избыточности данных - distinct. Определение выборки - where.
- •27. Операторы in, between... And, like, is null.
- •28. Применение функций агрегирования, специальные атрибуты в count, скалярные выражения.
- •29. Предложения group by и having.
- •30. Форматирование результатов запросов, упорядочивание выходных полей, команда order by.
- •32. Вложенные запросы (подзапросы). Связанные подзапросы, оператор exists.
- •33. Объединение множества запросов в один - предложение union.
- •34. Построение запросов для ввода, удаления и изменения значений полей. Вставка результата запроса в таблицу.
- •35. Создание, изменение и удаление таблиц. Понятие представления (View).
- •38. Терминология модели «Клиент-сервер». Логические компоненты модели.
28. Применение функций агрегирования, специальные атрибуты в count, скалярные выражения.
Применение функций агрегирования
Запросы могут давать в результате не только группу значений, но и работать по одному полю. Для этого применяются агрегатные функции:
• COUNT определяет количество строк или значений поля, выбранных посредством запроса (и не NULL);
• SUM - арифметическая сумма всех значений поля;
• AVG- среднее значение по выбранному полю;
• MAX, MIN.
Пример:
SELECT SUM (amt) (Имя поля попадает в аргумент)
FROM Orders;
Сумма всех заявок из таблицы Orders. На выходе - единственное значение.
Специальные атрибуты в COUNT (количество)
Когда нужно подсчитать по столбцу, используют DISTINCT (только для различных значений).
SELECT COUNT (DISTINCT snum) FROM Orders;
Для того, чтобы считать целиком строки:
SELECT COUNT (*) FROM Customers;
(и NULL и повторения включаются)
Если мы хотим исключить NULL и сузить до поля, то используется ALL:
SELECT COUNT (ALL rating) FROM Customers;
Подсчитываем исключая NULL, но включая повторения.
Скалярные выражения
До сих пор в аргументах агрегатных функций было одно поле, возможно и выражение:
SELECT MAX (binc + amt) FROM Orders;
Для каждой строки сначала берется сумма двух полей, а потом из всех таких сумм - МАХ.
29. Предложения group by и having.
Предложение GROUP BY
Предложение GROUP BY позволяет определить подлинность значений отдельного поля в терминах другого поля и применять функции агрегирования к полученному подмножеству. Это дает возможность комбинировать поля и агрегатные функции в одном SELECT. Например, предположим, что нужно найти наибольший заказ из тех, что получил каждый из продавцов:
SELECT snum, MAX (amt)
FROM Orders
GROUP BY snum;
При этом результат - несколько строк.
GROUP BY применяет агрегированные функции отдельно к каждой из серии групп, которые определяются общим значением поля (один и тот же snum). Справа - МАХ значение на группу (с номером 1001).
Возможно, применить GROUP BY к нескольким полям:
SELECT snum, odate, MAX (amt)
FROM Orders
GROUP BY snum, odate;
Запрос дает наибольший заказ сделанный каждому продавцу на каждую дату.
Предложение HAVING
Допустим, нам нужно усложнить пример и сказать, что выбираются только покупки, превышающие $ 3000. Т.е. нужно применить WHERE MAX (amt)>3000.00, но WHERE работает с каждой единственной строкой до вычисления функции, а агрегированные функции работают в терминах групп строк и использование WHERE неприемлемо (получим ошибку).
Для фильтрации групп, также как WHERE работает для отдельных строк, применяется специальное предложение HAVING:
SELECT snum, odate, MAX (amt)
FROM Orders
GROUP BY snum, odate
HAVING MAX (amt)>3000.00;
Выводы: HAVING похоже на WHERE, но если WHERE действует на отдельные записи до GROUP BY и функций, то HAVING работает с группами после действия GROUP BY.
Ограничение на агрегированные функции
В ANSI версии SQL недопустима вложенность, т.е. агрегатная функция в качестве аргумента агрегатной функции:
SELECT odate, MAX (SUM(amt))
FROM Orders
GROUP BY odate;