I was a programmer and database administrator for over 20 years in industry. I have also had years of experience teaching programming languages and SQL.
I think learning should be fun and interesting, and prefer a hands on approach to programming. You need to actually write code to understand the language.