To answer the first question: "Wrongly taken".
fp is declarative in the shallow sense of being immutable. But you can't just state what you want (e.g. what constraint programming languages enable); you must write a program. If fp is also declarative, what word is left for describing what I mean? Thus: misappropriation.
Not "Turing completeness", "Turing equivalence". Many very simple systems are turing equivalent, so they can exhibit arbitrary complexity.
A mapping, from what you have to what you want, is an example of declarative programming. WYSIWYG is declarative.
[But arguably this makes "declarative programming" an oxymoron... or we must call html a "programming" language]
Yes, SQL is a lot more declarative; the underlying relational algebra perhaps also is. Something that I'd personally like is a term for systems that enable you to specify the outcome as-is, rather than a composition of steps to achieve it. Perhaps I just want a word for this. I'll give an example:
(a+b)(x+y) -> ax+bx+ay+by
(declarative: "fully expanded form")
(a+b)(x+y) -> a(x+y)+b(x+y) -> ax+ay+b(x+y) -> ax+bx+ay+by
(steps: "distribute (x+y), distribute a, distribute b")
[1] I agree with wikipedia here:
programs describe their desired results without explicitly listing commands or steps that must be performed.but not in the next sentence: Functional and logical programming languages are characterized by a declarative programming style.
because functional programs specify steps to be performed e.g. g(f(x)) rather than a state of affairs to be attained.
[2] Unfortunately I don't have time to fully read the SO question right now, but I note it's closed and there seems much contention in the comments.