SQL Portal | Базы Данных
13.1K subscribers
551 photos
71 videos
41 files
461 links
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
Столбцы с типами JSON и JSONB удобны, когда нужно хранить произвольные данные без строгой схемы. Но иногда хочется добавить хоть какую-то валидацию структуры.

Для этого можно использовать расширение pg_jsonschema — оно позволяет задавать JSON-схему и тем самым контролировать структуру данных в таких столбцах.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2
Уже пробовал https://sql-workbench.com?

Запускай SQL-запросы к удалённым и локальным данным — таким как CSV, JSON и Parquet и визуализируй результат прямо в браузере, через duckdb в WebAssembly (WASM).

Удобно для быстрой аналитики без поднятия сервера или установки чего-либо. 😎

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Комментарии к столбцам в Postgres — это удобный способ документировать назначение столбца прямо внутри базы данных. Часто именно здесь уместно указывать уровень чувствительности данных.

Добавить комментарий к столбцу можно простой SQL-командой:

COMMENT ON COLUMN customers.ssn IS 'This is Sensitive PII';

Комментарии хранятся как часть внутренней схемы таблицы. Самый простой способ их посмотреть — использовать команду:

\d+ customers


👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1
Проверь свои знания Oracle SQL в режиме Speed SQL

У тебя есть 60 секунд, чтобы угадать пропущенные ключевые слова (????) в 10 SQL-выражениях.

Сможешь ли справиться со всеми?

https://devgym.oracle.com/pls/apex/f?p=10001:5000

Возвращайся каждый день — тебя ждут новые задания.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Interview Query — это платформа для подготовки к собеседованиям, особенно ориентированная на data science, аналитику, machine learning и продуктовую аналитику.

> SQL-задачи
> Статистику и вероятности
> A/B-тестирование
> Вопросы по моделям машинного обучения
> Продуктовые кейсы

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Шпаргалка по оптимизации SQL

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Совет по Postgres: клонирование схемы с помощью CREATE TABLE LIKE.

В Postgres есть удобный способ создать таблицу с той же схемой, что и у другой таблицы:

CREATE TABLE new_table (LIKE existing_table INCLUDING ALL);


Ключевое слово INCLUDING ALL гарантирует, что будут скопированы все атрибуты схемы:

> определения столбцов
> типы данных
> ограничения (включая первичные ключи, уникальные и check-ограничения)
> индексы
> параметры хранения

То есть копируется всё, кроме самих данных.

Когда это может пригодиться:

🔸для создания резервной схемы и тестирования изменений над продакшен-таблицей
🔸для создания временной таблицы с той же структурой — например, для staging или трансформации данных
🔸при архивировании — чтобы структура архивной таблицы соответствовала оригинальной
🔸чтобы обеспечить一 cогласованностьность схем у связанных таблиц

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍21
Разработчики старой школы, новой школы, вайбкодеры — все обожают regex. Это же идеальный инструмент для работы с текстом и переменными. В Postgres отличная поддержка регулярных выражений. Вот примеры запросов на поиск и замену текста.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Оконные функции в Postgres — это супер

С помощью SQL можно быстро:

🔸Считать накопительные суммы
🔸Строить агрегаты по группам / партициям
🔸Создавать рейтинги и ранжирование
🔸Делать lag/lead-анализ — сравнивать значения из разных строк
🔸Вычислять скользящие (moving/rolling) средние

Вот практический туториал

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
pg_eventserv: передача событий Postgres LISTEN/NOTIFY в WebSocket-соединения.

https://github.com/crunchydata/pg_eventserv

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Отслеживай отношения родитель–потомок в Oracle SQL с помощью CONNECT BY:

SELECT ...
FROM ...
START WITH <корневая_запись>
CONNECT BY PRIOR parent_row = child_row


Полезные вспомогательные функции:

🔸LEVEL — глубина текущей строки в иерархии
🔸CONNECT_BY_ISLEAF — возвращает 1, если у строки нет потомков
🔸SYS_CONNECT_BY_PATH — путь от корня до текущей строки

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
Почему Postgres становится таким популярным для AI-нагрузок?

Нам не раз задавали этот вопрос — и мы понимаем почему: 30-летняя реляционная СУБД на первый взгляд не выглядит как инструмент, созданный для мира ИИ.


Но вот почему Postgres активно набирает популярность в AI-сфере:

Интеграция AI с существующей или новой data-инфраструктурой
AI-приложения, как правило, работают с уже существующими структурированными данными — пользователи, клиенты, продукты, транзакции и т.д.
Postgres позволяет объединять эмбеддинги и выходные данные моделей с реляционными таблицами, чтобы строить AI-инструменты поверх существующих систем.

