ORM — Object-Relational Mapping (объектно-реляционное отображение). Это прослойка в виде библиотеки между БД и python, которая связывает наши объекты и классы с таблицами и строками в БД.
SQLAlchemy — большой фреймворк, состоящий из 2-х частей (core и ORM). Чаще используется ORM. ORM предоставляет высокоуровневый доступ к БД. Мы создаем engine, сессию, описываем таблицы, связи
✅ …
❌ …
Django ORM — …
✅ …
❌ …
Mongo, redis Что такое документ? Что документ из себя представляет? Что такое коллекция? Как делать поиск? Как делать поиск по регулярке? Какие проблемы решают? Главная концепция — не используют язык SQL и реляционную модель. Каждая заточена под конкретную классную нужду. Хорошо масштабируются горизонтально. теорема CAP https://habr.com/ru/post/328792/ (можно сидеть только на 2-х стульях из 3-х) C — consistency (надежность) A — availability (доступность) P — partitioning (разделение)
Повторить запросы select, условия, join, group by, having
Отличия между postgresql и mysql:
https://sbercloud.ru/ru/warp/blog/mysql-vs-postgresql
Если больше гибкости и легковестности, берем postgresql Если меньше гемороя хотим, берем mysql
Having
HAVING
- это часть оператора SQL, который используется совместно с оператором GROUP BY
для фильтрации результатов агрегатных функций, таких как COUNT
, SUM
, AVG
, и других, после группировки строк. Он позволяет применять условия к сгруппированным данным и выбирать только те группы, которые соответствуют определенным критериям.
Основное назначение HAVING
: Фильтрация результатов агрегатных функций: HAVING
позволяет выбирать группы результатов, которые соответствуют определенным условиям. Это отличается от оператора WHERE
, который фильтрует строки до их группировки.
Пример использования HAVING
:
Предположим, у вас есть таблица "Заказы" (Orders), и вы хотите найти сумму заказов для каждого клиента, а затем выбрать только тех клиентов, у которых сумма заказов превышает 1000 долларов:
SELECT customer_id, SUM(order_amount) AS total_order_amount
FROM Orders
GROUP BY customer_id
HAVING SUM(order_amount) > 1000;
PK и FK могут состоять более, чем из 1 столбца
1 к 1 — 2 таблицы (в одной FK на PK первой). Во второй таблице (с FK) указано, что FK unique
1 ко многим, но без unique
многие ко многим — реализуется с помощью третьей (связующей таблицы), которая содержит ключ в первую таблицу, ключ во вторую таблицу и таблицы связаны друг с другом связью 1 ко многим