SQL Ready | Базы Данных
15.4K subscribers
1.21K photos
68 videos
2 files
592 links
Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3QREBc

Реклама на бирже: https://telega.in/c/sql_ready
Download Telegram
🖥 Использование оконных функций: ROW_NUMBER, RANK, DENSE_RANK

Оконные функции позволяют выполнять вычисления над набором строк, связанным с текущей строкой, без агрегации результата.

Это полезно для присвоения уникальных номеров строкам и ранжирования значений в пределах определенной группы.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🤝6😁4
This media is not supported in your browser
VIEW IN TELEGRAM
Falcon — это бесплатное приложение с открытым исходным кодом для подключения баз данных SQL и создания визуализаций и аналитических панелей в режиме реального времени.

📌 Ссылочка: https://github.com/plotly/falcon

➡️ SQL Ready | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3🤝3
🖥 Как эффективно управлять результатами запросов c помощью LIMIT и OFFSET

Если вы работаете с большими объёмами данных и хотите получать только нужное, а не грузить всё подряд, SQL операторы LIMIT и OFFSET — то что нужно!

• LIMIT ограничивает количество возвращаемых строк, идеально для получения выборки.

• OFFSET пропускает определённое число строк, удобен для организации постраничного вывода.


🔥 — если узнал новое
🤝 если уже пользовался

➡️ SQL Ready | #оператор
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🤝6👍5👎1
🖥 Шпаргалка по подзапросам и агрегатным функциям SQL

Шпаргалка по подзапросам и агрегатным функциям SQL включает основные приёмы использования подзапросов и методов для вычисления сумм, средних, подсчётов и других операций над данными, упрощая анализ и обработку информации в запросах.

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍5
🖥 Будьте осторожны с NULL в SQL-запросах

NULL в SQL обозначает отсутствие значения и может привести к неожиданным результатам. Разберём несколько подводных камней.


NULL в условиях WHERE
Представим таблицу employees, где столбец department может быть NULL, если сотрудник не распределён. Запрос:
SELECT * FROM employees WHERE department != 'HR';


На первый взгляд, этот запрос должен выбрать всех, кто не в HR, но строки с NULL будут исключены! Сравнение NULL != 'HR' даёт неопределённый результат (UNKNOWN), из-за чего строки не включаются в выборку.

Как правильно учитывать NULL?

Используйте IS DISTINCT FROM или COALESCE, чтобы учитывать NULL:
SELECT * FROM employees WHERE department IS DISTINCT FROM 'HR';
-- или
SELECT * FROM employees WHERE COALESCE(department, '') != 'HR';
NULL в агрегатах


В таблице sales столбец discount может содержать NULL, если скидка не применялась. Если посчитать среднее значение:
SELECT AVG(discount) FROM sales;


NULL-значения будут проигнорированы, и средняя скидка может быть искажена. Используйте COALESCE:
SELECT AVG(COALESCE(discount, 0)) FROM sales;


Поэтому не спускайте глаз с NULL, чтобы избежать неожиданных результатов в фильтрации и агрегатах.

Жми 🔥 если понравился пост

SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34👍11🤝5
📖 SQL Pocket Guide

Компактное справочное пособие, охватывающее основные операторы и функции SQL, что делает его идеальным для быстрого поиска информации в повседневной работе.

Автор: Элис Жао
Год: 2024


⬇️ Cкачать книгу

➡️ SQL Ready | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6
🖥 Временные таблицы

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

• Создание временной таблицы
• Обновление данных в таблице
• Удаление временной таблицы


Временные таблицы упрощают работу с временными данными в сложных SQL-запросах.

🔥 — если узнал новое
🤝 — если уже пользовался

SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20🤝7👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Vanna AI — нейросеть, которая позволяет пользователям взаимодействовать с базами данных с помощью простого языка, автоматически переводя запросы на SQL.

📌 Ссылочка: https://vanna.ai/

➡️ SQL Ready | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5
🖥 Ускорение SQL-запросов с помощью индексов

Когда мы работаем с большими таблицами в SQL, использование индексов может значительно ускорить выполнение запросов, но их неправильное применение часто приводит к обратному эффекту.

Во-первых не всегда полезно устанавливать индекс, на каждый столбец этого делать уж точно не стоит. Каждый раз, когда мы используем INSERT, UPDATE или DELETE, СУБД обновляет все индексы, что увеличивает затраты на производительность.

Оптимальным решением будет индексировать только ключевые столбцы, часто используемые в фильтрах WHERE или JOIN.
   -- Пример: индексирование часто используемого столбца
CREATE INDEX idx_user_age ON users(age);

-- Избыточный индекс на редко используемый столбец
CREATE INDEX idx_user_gender ON users(gender);


B-Tree и Hash-индексы. Стандартный B-Tree индекс эффективен для сортировки и диапазонных запросов (например, BETWEEN). Но для точных соответствий = Hash-индексы могут быть предпочтительнее:
   -- B-Tree индекс для диапазонных значений
CREATE INDEX idx_order_date ON orders(order_date);

-- Hash-индекс для точного поиска
CREATE INDEX idx_product_id_hash ON products USING HASH (product_id);


И еще момент, если у нас выходит сложный запрос WHERE, то важно учитывать порядок полей. Например, индекс на (col1, col2) будет эффективен, если col1 используется в фильтре или сортировке перед col2.
   -- Создаем композитный индекс
CREATE INDEX idx_comp_col1_col2 ON table_name(col1, col2);

-- Запрос, использующий оба поля индекса
SELECT * FROM table_name WHERE col1 = 'value' AND col2 = 'value';

-- Запрос, где используется только col2, неэффективен
SELECT * FROM table_name WHERE col2 = 'value';

В последнем запросе композитный индекс не будет использоваться оптимально, если col2 идет вторым в индексе.

Ставь 🔥 за полезный кусок знаний

SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥11