Isn't SQL Turing complete? So imo the question of "how expressive is SQL" is really just "how expressive can SQL be with reasonably useful performance".
I don't think that vanilla SQL defined in older versions of the standard is actually Turing-complete. Most commercial releases included features that made it Turing complete, and my understanding is that the most recent standard includes enough from these features that it's now Turing-complete.
Sounds like the stuff my code refactoring nightmares are made of. The opposite case is funny too though: I've seen people who fetched and deserialized the entire SQL table and then manually SELECTed by looping over it with a foreach loop and picking the right record =)
They even had their own custom logic to do table JOINs. It involved fetching and deserializing both entire tables with SELECT *, of course.
From the answers here https://stackoverflow.com/questions/900055/is-sql-or-even-ts...
It seems that SQL92 was not Turing complete but it became turing complete later on. Possibly by the same extensions added in SQL3.