Similar presentations:
SQL
1. Основы БАЗ данных и SQL
ОСНОВЫ БАЗ ДАННЫХИ SQL
Преподаватель IT-ЛЭТИ: Тюлюбаев Артем Андреевич
2. План лекции
ПЛАН ЛЕКЦИИo Что такое база данных и зачем она нужна?
o OLTP и OLAP
o Реляционные базы данных: таблицы, связи, ключи
o Колоночные базы данных
o Введение в SQL: язык для «разговора» с БД
o Объединение таблиц (JOIN) — самая важная операция
3. Базы данных
БАЗЫ ДАННЫХo База данных – это упорядоченная, структурированная
совокупность данных, управляемая СУБД (системой
управления базами данных).
o Ключевые свойства:
o Постоянное хранение
o Структурированность: Данные организованы по
моделям (реляционная, документная и т.д.)
o Целостность: Обеспечение правильности и
непротиворечивости данных (констрейнты)
o Управление доступом: Разграничение прав (ACID,
RBAC)
o Эффективный доступ: Быстрый поиск и
манипуляция данными через языки запросов (SQL)
4. Типы баз данных
ТИПЫ БАЗ ДАННЫХOLTP (Online Transaction Processing) и OLAP (Online Analytical Processing)
Транзакция в базе данных (БД) — это последовательность
одной или нескольких операций с данными, которые
выполняются как единое целое.
Атомарность — это свойство транзакций, которое
гарантирует, что все операции внутри транзакции либо
завершаются успешно, либо не выполняются вообще.
Принцип ACID - Atomicity, Consistency, Isolation, Durability
5. Oltp и olap субд
OLTP И OLAP СУБДo Реляционные (SQL). Данные в таблицах (строках и колонках) со строгой
схемой. Связи через ключи. (PostgreSQL, MySQL, Oracle).
o Колоночные. Данные хранятся по колонкам, а не по строкам.
Эффективны для аналитики. (ClickHouse).
6. Реляционные базы данных
РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХo Структура. Таблицы (отношения),
состоящие из строк и колонок.
o Схема (Schema). Четко определенная
перед началом работы. Типы данных,
ограничения, связи.
o Целостность данных (Data Integrity).
Обеспечивается через механизмы:
o ACID-транзакции
o Ограничения (Constraints):
PRIMARY KEY, FOREIGN KEY,
UNIQUE, NOT NULL, CHECK
7. Нормальные формы
НОРМАЛЬНЫЕ ФОРМЫo Нормальная форма — требование, предъявляемое к структуре таблиц в теории реляционных баз
данных для устранения из базы избыточных функциональных зависимостей между атрибутами
(полями таблиц).
o Отношение находится в 1НФ, если все его атрибуты являются простыми, все используемые домены
должны содержать только скалярные значения. Не должно быть повторений строк в таблице.
8.
ПЕРВАЯ НОРМАЛЬНАЯ ФОРМАo Отношение находится в 1НФ, если все его атрибуты являются простыми,
все используемые домены должны содержать только скалярные значения.
Не должно быть повторений строк в таблице.
9. Нормальные формы
НОРМАЛЬНЫЕ ФОРМЫo Отношение находится во 2НФ, если оно находится в 1НФ и каждый не
ключевой атрибут неприводимо зависит от Первичного Ключа(ПК).
o Неприводимость означает, что в составе потенциального ключа
отсутствует меньшее подмножество атрибутов, от которого можно также
вывести данную функциональную зависимость.
10.
ВТОРАЯ НОРМАЛЬНАЯ ФОРМАo Отношение находится во 2НФ, если оно находится в 1НФ и каждый не
ключевой атрибут неприводимо зависит от Первичного Ключа(ПК).
11. Нормальные формы
НОРМАЛЬНЫЕ ФОРМЫo Отношение находится в 3НФ, когда находится во 2НФ и каждый не
ключевой атрибут нетранзитивно зависит от первичного ключа. Проще
говоря, второе правило требует выносить все не ключевые поля,
содержимое которых может относиться к нескольким записям таблицы в
отдельные таблицы.
12. Третья нормальная форма
ТРЕТЬЯ НОРМАЛЬНАЯ ФОРМАo Отношение находится в 3НФ, когда находится во 2НФ и каждый не
ключевой атрибут нетранзитивно зависит от первичного ключа. Проще
говоря, второе правило требует выносить все не ключевые поля,
содержимое которых может относиться к нескольким записям таблицы в
отдельные таблицы.
13. Колоночные базы данных
КОЛОНОЧНЫЕ БАЗЫ ДАННЫХПреимущества (Почему это быстро для аналитики?)
o Сверхбыстрое агрегирование: SUM, AVG, COUNT
выполняются за один проход по колонке
o Эффективное сжатие: Данные в одной колонке однотипны, что
позволяет применять мощные алгоритмы сжатия
o Векторизованная обработка: Операции выполняются не над одной ячейкой, а над целыми массивами
(колонками), оптимально используя кэш CPU
o Предикатная фильтрация: Быстрое отсечение нерелевантных данных по условию WHERE
Недостатки и ограничения
o Медленные точечные операции: Получение всей строки по ключу (SELECT * WHERE id = 123) требует сборки
из множества колонок.
o Неэффективность для OLTP задач: Тяжелые и медленные операции UPDATE/DELETE отдельных строк.
o Сложность со вставками: Запись одной строки означает запись в конец каждого столбца.
14. Язык запросов sql
ЯЗЫК ЗАПРОСОВ SQLГруппы команд (DDL, DML, DCL, TCL):
o DDL (Data Definition Language): Определение структуры.
CREATE, ALTER, DROP
o DML (Data Manipulation Language): Манипуляция данными.
SELECT, INSERT, UPDATE, DELETE
o DCL (Data Control Language): Управление доступом. GRANT,
REVOKE.
o TCL (Transaction Control Language): Управление транзакциями.
BEGIN, COMMIT, ROLLBACK
15. Структура sql запроса
СТРУКТУРА SQL ЗАПРОСАSELECT [DISTINCT] column1, AGG_FUNC(column2)
FROM table1
[JOIN table2 ON ...]
WHERE condition
GROUP BY column1
HAVING condition
ORDER BY column1 [ASC|DESC]
LIMIT count;
16. Виды Join
ВИДЫ JOIN17. Оконные функции
ОКОННЫЕ ФУНКЦИИПроблема: Как выполнить вычисления над группой строк (окном), не сворачивая их в одну, как в GROUP BY?
FUNCTION_NAME(column) OVER (
[PARTITION BY partition_column]
[ORDER BY order_column [ROWS|RANGE frame]]
) AS new_column_name
Ключевые компоненты:
PARTITION BY: Разбивает данные на группы (окна). Аналог GROUP BY, но без свертки.
ORDER BY внутри OVER: Определяет порядок строк в окне и логику скользящего окна.
Фрейм: ROWS BETWEEN N PRECEDING AND CURRENT ROW.
Популярные функции:
Ранжирование: ROW_NUMBER(), RANK(), DENSE_RANK().
Аналитические: LAG(), LEAD() (доступ к соседним строкам).
Агрегатные: SUM(...) OVER(), AVG(...) OVER().
database