- •1.Информационные системы
- •2.Основные понятия теории баз данных
- •2.1.Предметная область
- •2.2.Пользователи информационной системы
- •2.3.Интеграция данных Достоинства интеграции данных
- •Проблемы, связанные с интеграцией данных
- •Функции администратора бд
- •Проектирование и развитие бд
- •3.Архитектура информационной системы
- •4.Сетевые базы данных
- •4.1.Способы упорядочения подчиненных записей
- •4.2.Режим включения подчиненных записей
- •4.3.Режим исключения подчиненных записей
- •4.4.Операции над данными
- •5.Иерархические базы данных
- •5.1.Операции над данными
- •6.Реляционные базы данных
- •6.1.Цели проектирования баз данных
- •6.2.Универсальные отношения
- •6.3.Проблемы, связанные с использованием единственного отношения
- •Проблема вставки.
- •Проблема обновления.
- •Проблема удаления.
- •6.4.Функциональные зависимости
- •6.5.Нормальные формы отношений Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •Третья усиленная форма или нормальная форма Бойса–Кодда (нфбк)
- •6.6.Общая схема проектирования баз данных
- •6.7.Избыточные функциональные зависимости. Правила вывода
- •Правило 1. Избыточные зависимости
- •6.8.Схема проектирования баз данных методом декомпозиции
- •7.Метод проектирования бд «Сущность-связь»
- •7.1.Сущности и связи
- •Диаграмма еr–экземпляров:
- •Д иаграмма er–типа:
- •7.2.Степень связи
- •Правило 1.
- •Правило 2.
- •Правило 3.
- •Правило 4.
- •Правило 5.
- •7.3.Бинарные связи степени m:n.
- •Правило 6.
- •Пример проектирования с использованием связей степенью м:n
- •7.4.Связи более высокого порядка
- •Правило 7
- •Пример проектирования с использованием связей более высокого порядка
- •7.5.Использование ролей
- •Правило 8
- •Пример проектирования с использованием ролей
- •8.Постреляционные базы данных
- •8.1.Ограничения реляционных баз данных.
- •Недостатки реляционных баз данных
- •8.2.Системы управления базами данных следующего поколения
- •Абстрактные типы данных
- •Генерация систем баз данных, ориентированных на приложения
- •8.3.Ориентация на расширенную реляционную модель
- •Расширенная реляционная модель
- •9.Объектно-ориентированные субд.
- •9.1.Объектно-ориентированная парадигма.
- •Структура:
- •Целостность данных:
- •Средства манипулирования данными:
- •9.2.Анализ эффективности объектно-ориентированных баз данных Преимущества объектно-ориентированных баз данных:
- •Недостатки объектно-ориентированных баз данных:
- •9.3.Стандарт odmg.
- •Объектная модель
- •Язык описания объектов
- •Язык объектных запросов
- •Связывание с оо-языками
- •9.4.Объектные расширения реляционных субд. Язык sql-3.
- •10.Базы знаний
- •10.1.Понятие системы баз знаний.
- •10.2.Структура системы базы знаний Компоненты Системы баз знаний (сбз):
- •Экстенсиональная и интенсиональная части базы данных
- •10.3.Активные базы данных
- •10.4.Дедуктивные базы данных
- •10.5.Инструментальные средства построения систем баз знаний.
- •11.Язык sql
- •11.1.Стандарт языка доступа к бд
- •11.2.Классификация операторов sql
- •Ddl (data definition language) – операторы определения объектов бд.
- •Insert into (Вставка записей).
- •Update (Редактирование записей).
- •Delete (Удаление записей).
- •Оператор select.
- •Модификатор distinct (предотвращение выборки повторяющихся слов).
- •Order by (упорядочение строк в результате запроса).
- •Использование псевдонимов (alias).
- •11.4.Арифметические выражения.
- •11.5.Групповые функции.
- •Предложение having.
- •11.6.Вложенные запросы.
- •Подзапросы, возвращающие набор значений.
- •Подзапросы, возвращающие значения из нескольких столбцов.
- •Составные запросы с несколькими подзапросами.
- •Синхронизация повторяющихся подзапросов
- •Комбинация нескольких команд Select
- •11.7.Индексы
- •7. Метод проектирования бд «Сущность-связь» 41
- •8. Постреляционные базы данных 75
- •9. Объектно-ориентированные субд. 81
- •10. Базы знаний 87
- •11. Язык sql 93
Предложение having.
Может задавать условие поиска для групп (как для отдельных строк SELECT)
HAVING поле GROUP BY
Здесь сравниваются атрибуты групп
Пример. Определить среднегодовой оклад в отделе, где насчитывается более двух сотрудников:
SELECT Должность, COUNT(*), AVG(Оклад)*12
FROM Сотрудники
GROUP BY Должность
HAVING COUNT(*)>2
В данном запросе могут присутствовать как WHERE так и HAVING. Сначала применяется WHERE. Из оставшихся строк формируется группа в соответствии с GROUP BY. К полученным группам применяется предложение HAVING.
Пример. Составить список отделов, в которых работают по крайней мере два инженера:
SELECT Отдел
FROM Сотрудники
WHERE Должность = 'Инженер'
GROUP BY Отдел
HAVING COUNT(*) > 2
Предложение HAVING может сравнивать различные атрибуты групп.
Пример. Составить список отделов, средняя премия в которых превышает 85% оклада:
SELECT Отдел, AVG(Оклад), AVG(Премия), AVG(Оклад) + 0,25
FROM Сотрудники
GROUP BY Отдел
HAVING AVG(Премия)> 0.25*AVG(Оклад)
Предложение HAVING может сравнивать атрибуты разных групп, для этого необходимо использовать подзапросы.
Пример. Получить список должностей, средний оклад которых больше среднего размера оклада заведующего:
SELECT Должность, AVG(Оклад)
FROM Сотрудники
GROUP BY Должность
HAVING AVG(Оклад) > (SELECT AVG(Оклад)
FROM Сотрудники
WHERE Должность = ‘Заведующий’)
11.6.Вложенные запросы.
Подзапрос – это дополнительный метод манипулирования с несколькими таблицами. Это оператор SELECT, вложенный:
в предложение WHERE, HAVING или SELECT другого оператора SELECT;
в оператор INSERT, UPDATE или DELETE
в другой подзапрос.
Именно возможность вложения операторов SQL друг в друга является причиной, по которой SQL первоначально был назван Structured Query Language. Термин подзапрос часто используется для ссылки на всю совокупность операторов, которая включает один или несколько подзапросов, а также на отдельное вложение. Каждый включающий оператор – следующий по старшинству уровень в подзапросе – представляет собой внешний уровень для внутреннего подзапроса.
Упрощенный синтаксис подзапроса.
Условия поиска, относящиеся к другому запросу, также могут встречаться в предложении WHERE внешнего запроса – до или после внутреннего запроса.
SELECT [DISTINCT]
<Список полей> или *
FROM <Список таблиц> Начало внешнего оператора SELECT
WHERE
{выражение { [NOT] IN | оператор сравнения [ANY | ALL] } | [NOT] EXISTS}
( SELECT [DISTINCT] список выбора подзапроса Подзапрос
FROM <Список таблиц> заключенный
WHERE условия ) в скобки.
[GROUP BY <Список полей для группирования>]
[HAVING <Условие группирования>]
[ORDER BY <Список полей для сортировки>]
Как работает подзапрос?
Подзапросы возвращают результаты внутреннего запроса во внешнее предложение и имеют две основные формы: некоррелированную и коррелированную. Первая реализуется (концептуально) “изнутри наружу”, т.е. внешний запрос выполняет то или иное действие, основываясь на результатах выполнения внутреннего запроса. Вторую форму подзапроса можно представить так: внешний оператор SQL предоставляет значения для внутреннего подзапроса, которые будут использоваться при его выполнении. Затем результаты выполнения подзапроса возвращаются на внешний запрос.
В коррелированном подзапросе внутренний запрос не может быть реализован немедленно: он ссылается на внешний запрос и выполняется поочередно для каждой строки во внешнем запросе.
Как коррелированные, так и некоррелированные запросы бывают трех типов, в зависимости от элементов в предложении WHERE внешнего запроса.
Подзапросы, которые не возвращают ни одного или возвращают несколько элементов (начинаются с IN или с оператора сравнения, содержат ключевые слова ANY или ALL).
Подзапросы, которые возвращают единственное значение (начинаются с простого оператора сравнения).
Подзапросы, которые представляют собой тест на осуществление (начинаются с EXISTS).
Пример. Найти всех сотрудников, у которых должность как у Реброва, а именно заведующий (некоррелированный подзапрос):
SELECT Фамилия, Должность
FROM Сотрудники
WHERE Должность IN ( SELECT Должность
FROM Сотрудники
WHERE Фамилия = ‘Ребров’)
