>>890640
>>890021
>>889791
SQL is a declarative language, so programmers who are more familiar with imperative languages have trouble using it. You have to describe the data you want in the query, and system will choose what it thinks is the best way to retrieve the it. It's really different from writing step-by-step instructions to retrieve and manipulate data.
Being familiar with set math, normal forms, and when to use a relational database are all useful.
I've only had one bad client in my life. His original data wasn't normalized, so the relationships became irretrievably broken. I had to explain to him with simple examples why I couldn't fix it. On the next project, he insisted I use a relational database, but I warned him that it would be very slow to insert the amount of data he wanted, and the data wouldn't benefit from relationships anyways. Each of his projects failed due to his micromanagement and incompetence. He was a professor of data analysis.