postgres-A4.pdf
16.3 MB
Полный перевод документации PostgreSQL на русский язык
Оригинальная англоязычная документация PostgreSQL и документация к СУБД Postgres Pro в вариантах Standard и Enterprise.
⛓ Ссылка: тык
👉 @SQLPortal
Оригинальная англоязычная документация PostgreSQL и документация к СУБД Postgres Pro в вариантах Standard и Enterprise.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4😁1
Игры, которые помогают изучать и практиковать SQL | Аналитика данных
Ссылки для доступа к играм:
1. SQL Island: https://sql-island.informatik.uni-kl.de/
2. SQL Murder Mystery: https://mystery.knightlab.com/
3. Полицейский департамент SQL: https://sqlpd.com/
4. The Schemaverse: https://schemaverse.com/
👉 @SQLPortal
Ссылки для доступа к играм:
1. SQL Island: https://sql-island.informatik.uni-kl.de/
2. SQL Murder Mystery: https://mystery.knightlab.com/
3. Полицейский департамент SQL: https://sqlpd.com/
4. The Schemaverse: https://schemaverse.com/
Please open Telegram to view this post
VIEW IN TELEGRAM
Knight Lab's SQL Murder Mystery
Use SQL queries to solve the murder mystery. Suitable for beginners or experienced SQL sleuths.
❤3
Совет по Postgres: используйте
Общий размер таблицы, включая индексы и TOAST:
32 kB
👉 @SQLPortal
pretty, чтобы видеть размеры таблиц в человекочитаемом формате; без него вы получите значения в байтах.Общий размер таблицы, включая индексы и TOAST:
SELECT pg_size_pretty(pg_total_relation_size('my_table'));32 kB
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Список с задачами для подготовки к SQL-интервью с различными базами данных:
1. [Database Basics](https://bit.ly/3zGK6S7)
2. [SQL Queries](https://bit.ly/3bGzN8r)
3. [MSSQL](https://bit.ly/3A5qIj0)
4. [MySQL](https://bit.ly/3bFkhtE)
5. [Postgres](https://bit.ly/3BOLLHP)
6. [Oracle](https://bit.ly/3zF2WsH)
👉 @SQLPortal
1. [Database Basics](https://bit.ly/3zGK6S7)
2. [SQL Queries](https://bit.ly/3bGzN8r)
3. [MSSQL](https://bit.ly/3A5qIj0)
4. [MySQL](https://bit.ly/3bFkhtE)
5. [Postgres](https://bit.ly/3BOLLHP)
6. [Oracle](https://bit.ly/3zF2WsH)
Please open Telegram to view this post
VIEW IN TELEGRAM
Функции
👉 @SQLPortal
pg_get_* — это встроенные функции интроспекции в Postgres.pg_get_viewdef — «Покажи SQL, лежащий за этим представлением»pg_get_indexdef — «Покажи CREATE INDEX для этого индекса»pg_get_constraintdef — «Покажи, как определён этот внешний ключ / check-ограничение»Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Master_SQL.pdf
754.9 KB
Руководство по SQL
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации
Сохраняйте, чтобы не потерять
👉 @SQLPortal
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации
Сохраняйте, чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM
Вчера мы говорили о функциях
👉 @SQLPortal
pg_get_*. Чтобы получить отформатированный SQL, передайте true вместо одной длинной нечитаемой строки.pg_get_viewdef — представленияpg_get_indexdef — индексыpg_get_constraintdef — ограниченияSELECT pg_get_viewdef('active_orders'::regclass, true);Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Этот репозиторий содержит все, что вам нужно, чтобы прокачать свои навыки работы с SQL
Более 100 упражнений и примеров по SQL.
⛓ Ссылка: тык
👉 @SQLPortal
Более 100 упражнений и примеров по SQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - Coder-World04/Complete-Advanced-SQL-Series: This repository contains everything you need to become proficient in Advanced…
This repository contains everything you need to become proficient in Advanced SQL - Coder-World04/Complete-Advanced-SQL-Series
👍2
Перенаправляете вывод
-
-
-
👉 @SQLPortal
psql куда-то ещё? В psql есть настройки, позволяющие сократить вывод до одиночных строк данных.psql -qtA-
-q — тихий режим-
-t — только строки (tuples only)-
-A — без выравнивания (unaligned)Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как сгруппировать строки в пачки (batch), где сумма не превышает заданное значение — прямо в Oracle SQL
Используйте
Например, можно разбить продажи по дате на группы, где суммарная выручка не превышает X.
Это похоже на "бин-пэкинг": ты просто собираешь строки в «ящики», пока сумма внутри ящика не превысит лимит
👉 @SQLPortal
Используйте
MATCH_RECOGNIZE:SELECT ... FROM ... MATCH_RECOGNIZE (
ORDER BY ...
MEASURES ...
PATTERN ( total+ )
DEFINE total AS SUM ( ... ) <= ...
)
Например, можно разбить продажи по дате на группы, где суммарная выручка не превышает X.
Это похоже на "бин-пэкинг": ты просто собираешь строки в «ящики», пока сумма внутри ящика не превысит лимит
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Руководство по стилю SQL
Последовательное руководство по стилю кода SQL для обеспечения разборчивости и сопровождения проектов
⛓ Ссылка: тык
👉 @SQLPortal
Последовательное руководство по стилю кода SQL для обеспечения разборчивости и сопровождения проектов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
pgcli — интерфейс командной строки для PostgreSQL
Его главные особенности — автодополнение и подсветка синтаксиса. Это позволяет упростить взаимодействие с базами данных.
Есть аналог для MySQL.
⛓ Ссылка: тык
👉 @SQLPortal
Его главные особенности — автодополнение и подсветка синтаксиса. Это позволяет упростить взаимодействие с базами данных.
Есть аналог для MySQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Сравнение с предыдущим. Решение.
Решение: использование
Если сформулировать обычным языком следующий запрос, то окажется, что он выражает следующую идею: нужно выбрать такие идентификаторы, чтобы температура, соответствующая представляемым ими датам, была бы больше, чем температура на «вчерашние» по отношению к ним даты.
👉 @SQLPortal
Решение: использование
DATEDIFF
DATEDIFF: эта функция вычисляет разницу между двумя датами. Она используется для того, чтобы обеспечить сравнение именно «сегодняшних» и «вчерашних» температур.Если сформулировать обычным языком следующий запрос, то окажется, что он выражает следующую идею: нужно выбрать такие идентификаторы, чтобы температура, соответствующая представляемым ими датам, была бы больше, чем температура на «вчерашние» по отношению к ним даты.
SELECT DISTINCT a.Id
FROM Weather a, Weather b
WHERE a.Temperature > b.Temperature
AND DATEDIFF(a.Recorddate, b.Recorddate) = 1
Please open Telegram to view this post
VIEW IN TELEGRAM
Вы можете использовать
...за исключением случая:
Почему так?
поэтому доступны только те столбцы, что явно указаны в
Объяснение от Lukas Eder — blog.jooq.org
👉 @SQLPortal
ORDER BY по столбцам, которых нет в SELECT-списке запроса....за исключением случая:
SELECT DISTINCT this FROM t ORDER BY that -- некорректно!
Почему так?
DISTINCT удаляет дубликаты из выбранных значений и формирует новую таблицу,поэтому доступны только те столбцы, что явно указаны в
SELECTОбъяснение от Lukas Eder — blog.jooq.org
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
SQL-приём, о котором мало кто знает
Знал ли ты, что внутри транзакции можно создавать контрольные точки с помощью SAVEPOINT? Вместо сценария, где при ошибке теряется вся работа.
SAVEPOINT позволяет зафиксировать точку внутри транзакции, к которой можно откатиться. Обычный откат отменяет всю транзакцию, а откат к SAVEPOINT возвращает состояние только до этой точки.
SAVEPOINT — это как контрольные точки в трубопроводе. Если проблема возникает дальше по потоку, можно локализовать последствия, вернувшись к последней стабильной точке, не останавливая всю систему.
Следующий код откатывает всё:
Если добавить SAVEPOINT, можно откатиться только к последней контрольной точке:
SAVEPOINT полезен, когда стоимость полного отката слишком высокая и выгоднее переиграть только часть транзакции. Даёт более гибкое управление транзакциями, особенно в сложных сценариях.
SAVEPOINT не устраняет ошибку, а ограничивает её последствия.
👉 @SQLPortal
Знал ли ты, что внутри транзакции можно создавать контрольные точки с помощью SAVEPOINT? Вместо сценария, где при ошибке теряется вся работа.
SAVEPOINT позволяет зафиксировать точку внутри транзакции, к которой можно откатиться. Обычный откат отменяет всю транзакцию, а откат к SAVEPOINT возвращает состояние только до этой точки.
SAVEPOINT — это как контрольные точки в трубопроводе. Если проблема возникает дальше по потоку, можно локализовать последствия, вернувшись к последней стабильной точке, не останавливая всю систему.
Следующий код откатывает всё:
BEGIN;
INSERT INTO orders VALUES (1, 'Laptop');
INSERT INTO payments VALUES (1, 'FAILED');
-- Здесь что-то пошло не так
ROLLBACK; -- Удалит И заказ, И платёж
Если добавить SAVEPOINT, можно откатиться только к последней контрольной точке:
BEGIN;
INSERT INTO orders VALUES (1, 'Laptop');
-- Создаём контрольную точку
SAVEPOINT before_payment;
INSERT INTO payments VALUES (1, 'FAILED');
-- Платёж не прошёл — откатываем только его
ROLLBACK TO SAVEPOINT before_payment;
-- Пробуем альтернативный способ оплаты
INSERT INTO payments VALUES (1, 'SUCCESS');
COMMIT;
SAVEPOINT полезен, когда стоимость полного отката слишком высокая и выгоднее переиграть только часть транзакции. Даёт более гибкое управление транзакциями, особенно в сложных сценариях.
SAVEPOINT не устраняет ошибку, а ограничивает её последствия.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Нужно быстро выгрузить данные?
Кейсы:
- Быстрый экспорт выборки без поднятия отдельного пайплайна или воркфлоу.
- Выгрузка данных для аналитики в CSV с последующей обработкой в pandas/BI.
- Отладка: снятие среза таблицы для локального воспроизведения бага.
- Миграции: подготовка данных перед переносом между окружениями.
- Интеграции: передача данных в сторонние системы через файл.
- Бэкап части данных по фильтру (например, последние 7 дней).
- Проверка гипотез: выгрузка подвыборки без нагрузки на основную систему.
👉 @SQLPortal
\copy записывает результат любого запроса в локальный файл.\copy (SELECT * FROM users WHERE created_at > now() - interval '7 days') TO '~/new_users.csv' WITH CSV HEADER
Кейсы:
- Быстрый экспорт выборки без поднятия отдельного пайплайна или воркфлоу.
- Выгрузка данных для аналитики в CSV с последующей обработкой в pandas/BI.
- Отладка: снятие среза таблицы для локального воспроизведения бага.
- Миграции: подготовка данных перед переносом между окружениями.
- Интеграции: передача данных в сторонние системы через файл.
- Бэкап части данных по фильтру (например, последние 7 дней).
- Проверка гипотез: выгрузка подвыборки без нагрузки на основную систему.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Для фоновых задач, таких как vacuum и создание индексов, Postgres использует специальное выделение памяти под названием
Если требуется ускорить выполнение задач, таких как:
> выполнение vacuum,
> создание индексов,
> создание индексов для материализованных представлений,
используйте:
Установите значение, которое предоставит вашим операциям больше памяти. По умолчанию используется 64MB. Этот параметр можно задать как глобально на уровне системы, так и локально для одной сессии.
👉 @SQLPortal
maintenance_work_mem. Обычные запросы используют work_mem, чтобы определить, сколько памяти может быть выделено на одну операцию или соединение.Если требуется ускорить выполнение задач, таких как:
> выполнение vacuum,
> создание индексов,
> создание индексов для материализованных представлений,
используйте:
SET maintenance_work_mem = '8GB';
Установите значение, которое предоставит вашим операциям больше памяти. По умолчанию используется 64MB. Этот параметр можно задать как глобально на уровне системы, так и локально для одной сессии.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Понимание порядка выполнения SQL-запроса критично для написания корректных и оптимизированных запросов.
Запомни последовательность: FROM и JOIN, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, затем LIMIT.
Освоение этого порядка ускоряет отладку и помогает мыслить как СУБД. #SQL #DataAnalytics #LearnSQL #Database
👉 @SQLPortal
Запомни последовательность: FROM и JOIN, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, затем LIMIT.
Освоение этого порядка ускоряет отладку и помогает мыслить как СУБД. #SQL #DataAnalytics #LearnSQL #Database
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3😁1
Сегодня мы изучим импорт и экспорт данных в SQL:
SQL предоставляет механизмы для импорта данных в базу данных и экспорта их во внешние файлы.
Импорт данных:
Использование команды INSERT INTO SELECT для импорта данных из одной таблицы в другую:
Экспорт данных:
Использование команды SELECT INTO OUTFILE для экспорта данных в файл:
Эти операции полезны для:
🔻 Переноса данных между базами данных.
🔻 Архивации данных.
🔻 Обмена информацией с другими системами.
👉 @SQLPortal
SQL предоставляет механизмы для импорта данных в базу данных и экспорта их во внешние файлы.
Импорт данных:
Использование команды INSERT INTO SELECT для импорта данных из одной таблицы в другую:
INSERT INTO destination_table (column1, column2)
SELECT column3, column4 FROM source_table;
Экспорт данных:
Использование команды SELECT INTO OUTFILE для экспорта данных в файл:
SELECT column1, column2 INTO OUTFILE 'file_path.csv'
FIELDS TERMINATED BY ',' FROM table_name;
Эти операции полезны для:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2