- •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. Терминология модели «Клиент-сервер». Логические компоненты модели.
30. Форматирование результатов запросов, упорядочивание выходных полей, команда order by.
Форматирование результатов запросов и выражения
К форматированию относится вставка констант в результат запроса, вычисления, задание нужной последовательности.
В ыражения с выбранными полями. SQL позволяет вносить выражения и константы в выбранные поля. Выражения могут заменять поля в предложениях SELECT. Например, если комиссионные продавцов удобнее представить в виде процентов, то получим:
SELECT snum, sname, city, comm*100
FROM Sales people;
Последний столбец не имеет имени и является выходным столбцом.
Кроме выражений есть возможность вставить константы, например, текстовые.
SELECT snum, sname, city, ‘%’, comm*100
…
или другой пример:
SELECT ‘For’, odate, ‘there are’
COUNT (DISTINCT onum), ‘orders’
FROM Orders
GROUP BY odate
For 10/03/1990, there are 5 orders
For 10/04/1990, there are 2 orders
…
Упорядочение выходных полей
Таблицы в общем случае являются надпорядоченными множествами. Для упорядочивания применяется команда ORDER BY, которая упорядочивает записи в соответствии со значениями одного или нескольких выбранных столбцов. Множество столбцов упорядочиваются одно внутри другого как и в случае GROUP BY, и можно задать возрастающую (ASC) или убывающую (DESC) последовательность сортировки для каждого из столбцов. По умолчанию - возрастающая.
Например, таблица заявок (Orders), упорядоченная по номеру заявки.
SELECT * FROM Orders
ORDER BY cnum DESC;
Внутри этого порядка можно задать упорядочивание еще по другому столбцу:
ORDER BY cnum DESC, amt DESC;
Так для любого количества столбцов.
Требование стандарта, что столбцы, которые указаны в ORDER BY должны быть в числе выбранных (в SELECT).
ORDER BY может использоваться с GROUP BY для упорядочивания групп. ORDER BY выполняется последней. Применим к примеру из начала лекции.
SELECT snum, odate, MAX (amt)
FROM Orders
GROUP BY snum, odate
ORDER BY snum;
вместо имени столбца в ORDER BY допустимо задавать номер поля в порядке их следования в SELECT:
SELECT sname, comm
FROM Sales people
ORDER BY 2 DESC;
Особенно необходим этот метод в случае выходных столбцов, полученных агрегированием:
SELECT snum, COUNT (DISTINCT onum)
FROM Orders
GROUP BY snum
ORDER BY 2 DESC
1001
3 1002
3 1007
2 1003
1
31. Использование множества таблиц в одном запросе, соединение таблиц посредством ссылочной целостности. Построение запроса по двум копиям одной таблицы, понятие алиасов, приёмы ликвидации избыточности в результатах запросов.
Использование множества таблиц в одном запросе
До этого момента рассматривалась техника запросов SQL, базирующаяся на одной таблице, однако основные преимущества запросов заключаются в том, что они могут базироваться на нескольких связанных таблицах - объединениях.
При операции соединения (join) таблицы перечисляются в предложении запроса FROM через запятую. Предикат запроса может ссылаться на любой столбец из соединяемых таблиц (обычно WHERE). Имена таблиц предшествуют через точку именам полей.
SELECT Customers.cname, Salespeople.sname, Salespeople.city
FROM Salespeople, Customers
WHERE Salespeople. city = Customers.city;
Это типичный пример, когда префиксы действительно необходимы (и в одной и в другой таблице поле- city). В дальнейшем префиксы используем по необходимости.
В запросе для каждого продавца из Sales people проводится проверка предиката.
Операция соединения таблиц посредством ссылочной целостности
Допустим, что между таблицами существует связь по полю snum - номер продавца (за каждым покупателем закреплен продавец).
Здесь операция соединения может извлечь данные в терминах связи: показать соответ-твие имен покупателей именами продавцов, их обслуживающих:
SELECT Customers cname, Salespeople.sname
FROM Customers, Salespeople
WHERE Salespeople.snum = Customers.snum;
Поля snum не представлены в выходных данных, поскольку они не существенны как результаты. Подобным образом могут быть построены объединения нескольких таблиц (>2).
Иногда требуется построить запрос по двум копиям одной таблицы.
Здесь возникает проблема с именами. У копии должны быть другие имена. Проблема решается определением временных имен - алиасов в предложении FROM. Рассмотрим пример поиска пар продавцов, имеющих одинаковый рейтинг:
SELECT first.sname, second.sname, first.rating
FROM Salespeople first, Salespeople second
WHERE first.rating = second.rating;
SQL не делает копии реально, но внешне это выглядит так, что Salespeople распадается на две копии с именами first и second.
После выполнения запроса алиасы утрачивают силу.
Выходные данные примера будут включать каждую комбинацию значений дважды из-за симметрии предиката (подставьте реальные имена и увидите). Кроме того, каждая запись присоединяется к себе самой.
Есть простой способ исключить трехкратные повторения- сделать предикат асимметричным.
SELECT first.sname, first.rating
FROM Salespeople first, Salespeople second
WHERE first.rating = second.rating;
AND first.sname < second.sname;
Это уже полезный прием для работы.
Алиасы используют не только для копий запросов, но и просто при замене длинных имен короткими.