Найти в Дзене
Кодовые решения

SQL-функции: Твой секретный инструмент для работы с данными 🧙‍♂️💾

Привет, друзья! 👋 Сегодня я хочу рассказать вам о SQL-функциях — одной из тех вещей, которые сначала кажутся необязательными, а потом… БАМ! 💥 Ты понимаешь, что без них жить уже не можешь. Представьте: вы пишете один и тот же кусок SQL-кода снова и снова. 🔁 Может, это расчёт скидки, форматирование даты или сложная фильтрация. А что, если я скажу, что можно написать это один раз и потом просто вызывать, как волшебное заклинание? 🪄 Вот об этом и поговорим. SQL-функция — это как мини-программа внутри вашей базы данных 🖥️. Вы даёте ей входные данные, она что-то делает и возвращает результат. ✔️ Избегаем повторений — один раз написал, везде используешь.
✔️ Упрощаем запросы — вместо сложной логики в SELECT просто вызываем calculate_discount().
✔️ Легче поддерживать — если нужно поменять логику, правка делается в одном месте. Это как готовые инструменты в ящике: бери и используй. Если встроенных функций не хватает, делаем свои! Допустим, мы в PostgreSQL. Хотим функцию, которая считает НДС
Оглавление

Привет, друзья! 👋

Сегодня я хочу рассказать вам о SQL-функциях — одной из тех вещей, которые сначала кажутся необязательными, а потом… БАМ! 💥 Ты понимаешь, что без них жить уже не можешь.

Представьте: вы пишете один и тот же кусок SQL-кода снова и снова. 🔁 Может, это расчёт скидки, форматирование даты или сложная фильтрация. А что, если я скажу, что можно написать это один раз и потом просто вызывать, как волшебное заклинание? 🪄

Вот об этом и поговорим.

1️⃣ Что такое SQL-функции?

SQL-функция — это как мини-программа внутри вашей базы данных 🖥️. Вы даёте ей входные данные, она что-то делает и возвращает результат.

Зачем они нужны?

✔️ Избегаем повторений — один раз написал, везде используешь.
✔️
Упрощаем запросы — вместо сложной логики в SELECT просто вызываем calculate_discount().
✔️
Легче поддерживать — если нужно поменять логику, правка делается в одном месте.

2️⃣ Какие бывают SQL-функции?

🔧 Встроенные функции (те, что уже есть в SQL)

Это как готовые инструменты в ящике: бери и используй.

📜 Строковые функции (работа с текстом)

  • CONCAT() — склеивает строки.
-2
  • SUBSTRING() — вырезает часть строки ✂️.
  • UPPER() / LOWER() — переводит в верхний/нижний регистр 🔠.

🔢 Числовые функции

  • ROUND() — округляет числа ⏺️.
  • ABS() — модуль числа.
  • RAND() — случайное число 🎲.

📅 Функции даты и времени

  • NOW() — текущая дата и время 🕒.
  • DATE_ADD() — добавляет дни/месяцы/годы ⏩.
  • DATEDIFF() — разница между датами 📆.

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

  • SUM(), AVG(), COUNT() — считают сумму, среднее, количество ➕.

🛠️ Пользовательские функции (те, что создаём мы сами)

Если встроенных функций не хватает, делаем свои!

Как создать функцию?

Допустим, мы в PostgreSQL. Хотим функцию, которая считает НДС.

-3

Используем:

-4

Функции с условиями

Можно добавить логику! 🤖

-5

Вызов:

-6

3️⃣ Окей, а когда функции могут навредить? ⚠️

Не всё так радужно. Функции — это не всегда хорошо.

Когда лучше НЕ использовать функции?

В очень больших запросах — если функция вызывается миллион раз, это может замедлить работу 🐢.
Если логика простая — нет смысла выносить price * 0.9 в функцию.
Когда СУБД плохо оптимизирует — некоторые базы (например, MySQL) не всегда эффективно работают с пользовательскими функциями.

4️⃣ Продвинутые штуки: рекурсия и оконные функции 🚀

🌀 Рекурсивные функции (для деревьев и графов)

Допустим, у вас есть таблица категорий с вложенностью:

-7

Этот запрос выведет всё дерево категорий, начиная с корневой. 🌳

🪟 Оконные функции (аналитика без GROUP BY)

Хотите посчитать среднюю зарплату в каждом отделе без группировки?

-8

Оконные функции не схлопывают строки, а добавляют вычисления поверх. 📈

🎯 Итог: как начать использовать функции?

1️⃣ Найдите повторяющийся код 🔍 — если пишете одно и то же дважды, пора выносить в функцию.
2️⃣
Начните с простого 🏁 — например, функция для форматирования телефона.
3️⃣
Экспериментируйте 🧪 — попробуйте рекурсию или оконные функции.

P.S. А вы используете SQL-функции? Какие самые полезные создавали? Делитесь в комментах! 👇

Если понравилось — подписывайтесь, будет ещё больше SQL-магии! ✨🚀