Поддержка векторных типов данных
Расширение pgvector добавляет хранение эмбеддингов прямо в Postgres. Это зрелое, проверенное решение, поддерживаемое большинством поставщиков и пользователей Postgres.
pgvector также предоставляет продвинутые стратегии индексации (например, HNSW), которые ускоряют поиск и работу с векторами.

Готовность к продакшену
Postgres покрывает все требования бизнеса: бэкапы, connection pooling, высокая доступность.
Это значит, что на нём можно запускать cutting-edge AI-проекты на стабильной, зрелой платформе, готовой к реальной эксплуатации.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Материализованные представления (Materialized Views, MVs) хранят результаты запроса.

Основная проблема — поддержание их в актуальном состоянии.

Killianlynchh показывает, как материализованные представления в реальном времени (с параметром ON QUERY COMPUTATION в Oracle Database) позволяют получать актуальные данные, применяя изменения к устаревшим представлениям.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Вы можете использовать ORDER BY по столбцам, которых нет в SELECT-списке запроса.

...за исключением случая:

SELECT DISTINCT this FROM t ORDER BY that  --  некорректно!


Почему так?

DISTINCT удаляет дубликаты из выбранных значений и формирует новую таблицу,
поэтому доступны только те столбцы, что явно указаны в SELECT

Объяснение от Lukas Eder — blog.jooq.org

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43
Типы индексов в базах данных, которые должен знать каждый разработчик

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7
SQL TO-DO LIST для аналитика данных

Создание таблицы

CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary INT
);


Вставка данных в таблицу

INSERT INTO employees VALUES 
(1, 'John Doe', 'Finance', ...);


Базовый SELECT

SELECT name, salary 
FROM employees;


WHERE

SELECT * 
FROM employees
WHERE salary > 40000;


ORDER BY

SELECT * 
FROM employees
ORDER BY salary DESC;


LIMIT

SELECT * 
FROM employees
LIMIT 5;


🔸Advanced SQL Tasks (общие)

Запуск дашборда в Power BI / Tableau на SQL-данных

Выполнение SQL-запросов на датасетах:

> Chinook Database: https://github.com/lerocha/chinook-database
> IMDB data: https://imdb.com/interfaces/

🔸Intermediate SQL Tasks

Агрегатные функции

SELECT department, AVG(salary) 
FROM employees
GROUP BY department;


GROUP BY и HAVING

SELECT department, COUNT(*) 
FROM employees
GROUP BY department
HAVING COUNT(*) > 2;


JOIN

SELECT e.name, d.location 
FROM employees e
JOIN departments d
ON e.department = d.name;


Подзапросы

SELECT name 
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);


🔸Advanced SQL Tasks (продвинутые)

Оконные функции (Window Functions)

SELECT name, salary, 
RANK() OVER (
PARTITION BY department
ORDER BY salary DESC
) AS dept_rank
FROM employees;


CTE

WITH high_earners AS (
SELECT *
FROM employees
WHERE salary > 50000
)
SELECT *
FROM high_earners;


Очистка данных

SELECT TRIM(LOWER(name)) AS cleaned_name 
FROM employees;


👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥1
Полный список формул и ярлыков Excel.

1. Сумма диапазона
=SUM(A1:A5)


2. Сумма через "+"
=(A1+A2+A3+A4+A5)


3. Сумма констант
=(45+243+48)


4. Произведение диапазона
=PRODUCT(F1:F2)


5. Произведение ячеек
=(B3*B4*B5)


6. Произведение констант
=(34*65)


7. Вычитание
=(E3-E4)


8. Деление
=(F3/F4)


9. Проценты
=(G3/G4*100)


10. Максимум
=MAX(H3:M3)


11. Минимум
=MIN(H3:M3)


12. Возведение в степень
=POWER(2,4) → 16


13. Среднее значение
=AVERAGE(C3:C14)


14. Квадратный корень
=SQRT(25)


15. Подсчёт непустых ячеек
=COUNT(C4:P4)


16. Подсчёт пустых ячеек
=COUNTBLANK(C3:C16)


17. Подсчёт по условию
=COUNTIF(D4:Z4, "P")


18. Текущие дата и время
=NOW()


19. Сегодняшняя дата
=TODAY()


20. День месяца (текущий)
=DAY(NOW())


21. Месяц (текущий)
=MONTH(NOW())


22. Год (текущий)
=YEAR(NOW())


23. Вставить текущую дату
CTRL + ;


24. Вставить текущее время
CTRL + SHIFT + ;


25. Вставить текущие дату и время
CTRL + ; затем пробел, затем CTRL + SHIFT + ;


26. Проверка зачёта (IF)
=IF(H4>=400, "PASS", "FAIL")


👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍6