Ответ
SQL — это декларативный язык.
Это одно из его фундаментальных свойств. Разница заключается в подходе к описанию задачи:
Декларативный подход (SQL): Вы описываете, ЧТО вы хотите получить в результате. Вы не указываете, как именно базе данных это сделать.
- Аналогия: Вы заказываете в ресторане «стейк средней прожарки», не объясняя повару, как разжигать гриль и сколько минут жарить мясо с каждой стороны.
Императивный подход (Go, Python, C++): Вы описываете, КАК шаг за шагом достичь результата. Вы даете компьютеру последовательность команд.
- Аналогия: Вы даете повару пошаговую инструкцию: «возьми мясо, посоли, поперчи, положи на гриль, жарь 2 минуты, переверни...»
Пример:
SELECT name, age FROM users WHERE status = 'active';
В этом запросе мы декларируем, что нам нужны name
и age
активных пользователей. Мы не указываем, должна ли СУБД использовать индекс по полю status
, проводить полное сканирование таблицы или применять какой-то другой алгоритм. СУБД сама решает, как оптимальнее выполнить этот запрос.
Примечание: В современных СУБД существуют процедурные расширения (например, PL/SQL в Oracle, T-SQL в MS SQL Server), которые добавляют в SQL императивные конструкции (циклы, условия, переменные), но ядро самого языка SQL остается декларативным.