Откройте для себя удивительные параллели между 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, чтобы увидеть больше подобного контента