🤔 Как выбрать данные из двух таблиц без метода join()?
В SQL можно объединять данные из двух таблиц без использования
🚩Использование подзапросов (`SELECT` внутри `SELECT`)
Подзапрос (
Допустим, у нас есть две таблицы:
🚩Использование `IN` или `EXISTS`
Можно фильтровать данные из одной таблицы, проверяя наличие значений в другой.
🚩Объединение данных через `UNION`
Если таблицы имеют схожие колонки, можно объединить их с
🚩Использование `CROSS JOIN` через `WHERE`
Хотя
Ставь 👍 и забирай 📚 Базу знаний
В SQL можно объединять данные из двух таблиц без использования
JOIN, используя альтернативные методы. 🚩Использование подзапросов (`SELECT` внутри `SELECT`)
Подзапрос (
subquery) позволяет выбрать данные из одной таблицы, используя данные из другой. Допустим, у нас есть две таблицы:
employees (id, name, department_id) departments (id, name)SELECT name,
(SELECT name FROM departments WHERE id = employees.department_id) AS department_name
FROM employees;
🚩Использование `IN` или `EXISTS`
Можно фильтровать данные из одной таблицы, проверяя наличие значений в другой.
SELECT name
FROM employees
WHERE department_id IN (SELECT id FROM departments);
🚩Объединение данных через `UNION`
Если таблицы имеют схожие колонки, можно объединить их с
UNION. SELECT id, name, email FROM users_old
UNION
SELECT id, name, email FROM users_new;
🚩Использование `CROSS JOIN` через `WHERE`
Хотя
CROSS JOIN делает декартово произведение, его можно фильтровать WHERE, имитируя INNER JOIN. SELECT e.name, d.name AS department
FROM employees e, departments d
WHERE e.department_id = d.id;
Ставь 👍 и забирай 📚 Базу знаний
🤔 Может ли метод объекта вернуть класс?
Да, метод объекта может вернуть класс. Например:
- Метод объекта может использовать имя класса через self.class.
- Это позволяет получить сам класс, к которому принадлежит объект.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Да, метод объекта может вернуть класс. Например:
- Метод объекта может использовать имя класса через self.class.
- Это позволяет получить сам класс, к которому принадлежит объект.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Почему плохо хранить данные SQL в Docker контейнере?
Хранение данных базы данных (SQL) внутри Docker-контейнера не рекомендуется, потому что контейнеры являются временными и одноразовыми. При удалении или пересоздании контейнера все данные внутри него теряются.
🚩Данные удаляются при удалении контейнера
Контейнеры в Docker спроектированы так, чтобы их можно было легко пересоздавать. Если удалить контейнер (
🚩Проблемы с обновлением и масштабированием
Если база данных хранится внутри контейнера, обновить версию MySQL/PostgreSQL будет сложно. При пересоздании контейнера все данные потеряются, и их придется восстанавливать из резервной копии.
🚩Низкая производительность I/O
Хранение данных внутри контейнера может снизить скорость работы базы, потому что Docker использует копию на запись (Copy-on-Write, CoW).
Решение — использовать прямые тома (volumes) или монтировать каталог хоста.
🚩Проблемы с резервным копированием
Если база находится внутри контейнера, то сделать бэкап или восстановить данные сложно.
Лучшее решение: использовать volumes + делать бэкапы через
Ставь 👍 и забирай 📚 Базу знаний
Хранение данных базы данных (SQL) внутри Docker-контейнера не рекомендуется, потому что контейнеры являются временными и одноразовыми. При удалении или пересоздании контейнера все данные внутри него теряются.
🚩Данные удаляются при удалении контейнера
Контейнеры в Docker спроектированы так, чтобы их можно было легко пересоздавать. Если удалить контейнер (
docker rm), все данные, хранящиеся внутри него, исчезнут навсегда. docker run --name mydb -e MYSQL_ROOT_PASSWORD=secret -d mysql
docker stop mydb
docker rm mydb # Удаляем контейнер – все данные пропали!
🚩Проблемы с обновлением и масштабированием
Если база данных хранится внутри контейнера, обновить версию MySQL/PostgreSQL будет сложно. При пересоздании контейнера все данные потеряются, и их придется восстанавливать из резервной копии.
🚩Низкая производительность I/O
Хранение данных внутри контейнера может снизить скорость работы базы, потому что Docker использует копию на запись (Copy-on-Write, CoW).
Решение — использовать прямые тома (volumes) или монтировать каталог хоста.
docker run --name mydb -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -d mysql
🚩Проблемы с резервным копированием
Если база находится внутри контейнера, то сделать бэкап или восстановить данные сложно.
Лучшее решение: использовать volumes + делать бэкапы через
mysqldump или pg_dump. docker exec mydb mysqldump -u root -psecret mydatabase > backup.sql
Ставь 👍 и забирай 📚 Базу знаний
💊4
Привет, на связи Таня Коровкина из ШОРТКАТ. Ментор по алгоритмам и backend-разработчик
Каждый месяц тысячи разработчиков совершают одни и те же ошибки на алгоритмических интервью 🚩
И продолжают готовиться... не к тому.
6 июля(понедельник) в 19:00 (МСК) проведу вебинар и покажу, что на самом деле оценивает интервьюер и какие ошибки чаще всего приводят к отказу
• дам практические советы, которые можно использовать уже на следующем собеседовании
• расскажу про специфику российского BigTech
🤘 Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как импортировать всё содержимое модуля?
Через конструкцию from module import *, но этот способ может привести к конфликтам имён, поэтому не рекомендуется в больших проектах.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Через конструкцию from module import *, но этот способ может привести к конфликтам имён, поэтому не рекомендуется в больших проектах.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
АЙТИШНИКИ, ХВАТИТ сливать время на прилизанные новости и бесполезные курсы
Проект «ИИнтеллигенция» стал главным каналом для тех, кто использует нейросети на уровне разработки, автоматизации и опенсорса, а не просто балуется в чатах. Здесь собирают только то, что реально экономит человеко-часы и работает в проде.
🎓 Готовые ИИ-сервисы, промпты и ИИ-агенты для автоматизации рутины
📚 Разборы полезных ИИ-инструментов, локальных LLM и опенсорс-репозиториев
🛠 Практические кейсы, гайды по деплою моделей и интеграции ИИ в пайплайны
⚡️ Технические ИТ-новости без маркетинговой воды и душных отчетов
Обучение и прокачка в реальном времени: работа с API (Claude, GPT), локалки (Ollama, vLLM), автоматизация кода, опенсорс-утилиты, AI-агенты и др.
Ценишь время и работаешь с ИИ, подпишись: @clucai
Проект «ИИнтеллигенция» стал главным каналом для тех, кто использует нейросети на уровне разработки, автоматизации и опенсорса, а не просто балуется в чатах. Здесь собирают только то, что реально экономит человеко-часы и работает в проде.
🎓 Готовые ИИ-сервисы, промпты и ИИ-агенты для автоматизации рутины
📚 Разборы полезных ИИ-инструментов, локальных LLM и опенсорс-репозиториев
🛠 Практические кейсы, гайды по деплою моделей и интеграции ИИ в пайплайны
⚡️ Технические ИТ-новости без маркетинговой воды и душных отчетов
Обучение и прокачка в реальном времени: работа с API (Claude, GPT), локалки (Ollama, vLLM), автоматизация кода, опенсорс-утилиты, AI-агенты и др.
Ценишь время и работаешь с ИИ, подпишись: @clucai
🤔 Что такое блокировки (локи) в БД?
Блокировка (lock) — это механизм, который предотвращает одновременный доступ к данным разными транзакциями, чтобы избежать конфликтов, повреждения данных или "гонки" процессов.
Представь, что два человека редактируют один и тот же документ. Если они начнут менять его одновременно, файл может испортиться. Блокировки в БД работают так же — если один процесс изменяет данные, другой должен подождать, пока первый закончит.
🚩Почему нужны блокировки?
🟠Гарантия целостности данных
предотвращает одновременные изменения одних и тех же строк.
🟠Избегание гонки данных (race condition)
когда два запроса пытаются изменить одно и то же значение.
🟠Изоляция транзакций
разные операции не мешают друг другу.
🚩Виды блокировок в БД
🟠По уровню охвата данных
Строчная (Row Lock) – блокирует только одну строку таблицы.
Табличная (Table Lock) – блокирует всю таблицу целиком.
Блокировка всей базы (Database Lock) – редко используется, но блокирует всю БД.
🟠По типу блокировки
Эксклюзивная (Exclusive, X-Lock) – блокирует запись для всех (никакие другие операции её не изменят).
Разделяемая (Shared, S-Lock) – блокирует только на запись (чтение возможно).
🟠Явные и неявные блокировки
Явные (ручные) – задаются программистом (
Неявные (автоматические) – создаются СУБД при
🚩Проблемы с блокировками
🟠Deadlock (взаимная блокировка)
Если два запроса ждут друг друга, система "зависает". Решение: правильный порядок выполнения транзакций.
🟠Долгие блокировки
Если транзакция не закрывается (
🟠Снижение производительности
Чем больше блокировок, тем медленнее работа БД.
Ставь 👍 и забирай 📚 Базу знаний
Блокировка (lock) — это механизм, который предотвращает одновременный доступ к данным разными транзакциями, чтобы избежать конфликтов, повреждения данных или "гонки" процессов.
Представь, что два человека редактируют один и тот же документ. Если они начнут менять его одновременно, файл может испортиться. Блокировки в БД работают так же — если один процесс изменяет данные, другой должен подождать, пока первый закончит.
🚩Почему нужны блокировки?
🟠Гарантия целостности данных
предотвращает одновременные изменения одних и тех же строк.
🟠Избегание гонки данных (race condition)
когда два запроса пытаются изменить одно и то же значение.
🟠Изоляция транзакций
разные операции не мешают друг другу.
🚩Виды блокировок в БД
🟠По уровню охвата данных
Строчная (Row Lock) – блокирует только одну строку таблицы.
Табличная (Table Lock) – блокирует всю таблицу целиком.
Блокировка всей базы (Database Lock) – редко используется, но блокирует всю БД.
BEGIN;
SELECT * FROM users WHERE id = 1 FOR UPDATE; -- Блокирует строку, пока транзакция не завершится
🟠По типу блокировки
Эксклюзивная (Exclusive, X-Lock) – блокирует запись для всех (никакие другие операции её не изменят).
Разделяемая (Shared, S-Lock) – блокирует только на запись (чтение возможно).
BEGIN;
UPDATE users SET balance = balance - 100 WHERE id = 1;
-- Пока транзакция не завершится, другая транзакция не сможет изменить balance пользователя 1.
🟠Явные и неявные блокировки
Явные (ручные) – задаются программистом (
SELECT ... FOR UPDATE). Неявные (автоматические) – создаются СУБД при
INSERT, UPDATE, DELETE. 🚩Проблемы с блокировками
🟠Deadlock (взаимная блокировка)
Если два запроса ждут друг друга, система "зависает". Решение: правильный порядок выполнения транзакций.
🟠Долгие блокировки
Если транзакция не закрывается (
COMMIT/ROLLBACK), другие запросы ждут бесконечно. Решение: короткие транзакции, автоматическое завершение. 🟠Снижение производительности
Чем больше блокировок, тем медленнее работа БД.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Что такое транзакция?
Транзакция — это набор операций с базой данных, выполняющихся как единое целое. Она гарантирует выполнение принципов ACID (атомарность, согласованность, изолированность, долговечность). При сбое все изменения откатываются.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний