Learn to Code the Hard Way. This is good, old school, exercise-based learning. About as subtle as any man after 4 beers, Learn To Code the Hard Way sets out a linear progression of exercises to help you come to terms with the subject.
I love this view on SQL:
The problem with SQL is it seems everyone hates its guts. It is a weird obtuse kind of “non-language” that most programmers can’t stand … SQL just laughs in your face and gives you a massive flat table saying, “You figure it out bro.”