На уровне определения C - это процедурный язык, а SQL - в значительной степени декларативный язык. Вы знаете о процедурных языках - программист говорит компьютеру, что делать. Или, другими словами, программист определяет процедуру, которую компьютер выполняет (надеюсь) для выполнения какой-то задачи.
Декларативный язык, напротив, говорит компьютеру, что производить. Вместо того, чтобы определять процедуру, программист определяет результат, которого они пытаются достичь. Сам язык был предварительно запрограммирован, чтобы найти правильную процедуру для получения определенного результата.
Существует много декларативных компьютерных языков, из которых, вероятно, наиболее известен SQL. В общем, они основаны на математике, которая является обобщенным декларативным языком. Как уже отмечали другие, SQL основан на теории множеств. В частности, он основан на очень мощной реляционной модели , определенной Эдгаром Коддом. Хотя о теории, лежащей в основе SQL (и СУБД в целом), можно сказать много, она сводится к простой идее использования таблиц для определения отношений между данными.
Единственный поворот идеи о том, что SQL является декларативным языком, состоит в том, что каждое утверждение также имеет процедурный элемент. Для иллюстрации:
SELECT x FROM table WHERE y = 0;
SELECT x
- это процедура выбора (или выбора) подмножества. FROM table
определяет, над какими отношениями (или таблицами) работать. WHERE y = 0
- декларативная часть заявления. Он определяет подмножество данных, с которыми будут работать.
Между тем C имеет некоторые декларативные функции. Например:
A = x*y;
В этом случае вы не говорите компьютеру, как умножить два числа. Вместо этого вы запрашиваете у компьютера результат, а компилятор C определяет процедуру для выполнения задачи.