-
Объекты БД
-
Таблицы
- Именно в таблицах хранятся данные
-
Представления
- Объекты БД, позволяющие ограничить доступ пользователя к таблице
-
Индексы
- доп. структуры, позволяющие производить быстрый индексный поиск данных
-
Виды индексов
- Первичный ключ
- Внешний ключ
- Обычный индекс
-
Полнотекстовой индекс
- Специальнй вид индекса для полей типа TEXT
-
Хранимые процедуры(функции)
- Программный код, хранящийся вместе с данными
-
Триггеры
- Хранимые процедуры, которые страбатывают автоматически при наступлении определённых событий
-
Типы данных
- Целые числа
- Вещественные числа
- Строки
- Бинарные данные(BLOB)
- Дата и время
- Перечисления(ENUM)
- Множества(SET)
-
Команды
-
Работа с таблицами
- Создание CREATE
- Изменение ALTER
- Удаление DROP
-
Работа с данными
- Добавление строк INSERT
- Обновление записей в таблице UPDATE
- Удаление записей в таблицах DELETE
-
Выборка данных SELECT
- Простая выборка SELECT * FROM NameTable
-
Ограниченная выборка SELECT smth FROM NameTable WHERE условие
- Логические связки AND и OR
- Оператор отрицания NOT
- Операторы BEtWEEN, LIKE, IN
- Выборка с упорядочиванием ORDER BY
-
Запросы к нескольким таблицам SELECT JOIN/UNION (соединение/объединение)
- Внутренние соединения INNER JOIN
- Внешние соединения OUTER JOIN
- LEFT
- Все строки левой таблицы + те строки из правой, которые удовлетворяют условию соединения
- RIGHT
- Все строки правой таблицы + те строки из левой, которые удовлетворяют условию соединения
- Объединения таблиц UNION
- Для выполнения таблицы должны иметь индентичные схемы, т.е. имели одинаковое количество столбцов, и соответствующие столбцы должны быть одного типа
-
HAVING
- Отличается от WHERE возможностью использовать внутри запроса агрегатные функции
-
Работа с представлениями
- Создание CREATE
- Изменение ALTER
- Удаление DROP
-
Итоговые запросы
- Запросы, позволяющие подвести итогои по таблицам
-
Определения
-
Поля группировки
- Поле или несколько полей, по которым данные объединяются в группы для подведения итогов
-
Итоговое поле
- Это, как правило, числовое поле, по которому подводится итог
-
Итоговые функции
- Задают те итоги, которые подводятся по иоговым полям
-
Вложенные запросы
- Подзапрос внутри SELECT, WHERE или HAVING
-
Скалярный подзапрос
- Возвращает одно значение
-
Табличный подзапрос
- Может возвращать несколько значений, т.е. таблицу
-
Операции
-
IN/NOT IN (Входит/Не входит)
- Сравниние некоторого значения со списком значений
-
SOME, ANY, ALL
- Если записи подзапроса предшествует ключевое слово ANY или SOME, то условие считается истинным, если оно выполняется хотя бы для одного значения из списка значений. В случае ALL для всех значений из списка
-
EXISTS/NOT EXISTS (Присутствует/Отсутствует)
- Проверяется наличие или отсутствие строк в подзапросе
-
Хранимые подпрограммы
-
Преймущества
-
Производительность
- Хранятся в откомпилированном виде, поэтому ваполняются быстрее по сравнению с отправкой отдельных SQL-операторов на сервер
-
Разгрузка сети
- Для вызова подпрограммы отправляется только оператор вызова возможно с параметрами, а выполнение всех операторов, входящих в подпрограмму выполняется на сервере
-
Централизованное администрирование
- Подпрограммы могут разделяться несколькими приложениями, они хранятся на сервере и поэтому изменение кода подпограммы отобразится сразу на всех приложениях, которые её используют
-
Создание подпрограммы
-
CREATE PROCEDURE
-
Вызов процедуры
- CALL
- Может возвращать несколько значений, используя вхоные переменные
-
CREATE FUNCTION
- Функция может учавствовать в выражениях и возвращает скалярное значение
-
Виды параметров подпрограмм
-
IN
- Передаёт значение в проседуру/функцию. В теле подпрограммы может модифицироваться, но извне эти изменения не видны
-
OUT
- Значение этого параметра возвращается процедурой. Изначально его значение равно NULL
-
INOUT
- Имеет входное значение, может модифицироваться процедурой, возвращается процедурой по её окончании
-
RENURNS
- Определён только для функции
-
Вызов подпрограммы
-
Вызов процедуры
-
CALL
- Возвращает параметры, переданные как OUT или INOUT
-
Вызов функции
- 1) SELECT NameFunction
- 2) SET @r=NameFunction /* /n */ SELECT @r
-
Локальные переменные
- В теле подпрограмм можно использовать локальные переменные. Они существуют только в теле подпрограмм и из вне не видны. Каждая переменная должна быть прописана со своим типом после оператора BEGIN с помощью оператора DECLARE
-
Операторы, используемые в теле подпрограмм
-
Оператор ветвления
- Позволяет изменить порядок выполнения операторов, в зависимости от условия
-
Оператор выбора
-
Позволяет осуществить множественный выбор и имеет две формы
- 1) Оператор сравнивает переменную со значением. Как только соответствие найдено, выполняется необходимая группа операторов. Если ни одного соответствие не найдено, выполняется оператор размещённый после ключегого слова ELSE
- 2) Вторая форма позволяет осуществить сравнение непосредственно в конструкции WHEN. Как только будут найдено первое истинное условие, выполняются операторы, следующие за ключевым словом THEN, и затем осуществляет выход из оператра CASE
-
Оператор WHILE
- Реализует цикл с предусловием
-
Оператор LEAVE
- Аналог BREAK в Cи-подобных языках
-
Оператор ITERATE
- Аналог CONTINUE
-
Оператор REPEAT
- Реализует цикл с постусловием
-
Оператор LOOP
- Реализует циклы, т.к. не имеет условия выхода из цикла, то обязательно должен иметь в своём составе оператор LEAVE
-
Удаление подпрограмм
- DROP Name(Proc/Func)
-
Триггеры
-
Определение
- Это специальная хранимая процедура, которая выполняется автоматически при наступлении одного из событий: INSERT, UPDATE или DELETE, т.е. при добывлении, изменении или удалении строк в таблице. Триггер всегда привязывается к конкретной таблице
-
Создание
-
CREATE TRIGGER
-
События
- INSERT - триггер привязан к событию вставки новых записей в таблицу
- UPDATE - триггер привязан к событию обновления записей в таблице
- Можно использовать контекстные переменные, т.е. переменные с префиксом NEW и OLD
- DELETE - триггер привязан к событию удаления записей из таблицы
-
Когда срабатывает
- BEFORE - до события
- AFTER - после события
-
Удаление
- DROP
-
Просмотр существующих триггеров
- SHOW TRIGGERS FROM NameDB
-
СУБД
-
Уровни абстракции представления данных
-
1) Внешний
- Пользовательский уровень
-
2) Концептуальный
- Уровень администратора БД
-
3) Внутренний
- Физический уровень, размещение файов БД в виде файлов на устройствах хранения
-
Модели данных
-
Сетевая
- Данные расположены в виде графа. Вершинами графа являются множества однородных объектов, а дуги, связывающие вершины - это ассоциации
-
Реляционная
- Данные представляются в виде взаимосвязанных таблиц
-
Основные понятия
- Таблица
- Структура, состоящая из заголовка и тела
- Заголовок таблицы
- задаёт, из каких столбцов (отрибутов) состоит таблица
- Тело таблицы
- Состовляет набор неупорядоченных записей или строк
- Поле таблицы
- Значение, лежащее на на пересечении строки и столбца
- Кортеж
- Запись в таблице
- Домен
- Множество значений, которые может принимать атрибут (по сути является искуственным ограничением типа данных)
- Отношение
- Реляционная таблица
- Степень отношения
- Число столбцов или атрибутов таблицы
- Мощность отношения
- Число строк или записей таблицы
-
Математическое определение отношения. Реляционная алгебра
- Маттематическое отношение - множество, выражающее соответствие между двумя и более множествами
- Операции над отношеиями
- Объединение
- Объединение отношение R и S - это множество кортежей, которые принадлежат R или S или им обоим. Оператор применяется только к отношениям одинаковай арности, отношения должны иметь одинаковые заголовкит.е. соответствующие атрибуты должны быть определены на одних и тех же доменах.
- Разность
- Множество кортежей, принадлежащих R и не принадлежащих S
- Декартово произведение (RxS)
- Пусть R и S отношения арности k1 и k2 соответственн. Тогда декартово произведение отношений есть множество кортежей арности k1+k2 первые k1 компонент которых образуют кортежи, принадлежащие R и последнии k2 кортежей - принадлежащие S.
- Проекция
- При выполнении образуется новое отношение, которое составляют столбцы исходного отношения, по которым выполняется проекция. Если при выполнении образуются повторяющиеся кортежи, то в результируещее отношение они включатся в единственном экземпляре
- Селекция
- Построить селекцию R по формуле: 2=b, т.е. выбрать все строки, значение второго столбца в которых равно b. В селекции можно использовать операнды, являющееся константами или номерами компонентов отношения, арифметические операторы сравнения, логические операторы "и", "или", "нет"
-
Иерархическая
- Данные рганизованы в виде дерева, в котором каждый потомок не может иметь более одного предка
- Объектная
-
Проектирование реляционной БД
-
Цели проектирования
- Обеспечение возможности хранения в базе всех данных, необходимых для решения поставленных задач
- Разработка структуры данных с учётом внутренних ограничений модели данных, поддерживаемых конкретной СУБД
-
Общие определения
-
Первичный ключ
- Это столбец или некоторое подмножество столбцов, которые уникально, т.е. единственным образом определяют строки
-
Внешний ключ
- Это столбец или подмножество одной таблицы, который может служить в качестве первичного ключа для другой таблицы ("Он пришёл извне")
-
Избыточность
- Избыточные данные - данные, удаление которых не ведёт за собой потерю информации
-
Нормализация
- Процесс декомпозиции с целью устранить избыточность
-
Первая нормальная форма
- Значение каждого атрибута в нём имеет атомарное значение
-
Вторая нормальная форма
- Все не ключевые атрибуты функционально полно зависят от первичного ключа, т.е. полностью им определяются
-
Третья нормальная форма
- В отношении отсутствуют транзитивные зависимости