Это на самом деле преувеличивает разницу.Нет четкой точки, в которой один рассказывает, как все делается, а другой - только то, что он делает.Скорее, может потребоваться указать, что / как делается с большей детализацией, чем другие.Типичная реализация SQL позволяет пользователю контролировать такие вещи, как то, какие индексы используются (или игнорируются), какие блокировки делать и т. Д.
Если вы выполняете ту же работу в C, вы(в какой-то момент) придется указывать гораздо больше деталей (если вы не использовали что-то вроде ODBC).Тем не менее, вы все еще рассказываете, что должно быть сделано, а не все детали того, как это должно быть сделано (например, несмотря на то, что, как минимум, на уровне ассемблера, как минимум, на языке ассемблера, C все равно автоматически выполнит некоторые преобразования типов, поэтомуне нужно рассказывать, как сделать что-то, например, добавить целое число к числу с плавающей запятой - вы просто скажете ему добавить их, и он обработает детали).
Итог: попытка поговорить оодин как процедурный, а другой как непроцедурный вводит в заблуждение.SQL не всегда требует столько подробностей, но это разница в степени, а не "как" и "что".