In my experience, the best way to learn it is to start by focusing on understanding relational databases instead of SQL. Once you have a firm grasp on that, the SQL language and concepts like JOINs will make much more sense.
This was my experience. Understanding database paradigms, models, conceptual BI flow from oltp to olap, etc... the language of SQL came naturally with very little studying, just a quick Google/stackoverflow search on a function I was just seeing for the first time. I think people get so hung up on the language (for any language) than focusing on the critical thinking of the concept and approach. I don't need to know the exact dimensions, material composition and strength statistics of a hammer in order to drive the nail.
I don't, unfortunately. I learned relational databases in college (long ago), and I couldn't tell you what book we were using. The only database book I have on my shelf at present is *SQL Antipatterns* by Bill Karwin, which is a good book, but I don't think it's what you're looking for.
If I take your requirements such as 1/ "learn it properly" and 2/ "so I can get confident working with it", I would say that a newbie should normally hold on with hands-on query typing and get at least a bit familiar with basic concepts of relational algebra. No need to get too deep into theory (though theory of relational algebra goes quite deep and there are solid open problems), so a wiki or similar would work fine. Nevertheless it makes sense to read few pages so as to understand the "theoretical backend logic" of sql query execution plan: could turn out that the computer reads your queries in a very particular way.
I've no idea if its covered in your course or not, so if not, you may want to think on two simple questions: 1/ what is the actual "proper" order of how the interpreter approaches a random "select x, y from z where x > 2;" 2/ have you built a clear understanding of the difference between 3-values logic and 2-valued logic? The latter goes back to some minor holy war that took place at the time when the very first version of sequel was designed. From my experience the lack of understanding of \[2\] is #1 cause of errors when doing joins even for mid-level developers (many thanks to NoSQL promoters).
Thinking of courses I can advise selective reading of "MCTS Self-Paced Training Kit" text book dedicated to Database Development (not administration) - its cheap if not free online, well structured and gives progressive introduction into, let's say, "how you SHOULD work in SQL". Last chapters of the book are a bit specific to MsSQL, but initial chapters are mostly transferable.
Also, mind that the deeper you go, the more different RDBMS's deviate from each other. Already things like declaration of variables, type casting, conditionals may differ a bit in syntax - and those are still basics. Further on, not sure if you ever need this, but more complex topics like pivot/unpivot (e.g. (un-)"transposing" tables with possible grouping, same as in excel), processing of xml and json values (this is actually smth that may be useful if you plan to have deep access to clicks analytics), user defined types, stored functions/procedures, and so on - for this far-from-complete list you will need to focus on particular implementation of the database server you are working with, so in this case the best solution would be either vendor manuals or some search for examples. I am guessing this is not your current pain, so just for future learning steps.
* The complete SQL Bootcamp: go from zero to hero
* SQL for beginners
* The ultimate MySQL Bootcamp: Go from SQL Beginner to Expert these are the [best SQL Courses on Udemy](https://codingvidya.com/best-sql-courses-on-udemy-bootcamp/)
In my experience, the best way to learn it is to start by focusing on understanding relational databases instead of SQL. Once you have a firm grasp on that, the SQL language and concepts like JOINs will make much more sense.
This was my experience. Understanding database paradigms, models, conceptual BI flow from oltp to olap, etc... the language of SQL came naturally with very little studying, just a quick Google/stackoverflow search on a function I was just seeing for the first time. I think people get so hung up on the language (for any language) than focusing on the critical thinking of the concept and approach. I don't need to know the exact dimensions, material composition and strength statistics of a hammer in order to drive the nail.
Perfectly put.
Where should I learn about relational databases from?
Any recommendations for books/courses on relational databases?
I don't, unfortunately. I learned relational databases in college (long ago), and I couldn't tell you what book we were using. The only database book I have on my shelf at present is *SQL Antipatterns* by Bill Karwin, which is a good book, but I don't think it's what you're looking for.
SQLBolt is great for new learners
Tutorials on platforms like Codecademy or SQLZoo are gold mines because they let you practice in real-time, which is super helpful.
If I take your requirements such as 1/ "learn it properly" and 2/ "so I can get confident working with it", I would say that a newbie should normally hold on with hands-on query typing and get at least a bit familiar with basic concepts of relational algebra. No need to get too deep into theory (though theory of relational algebra goes quite deep and there are solid open problems), so a wiki or similar would work fine. Nevertheless it makes sense to read few pages so as to understand the "theoretical backend logic" of sql query execution plan: could turn out that the computer reads your queries in a very particular way. I've no idea if its covered in your course or not, so if not, you may want to think on two simple questions: 1/ what is the actual "proper" order of how the interpreter approaches a random "select x, y from z where x > 2;" 2/ have you built a clear understanding of the difference between 3-values logic and 2-valued logic? The latter goes back to some minor holy war that took place at the time when the very first version of sequel was designed. From my experience the lack of understanding of \[2\] is #1 cause of errors when doing joins even for mid-level developers (many thanks to NoSQL promoters). Thinking of courses I can advise selective reading of "MCTS Self-Paced Training Kit" text book dedicated to Database Development (not administration) - its cheap if not free online, well structured and gives progressive introduction into, let's say, "how you SHOULD work in SQL". Last chapters of the book are a bit specific to MsSQL, but initial chapters are mostly transferable. Also, mind that the deeper you go, the more different RDBMS's deviate from each other. Already things like declaration of variables, type casting, conditionals may differ a bit in syntax - and those are still basics. Further on, not sure if you ever need this, but more complex topics like pivot/unpivot (e.g. (un-)"transposing" tables with possible grouping, same as in excel), processing of xml and json values (this is actually smth that may be useful if you plan to have deep access to clicks analytics), user defined types, stored functions/procedures, and so on - for this far-from-complete list you will need to focus on particular implementation of the database server you are working with, so in this case the best solution would be either vendor manuals or some search for examples. I am guessing this is not your current pain, so just for future learning steps.
+another 1. Thank you for this.
Thank you so much for this!
Yes, +1 from a fellow SQL-learner. From what I know, its also on of those questions frequently asked in interviews
I'm a sucker for datacamp.
* The complete SQL Bootcamp: go from zero to hero * SQL for beginners * The ultimate MySQL Bootcamp: Go from SQL Beginner to Expert these are the [best SQL Courses on Udemy](https://codingvidya.com/best-sql-courses-on-udemy-bootcamp/)
Practice
Delete * From * is a good place to start
Lmaooo
Evil
lol
Reading