Откройте для себя удивительные параллели между CTE в SQL и функциями в кодировании и то, как они могут повысить вашу производительность

Введение

Вы когда-нибудь замечали, что некоторые концепции кодирования имеют параллели с другими концепциями кодирования, даже если они используются в разных языках или контекстах? Как будто они являются частью универсального языка, на котором говорят разработчики. Одним из примеров этого является удивительное сходство между общими табличными выражениями (CTE) в SQL и функциями в кодировании. В этой статье мы исследуем параллели между CTE в SQL и функциями в кодировании.

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



Возможность повторного использования

CTE и функции служат схожим целям в соответствующих областях — они способствуют повторному использованию, инкапсуляции и имеют входные и выходные данные. Например, CTE можно создать один раз и использовать несколько раз в рамках одного оператора SQL. Это уменьшает дублирование кода и делает код более удобным для сопровождения и более легким для чтения.

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

Инкапсуляция

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

Функции могут иметь свои собственные локальные переменные, недоступные за пределами функции, а CTE могут иметь собственный временный набор результатов, недоступный за пределами CTE. Это делает код более модульным и его легче тестировать.

Входы и выходы

Наконец, CTE и функции имеют как входные, так и выходные данные. Функции могут принимать параметры в качестве входных данных и возвращать значение в качестве выходных данных, в то время как на CTE можно ссылаться в последующих частях инструкции SQL в качестве входных данных и создавать результирующий набор в качестве выходных данных. Это еще больше подчеркивает их возможность повторного использования и модульность.

Например, вот функция на Python, которая принимает два числа в качестве входных данных и возвращает их сумму:

def add_numbers(a, b):
  return a + b

А вот CTEв SQL, который вычисляет общий объем продаж для каждого продукта:

WITH product_sales AS (
  SELECT product_name, SUM(sales_amount) as total_sales
  FROM sales
  GROUP BY product_name
)
SELECT *
FROM product_sales;

В этом примере функция «add_numbers» принимает два числа в качестве входных данных и возвращает их сумму в качестве выходных данных, а CTE «product_sales» принимает в качестве входных данных таблицу «продажи» и создает временный набор результатов, который можно использоваться в последующем операторе SELECT.

Заключение

CTE в SQL и функции в программировании могут показаться совершенно разными понятиями, но на самом деле они имеют много общего. Поняв эти параллели, вы сможете повысить свою производительность и эффективность как в программировании, так и в SQL. Поэтому в следующий раз, когда вы столкнетесь с новой концепцией кодирования, подумайте о том, как она может быть связана с чем-то, что вы уже знаете, — вы можете обнаружить новую параллель!

Если вам интересно узнать больше о том, как CTE сравниваются с подзапросами, ознакомьтесь с нашей статьей по теме Зачем использовать CTE вместо подзапросов — SQL.



Спасибо, что прочитали мою статью! Если вы нашли это полезным, подпишитесь на меня на Medium, чтобы увидеть больше подобного контента

Эта история — лишь одна из тысяч, публикуемых каждый день невероятными писателями на Medium. Подумайте о присоединении по моей реферальной ссылке, чтобы получить полный доступ ко всем историям, которые может предложить сообщество.