
- •Введение. Структура предмета. Основные понятия
- •1.История развития баз данных
- •2. История развития субд
- •4.Основные понятия и определения
- •Контрольные вопросы
- •Раздел 1. Структура и технологии субд. Модели данных
- •Тема1.1 Архитектура и технико-экономические характеристики субд. Архитектура бд.
- •1. Основные функции субд
- •2. Обобщенная архитектура субд
- •3. Процесс прохождения пользовательского запроса
- •4. Архитектура бд
- •Контрольные вопросы
- •Тема 1.2 Модели данных. Основные понятия и классификация
- •1. Классификация моделей данных
- •3 Пример разработки простой er-модели
- •Контрольные вопросы
- •Тема 1.3 Иерархическая, сетевая и реляционная модели данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •Базовые понятия реляционных баз данных
- •Контрольные вопросы
- •Тема 1.4 Физические модели данных
- •1. Файловые структуры, используемые для хранения информации в базах данных
- •2. Индексные файлы
- •3. Моделирование отношения 1:м с использованием однонаправленных указателей
- •Контрольные вопросы
- •Тема 1.5 Целостность бд. Нормальные формы
- •1. Основные понятия
- •Null-значения
- •Трехзначная логика (3vl)
- •Потенциальные ключи
- •2.Целостность сущностей
- •2 . Основные нормальные формы
- •Аномалии обновления
- •Определение функциональной зависимости
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Контрольные вопросы
- •Тема 1.6 Операции и основные понятия реляционной алгебры и реляционного исчисления
- •1. Реляционная алгебра
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •2. Теоретико-множественные операторы
- •3. Специальные реляционные операторы
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение. Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.Е. Атрибуты с одинаковыми именами и определенные на одинаковых доменах).
- •Контрольные вопросы
- •Тема 1.7 Проектирование реляционной базы данных
- •1. Методология проектирования базы данных
- •2. Этапы проектирования базы данных
- •Контрольные вопросы
- •Раздел 2. Язык sql и его возможности
- •Тема 2.1 История языка sql. Создание и редактирование схемы бд
- •1. Развитие языка sql
- •Что такое пользователь?
- •Числовые константы
- •2 Создание базы данных и структуры таблицы
- •3. Модификация структуры таблицы и удаление таблицы
- •4. Индексы
- •5. Добавление новых данных
- •Однострочный оператор insert
- •Многострочный оператор insert
- •Утилиты пакетной загрузки
- •6. Удаление существующих данных
- •Оператор delete с вложенным запросом
- •7. Обновление существующих данных
- •Обновление всех строк
- •Контрольные вопросы
- •Тема 2.2 Организация запросов к базе данных.
- •1. Формирование запросов к одной таблице
- •2. Статистические функции
- •3. Группировка и агрегатные функции в запросах
- •4. Объединение таблиц
- •Объединения таблиц по равенству значений в столбцах и другие виды объединений
- •5. Объединение таблицы с собой
- •6. Теоретико-множественные операции с таблицами
- •7. Выполнение сложных запросов с вложенными подзапросами
- •Использование выражений в подзапросах
- •Контрольные вопросы
- •Тема 2.3 Виртуальные таблицы Цель: рассмотреть понятие «виртуальная таблица»; назначение виртуальных таблиц и область их использования
- •1. Команда create view
- •2. Групповые представления
- •3. Представления и объединения
- •4. Представления и подзапросы
- •5. Удаление и модификация представлений
- •Контрольные вопросы
- •1.Определение триггера и его назначение
- •2. Типы триггеров
- •Создание триггеров dml
- •Создание триггеров замещения
- •Создание системных триггеров
- •Другие аспекты использования триггеров
- •3. Хранимые процедуры
- •Хранимые функции
- •Контрольные вопросы
- •Тема 2.5 Защита информации в бд
- •1. Общие понятия привилегий
- •Стандартные привилегии
- •2. Предоставление привилегий с использованием представлений
- •3. Другие типы привилегий
- •Контрольные вопросы
- •Тема 2.6 Транзакции и управлении ими
- •1. Что такое транзакция
- •2 . Операторы commit и rollback
- •3. Журнал транзакций
- •5. Транзакции и работа в многопользовательском режиме
- •Проблема пропавшего обновления
- •Проблема промежуточных данных
- •Проблема несогласованных данных
- •Проблема строк-призраков
- •6. Параллельные транзакции
- •Уровни блокировки
- •Жесткая и нежесткая блокировки
- •Тупиковые ситуации
- •Усовершенствованные методы блокировки
- •Контрольные вопросы
- •Тема 2.7 Распределенные базы данных. Модели серверов
- •1.Распределенная обработка данных
- •2. Модели «клиент—сервер» в технологии баз данных
- •Двухуровневые модели
- •Модель сервера приложений
- •3. Модели серверов баз данных
2. Статистические функции
Функции агрегации группируют значения столбца таблицы и возвращают значение вычисленной функции. Ниже приведены такие функции:
COUNT – функция подсчета количества строк или значений столбца, выбранного запросом, что не являются пустыми. Функция имеет следующий синтаксис:
COUNT [DISTINCT|ALL](<выражение>).
При выполнении подсчетов разных значений в столбцах необходимо использовать ключевое слово DISTINCT.
Особенный вариант использования функции COUNT (*) возвращает количество строк в таблице, в том числе дубликаты и атрибуты с неопределенными значениями.
2. SUM - функция подсчета арифметической суммы значений выбранного столбца. Функция имеет следующий синтаксис:
SUM [DISTINCT|ALL](<выражение>).
AVG – функция вычисления среднего значения в выбранном столбце.
Синтаксис функции: AVG [DISTINCT|ALL](<выражение>).
4. MAX – функция выбора самого большого значения со всех значений столбца таблицы. Синтаксис функции: MAX [DISTINCT|ALL](<выражение>).
Допускаются аргументы типа числовой, символьный и дата.
5. MIN – функция выбора самого меньшего значения со всех значений столбца таблицы. Синтаксис функции: MIN [DISTINCT|ALL](<выражение>).
При выполнении вычислений для групповых операций по умолчанию используется ключевое слово ALL, которое указывает, что результат включает все значения атрибута, в том числе дублирующие. Если в запросе использовано ключевое слово DISTINCT, то групповые функции рассматривают только отличные друг от друга значения атрибутов или выражений. Все групповые операции, кроме COUNT (*), не учитывают в вычислениях атрибуты, которые имеют неопределенное значение (NULL).
Например, для того, чтобы найти минимальную, максимальную и среднюю цену товаров в заказах, необходимо выполнить следующую команду:
SELECT MIN(PRICE), MAX(PRICE), AVG(PRICE), SUM(PRICE) FROM ORDERS.
Для подсчета общего количества строк в таблице заказов необходимо выполнить команду:
SELECT COUNT(*) FROM ORDERS.
Для вычисления количества поставщиков, которым оформлялись заказы, необходимо выполнить команду: SELECT COUNT(DISTINCT S_ID) FROM ORDERS.
Выбор суммарной стоимости товаров по всем заказам со скидкой на 30% выполнится следующей командой: SELECT SUM(PRICE*0.7) FROM ORDERS.
3. Группировка и агрегатные функции в запросах
Организация группировки данных для их совместной обработки выполняется при помощи ключевых слов GROUP BY. Общая обработка данных обычно сводится к вычислению некоторой функции: суммы, среднего значения, количества элементов множества отобранных значений и др. Использование ключевых слов GROUP BY приводит к тому, что оператор SELECT выдает по одной строке для каждой группы записей, которые формируются на основании одинаковых значений или выражений в столбцах.
Синтаксис команды группировки строк:
GROUP BY <выражение> [, <выражение>]…[HAVING <условие>].
Выражение может:
быть именем столбца, выражением, константой или функцией без параметров (например, DATE());
содержать функцию группировки типа SUM, AVG и др.
Слова GROUP BY могут ссылаться на любой столбец с выражения FROM независимо от того, упоминаются они или нет в списке отбора SELECT.
Ключевое слово HAVING используется для уточнения, какие группы с GROUP BY будут включаться в конечный результат. Предложения, которые содержат ключевые слова GROUP BY и HAVING, обрабатываются следующим образом:
из запроса удаляются все строки, что не удовлетворяют условию WHERE;
вычисляются и формируются группы соответственно к словам GROUP BY;
удаляются все группы, которые не соответствуют условию HAVING.
Если присутствуют оба ключевых слова GROUP BY и HAVING, они могут задаваться в любом порядке.
Ниже приведены способы использования ключевых слов GROUP BY и HAVING.
Выбор среднего количества товаров, заказанных каждому поставщику, выполняется командой: SELECT S_ID, AVG(QN_TY) FROM ORDERS GROUP BY S_ID.
Выбор среднего количества товаров, заказанных каждому поставщику, при условии, что средний размер партии в каждого поставщика меньше 330-ти единиц товара, выполнится командой: SELECT S_ID, AVG(QN_TY) FROM ORDERS GROUP BY S_ID
HAVING AVG(QN_TY) < 330
Условие, заданное ключевым словом HAVING, относится к сформированной условием GROUP BY группе, а не к конкретным значениям атрибута.
Если условие отбора относится не к группе, а к атрибутам, то она должна быть указана после ключевого слова WHERE. Ниже приведен соответствующий пример.
Выбор среднего количества товаров, заказанных каждому поставщику, при условии, что размер партии каждого заказа не более 500-от единиц, выполнится командой:
SELECT S_ID, AVG(QN_TY) FROM ORDERS WHERE QN_TY 500 GROUP BY S_ID
Формирование результатов запросов
Для выполнения сортирование результатов запроса по увеличению или по убыванию используются ключевые слова ORDER BY.
Сортировка задается следующей синтаксической конструкцией:
ORDER BY <выражение> | <положение> [ASC|DESC].
Параметр <выражение> базируется на одном или нескольких столбцах, перечисленных после ключевого слова SELECT через запятую. Строки с одинаковым значением по первому столбцу упорядочиваются по второму столбцу (если он определен) и т.д.
Параметр <положение> задает число, которое идентифицирует позицию столбца в перечне после ключевого слова SELECT, т.е. вместо указания имени столбца можно указать номер позиции столбца в перечне SELECT. Сортировка при помощи позиции полезна для длинных выражений.
Слова ASCENDING (ASC) и DESCENDING (DSC) означают увеличение или убывание, в значении кодов ASCI порядок сортирования ASCENDING действует по умолчанию.
Например, вывод данных о заказах по увеличению даты заказа выполнится командой:
SELECT * FROM ORDERS ORDER BY DAT.
Вывод данных о заказах по увеличению единицы товара, а в границах одинаковой цены – по увеличению количества товаров выполнится командой:
SELECT * FROM ORDERS ORDER BY PRICE, QN_TY.
Вывод данных о среднем рейтинге поставщиков, сгруппированных по местам, в алфавитном порядке с названием мест выполнится командой:
SELECT S_CITY, AVG(S_RATING) FROM SUPPL GROUP BY S_CITY ORDER BY S_CITY
Для отформатированного вывода данных используются скалярные выражения с