- •Введение в базы данных
- •Основные понятия и определения
- •Традиционные файловые системы
- •Системы с базами данных
- •История развития субд
- •Обзор современных субд
- •Основные термины:
- •Архитектура баз данных
- •Уровни представления баз данных
- •Схемы и подсхемы бд
- •Независимость от данных
- •Модели данных
- •Архитектура баз данных и субд
- •Функции и компоненты субд
- •Понятие целостности данных
- •Компоненты субд
- •Многопользовательские субд и языки баз данных
- •Архитектура многопользовательских субд
- •Языки баз данных
- •Реляционные базы данных
- •Используемая терминология
- •Структуры данных
- •Свойства отношений
- •Реляционные ключи
- •Манипулирование данными
- •5.5.1. Специальные реляционные операции
- •5.5.2. Традиционные операции над множествами
- •Пример манипулирования данными
- •Реляционная алгебра
- •Реляционное исчисление
- •Нормализация отношений в реляционных базах данных
- •Нормализация отношений
- •Аномалии вставки
- •Аномалии удаления
- •Аномалии обновления
- •Функциональные зависимости
- •Процесс нормализации
- •Первая нормальная форма (1нф)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (3нф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •Четвертая нормальная форма (4нф)
- •Пятая нормальная форма (5нф)
- •Проектирование реляционных баз данных
- •Подходы к проектированию бд
- •Понятия er- модели
- •Использование case-инструментов
- •Методология проектирования бд с помощью Case-инструментов silverrun
- •8.1.1. Использование silverrun-bpm
- •8.1.2. Контекстная диаграмма
- •Детализирующая диаграмма
- •8.1.4. Порядок работы с silverrun-врм
- •8.1.5. Использование silverrun-erx
- •8.1.6. Использование silverrun-rdm
- •Реляционные базы данных и субд InterBase
- •Субд InterBase, ее основные возможности и область применения
- •Типы данных
- •9.2.1. Целочисленные типы
- •9.2.2. Вещественные типы данных
- •Типы данных с фиксированной точкой
- •9.2.4. Типы данных для хранения текста
- •Типы для хранения даты и времени
- •Тип данных blob
- •Массивы
- •Язык реляционных баз данных sql
- •Sql и его история
- •Объекты реляционной базы данных
- •Операторы манипулирования данными
- •Агрегирование данных при выборке
- •Представления
- •Новые встроенные функции
- •Диалект базы данных
- •Типы с фиксированной точкой
- •Принципы физической организации баз данных
- •Безопасность данных и субд
- •Безопасность в операционной среде
- •Защита сервера
- •Безопасность на уровне базы данных
- •Файл конфигурации Firebird
- •Объектные субд
- •Сильные стороны реляционной модели субд
- •Недостатки реляционных субд
- •Недостатки оосубд
- •Заключение
- •Список литературы
Агрегирование данных при выборке
Функции:
COUNT – подсчитывает количество строк, удовлетворяющих условиям запроса
SUM – подсчитывает сумму значений указанного выражения по строкам, удовлетворяющим условиям запроса
AVG – подсчитывает среднее значение указанного выражения по строкам, удовлетворяющим условиям запроса
MAX, MIN –
подсчитывают соответственно максимальное
и минимальное значения у
казанного
выражения по строкам, удовлетворяющим
условиям запроса
select COUNT ( * ) FROM TREADER
select COUNT (DISTINCT READER)
FROM TBOOK_READER
select SUM (PRICE) FROM NAKLS
where NAKLS.NUM > 36
Пример:
Выборка списка читателей и взятых ими книг
SELECT A.RDNUMB, A.RDNAME, B.BOOKNM
FROM TREADER A, TBOOK B, TBOOK_READER AB
where AB.READER = A.UNIKEY
AND AB.BOOKKEY = B.UNIKEY
B таблице TBOOK и TREADER ключи имеют одинаковое название UNIKEY.
Представления
Представление (View) – это виртуальная таблица, созданная на основе запроса к обычным таблицам. Представление реализуется как запрос, хранящийся на сервере и выполняющийся всякий раз, когда происходит обращение к представлению.
Представления дают возможность создавать уровни организации данных, позволяющие отделить реализацию хранения данных от их вида. Например, можно создать представление, которое выбирает данные из нескольких таблиц. Если клиенты используют это представление, а не напрямую обращаются к лежащим в его основе таблицам, то у разработчика БД появляется возможность менять запрос (например, с целью оптимизации), что не будет замечать клиент – для него это будет все то же представление.
Представления позволяют организовать данные в более удобном и простом виде. Такая проблема может возникнуть, когда число таблиц в базе данных достаточно большое, а взаимосвязи между ними сложные. Представление в этом случае позволяет исключить часть данных, не нужных конкретному клиенту базы данных.
Для создания и удаления представлений существуют команды DDL.
Чтобы создать представление необходимо использовать предложение:
CREATE VIEW viewname [(view_column [, view_column . . .])]
AS <SELECT> [WITH CHECK_OPTION];
Здесь viewname – имя представления, которое должно быть уникальным в пределах базы данных. За ним идет группа не всегда обязательных наименований полей. Обязательно необходимо определить предложение <SELECT>, которое выбирает данные, включаемые в представление. Необязательный параметр WITH CHECK_OPTION позволяет проверять каждую строку данных модифицируемого представления на условие "попадания" в представление.
Пример:
CREATE VIEW MyView
AS
SELECT NAME, PRICE
FROM Table_example;
Число записей в представлении MyView будет равно числу записей в таблице Table_example.
Рассмотрим пример:
Н
Создадим представление, которое показывает, сколько произведений есть у каждого мудреца .
а рисунке 39 представлена реляционная диаграмма для вышеприведенного примера
0,N
1,1
Рис. 39 Реляционная диаграмма
Тогда соответствующее данной реляционной диаграмме представление имеет вид:
CREATE VIEW WiseBookCount
(WISEMEN, HOW_WISEBOOKS)
AS
SELECT M.WISEMEN_NAME, COUNT(B.BOOK)
FROM WISEMEN M, WISEBOOK B
WHERE (M.ID_WISEMEN=B.ID_WISEMEN)
GROUP BY M.WISEMEN_NAME
В представлениях нельзя использовать ORDER BY, а также наборы данных, получаемые в результате выполнения хранимых процедур.
Для извлечения данных из представления используются предложения SELECT.
SELECT * FROM WiseBookCount
ORDER BY HOW_WISEBOOKS
Установление того, какое поле, возвращаемое запросом (в представлении) соответствует какому полю представления, осуществляется по порядковому номеру – первое поле запроса отобразится в первое поле представления, второе – во второе и т. д.
Для вывода списка мудрецов, чье имя начинается с буквы "К" можно использовать следующее представление:
CREATE VIEW WiseMen (WISEMEN)
AS
SELECT M.WISEMEN_NAME
FROM WISEMEN M
WHERE M.WISEMEN_NAME LIKE 'K%';
В представлениях необходимо использовать явное именование полей (с указанием таблицы).
