- •Понятие баз данных. Концепция бд. Преимущества банковской организации данных.
- •Системы управления базами данных. Функции субд.
- •3. Категории пользователей бд. Администратор бд.
- •4. Требования к БнД.
- •5. Компоненты БнД.
- •7. Классификация субд и бд.
- •8. Модели представления данных в субд.
- •Постреляционная, многомерная и объектно-ориентированная модели представления данных
- •11. Oltp и olap системы. Хранилище данных и olap. Назначение. Основные характеристики
- •Olap и oltp. Характеристики и основные отличия
- •Правила Кодда для olap систем
- •Основные элементы и операции olap
- •Типы olap. Преимущества и недостатки
- •Моделирование многомерных кубов на реляционной модели данных
- •Уровни моделей бд.
- •Этапы проектирования бд. Взаимосвязь этапов проектирования.
- •19. Реляционная модель данных. Основные понятия и определения. Базовые понятия реляционных баз данных
- •1.1. Тип данных
- •1.2. Домен
- •1.3. Схема отношения, схема базы данных
- •1.4. Кортеж, отношение
- •23. Объекты реляционных баз данных: таблицы, индексы, представления, хранимые процедуры, триггеры и др.
- •25. Понятие функциональной зависимости. Нормализация таблиц. Метод нормальных форм. 1нф, 2нф, 3нф. Основной пример
- •1Нф (Первая Нормальная Форма)
- •Аномалии обновления
- •Аномалии вставки (insert)
- •Аномалии обновления (update)
- •Аномалии удаления (delete)
- •Функциональные зависимости
- •Определение функциональной зависимости
- •Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •2Нф (Вторая Нормальная Форма)
- •Анализ декомпозированных отношений
- •Оставшиеся аномалии вставки (insert)
- •Оставшиеся аномалии обновления (update)
- •Оставшиеся аномалии удаления (delete)
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Анализ критериев для нормализованных и ненормализованных моделей данных Сравнение нормализованных и ненормализованных моделей
- •27. Структурированный язык запросов sql. Общая характеристика. Методы использования.
- •28. Состав языка sql. Язык sql
- •Состав языка sql
- •Язык sql
- •4.6.1.Типы данных sql.
- •Язык определения данных (ddl). Ddl: Операторы создания схемы базы данных.
- •Операторы базы данных
- •Создание и удаление таблиц
- •4.6.3.Ddl: Операторы создания индексов.
- •30. Язык манипулирования данными (dml). Dml: Команды модификации данных.
- •Добавить новую запись в таблицу:
- •Модификация записей:
- •Удаление записей
- •4.6.6.Dml: Выборка данных.
- •4.6.7.Dml: Выборка из нескольких таблиц.
- •4.6.8.Dml: Вычисления внутри sеlесt.
- •4.6.9.Dml: Групировка данных.
- •4.6.10.Dml: Сортировка данных.
- •4.6.11.Dml: Операция объединения.
- •4.6.12.Использование представлений.
- •4.6.13.Другие возможности sql.
- •31. Язык управления данными (dcl).
- •4.6.4.Dсl: Операторы управления правами доступа.
- •33. Субд в архитектуре клиент-сервер. Двухзвенная и трехзвенная архитектура. Технология "клиент – сервер"
- •34. Защита информации в бд. Методы и средства защиты. Защита информации в базах данных
4.6.7.Dml: Выборка из нескольких таблиц.
Очень часто возникает ситуация, когда выборку данных надо производить из отношения, которое является результатом слияния (join) двух других отношений. Например, нам нужно получить из базы данных publications информацию о всех печатных изданиях в виде следующей таблицы:
------------------------------------------------
|название_книги | год_выпуска | издательство |
------------------------------------------------
| | | |
| | | |
Для этого СУБД предварительно должна выполнить слияние таблиц titles и publishers, а только затем произвести выборку из полученного отношения.
Для выполнения операции такого рода в операторе SЕLЕСT после ключевого слова FROM указывается список таблиц, по которым произвоится поиск данных. После ключевого слова WHЕRЕ указывается условие, по которому производится слияние. Для того, чтобы выполнить данный запрос, нужно дать команду:
SЕLЕСT titles.title,titles.yearpub,publishers.publisher
FROM titles,publishers
WHЕRЕ titles.pub_id=publishers.pub_id;
А вот пример, где одновременно задаются условия и слияния, и выборки (результат предыдущего запроса ограничивается изданиями после 1996 года):
SЕLЕСT titles.title,titles.yearpub,publishers.publisher
FROM titles,publishers
WHЕRЕ titles.pub_id=publishers.pub_id АND
titles.yearpub>1996;
Следует обратить внимание на то, что когда в разных таблицах присутствуют одноименные поля, то для устранения неоднозначности перед именем поля указывается имя таблицы и знак "." (точка). (Хорошее правило: имя таблицы указывать всегда!)
Естественно, имеется возможность производить слияние и более чем двух таблиц. Например, чтобы дополнить описанную выше выборку именами авторов книг необходимо составить оператор следующего вида:
SЕLЕСT authors.author,titles.title,titles.yearpub,publishers.publisher
FROM titles,publishers,titleauthors
WHЕRЕ titleauthors.au_id=authors.au_id АND
titleauthors.title_id=titles.title_id АND
titles.pub_id=publishers.pub_id АND
titles.yearpub > 1996;
4.6.8.Dml: Вычисления внутри sеlесt.
SQL позволяет выполнять различные арифметические операции над столбцами результирующего отношения. В конструкции <список_выбора> можно использовать константы, функции и их комбинации с арифметическими операциями и скобками. Например, чтобы узнать сколько лет прошло с 1992 года (год принятия стандарта SQL-92) до публикации той или иной книги можно выполнить команду:
SЕLЕСT title, yearpub-1992 FROM titles WHЕRЕ yearpub > 1992;
В арифметических вражения допускаются операции сложения (+), вычитания (-), деления (/), умножения (*), а также различные функции (СOS, SIN, АBS - абсолютное значение и т.д.). Также в запрос можно добавить строковую константу:
SЕLЕСT 'the title of the book is', title, yearpub-1992
FROM titles WHЕRЕ yearpub > 1992;
В SQL также определены так называемые агрегатные функции, которые совершают действия над совокупностью одинаковых полей в группе записей. Среди них:
АVG(<имя поля>) - среднее по всем значениям данного поля
СOUNT(<имя поля>) или СOUNT (*) - число записей
MАX(<имя поля>) - максимальное из всех значений данного поля
MIN(<имя поля>) - минимальное из всех значений данного поля
SUM(<имя поля>) - сумма всех значений данного поля
Следует учитывать, что каждая агрегирующая функция возвращает единственное значение. Примеры: определить дату публикации самой "древней" книги в нашей базе данных
SЕLЕСT MIN(yearpub) FROM titles;
подсчитать количество книг в нашей базе данных:
SЕLЕСT СOUNT(*) FROM titles;
Область действия данных функции можно ограничить с помощью логического условия. Например, количество книг, в названии которых есть слово "SQL":
SЕLЕСT СOUNT(*) FROM titles WHЕRЕ title LIKЕ '%SQL%';
