- •2. Перечислите основные функции системы управления базами данных и охарактеризуйте их.
- •Управление данными во внешней памяти;
- •Управление буферами оперативной памяти;
- •Управление транзакциями;
- •Ведение журнала изменений в бд;
- •Поддержка языков бд.
- •Обеспечение целостности и безопасности бд.
- •3. Охарактеризуйте типовую организацию системы управления базами данных.
- •4. Раскройте сущность понятия «модель представления данных». Перечислите и опишите виды моделей данных.
- •6. Перечислите и охарактеризуйте основные виды связей реляционной базы данных. Приведите примеры. Перечислите достоинства связывания таблиц.
- •7. Напишите, как вы понимаете контроль целостности связей. Опишите действие контроля целостности при манипулировании данными в таблицах на примере связи 1:м.
- •Ввод новых записей.
- •16. Опишите функции преобразования символов в строке (lower, upper, initcap), строковые функции (lpad, ltrim, substr, instr, length и др.), функции работы с числами. Приведите примеры.
- •17. Опишите функции преобразования типов данных: cast, convert; и функции агрегирования. Приведите примеры.
- •18. Опишите назначение ключевых слов group by, having, order by оператора select. Приведите примеры использования указанных ключевых слов.
- •19. Вложенный подзапрос. Перечислите и дайте характеристику видам вложенных подзапросов. Приведите примеры. Опишите использование операторов any, all с операторами сравнения.
- •20. Перечислите и охарактеризуйте команды, предназначенные для модификации данных: вставка, обновление, удаление. Приведите примеры.
18. Опишите назначение ключевых слов group by, having, order by оператора select. Приведите примеры использования указанных ключевых слов.
Предложение GROUP BY используется для определения групп выходных строк, к которым могут применяться агрегатные функции (COUNT, MIN, MAX, AVG и SUM). Если это предложение отсутствует, и используются агрегатные функции, то все столбцы с именами, упомянутыми в SELECT, должны быть включены в агрегатные функции, и эти функции будут применяться ко всему набору строк, которые удовлетворяют предикату (условию) запроса. В противном случае все столбцы списка SELECT, не вошедшие в агрегатные функции, должны быть указаны в предложении GROUP BY. В результате чего все выходные строки запроса разбиваются на группы, характеризуемые одинаковыми комбинациями значений в этих столбцах. После чего к каждой группе будут применены агрегатные функции. Следует иметь в виду, что для GROUP BY все значения NULL трактуются как равные, то есть при группировке по полю, содержащему NULL-значения, все такие строки попадут в одну группу.
Если при наличии предложения GROUP BY, в предложении SELECT отсутствуют агрегатные функции, то запрос просто вернет по одной строке из каждой группы. Эту возможность, наряду с ключевым словом DISTINCT, можно использовать для исключения дубликатов строк в результирующем наборе.
Например дано отношение Книги
Наз_книги |
Автор |
Издательство |
Цена |
Архитектура компьютера |
Таненбаум Э. С. |
Питер |
21700 |
Война и мир |
Толстой Л.Н. |
Беларусь |
79560 |
Компьютерные сети |
Таненбаум Э. С. |
Питер |
30890 |
Воскресение |
Толстой Л.Н. |
Наука и техника |
26000 |
Анна Каренина |
Толстой Л.Н. |
Беларусь |
24680 |
И требуется подсчитать количество книг одного автора. Получим запрос
SELECT Автор, COUNT(Автор) AS [Кол-во книг]
FROM Книги
GROUP BY Автор;
Результатом которого будет отношение
Автор |
Кол-во книг |
Таненбаум Э. С. |
2 |
Толстой Л.Н. |
3 |
Предложение HAVING — необязательный параметр оператора SELECT для указания условия на результат агрегатных функций (MAX, SUM, AVG, …). Эта предложение включается в запрос лишь при наличии предложение GROUP BY.
HAVING <условия> аналогичен WHERE <условия> за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов указанных в GROUP BY и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY. Необходимо, чтобы в SELECT были заданы только требуемые в выходном потоке столбцы, перечисленные в GROUP BY и/или агрегированные значения. Распространённая ошибка — указание в SELECT столбца, пропущенного в GROUP BY.
Например, запрос
SELECT Издательство, SUM(Цена) AS Сумма
FROM Книги
GROUP BY Издательство
HAVING SUM(Цена) > 36000;
Выдаст издательства суммарная стоимость книг, которых превосходит 36000.
Предложение ORDER BY сортирует записи, полученные в результате запроса, в порядке возрастания (ASC) или убывания (DESC) в соответствии со значениям выбранных столбцов.
Синтаксис: ORDER BY столбец_1 [ASC | DESC] [, столбец_2 [ASC | DESC]][, ...].
Если предложение ORDER BY содержит несколько атрибутов, то сначала строки сортируются по первому атрибуту. Затем строки, имеющие совпадающие значения в первом атрибуте, сортируются по второму атрибуту и т. д. По умолчанию используется порядок сортировки по возрастанию (от «A» до «Я» и от 0 до 9). Предложение ORDER BY не является обязательным. Кроме того, в список ORDER BY можно включать не только имя столбца, но и его порядковую позицию в перечне SELECT.
Например, требуется вывести отношение Книги, так чтобы авторы стояли в алфавитном порядке, а название их книг в обратном порядке, т.е. получим запрос
SELECT *
FROM Книги
ORDER BY Автор ASC, Наз_книги DESC;