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