Thursday, May 22, 2014

Day 9: More complex SQL queries and Intro to MongoDB and other NoSQL databases

Every time I sit down and write another blog post reflecting on what I've learned that day. I can't help but be amazed at the speed at which I'm picking up these topics. One of my classmates who's had a lot of experience with SQL was telling me, "You guys have no idea how much time Michael Choi has saved you because he's not teaching you useless junk that you'll never use." When self-learning, it's really easy to get lost in the mess. The quality of documentation varies highly with some being unnecessarily verbose and some being completely useless. Tutorials are extremely hard to come by. There is lots of value in fully immersing yourself into this.

Back to the topic of SQL queries. Take a look at the screenshot below. If you see on the upper left, you see how complex relationships can be. Often when you want to grab two pieces of matching information, you have to connect multiple tables together and filter the information as necessary. 



Repetition really is key when learning new things and coding is no different. Sure there's a way to learn the concept. But when you make your skills applicable, you have to do it over and over again to build that muscle memory. I'm proud to say that doing SQL queries over 8 hours today, I am very proficient and only refer to my notes on complex situations. Other than that I can write basic SQL queries effortlessly. This skill may not seem very useful, but it will be once you can have your application write to the database dynamically.


Here is just another screen shot where you can see that my queries are becoming much more complex depending on how specific we want the data to be returned. This topic was very dry when I first started but now I zoom through this pretty quickly.

In the grand scheme of things, there are two types of databases: SQL and NoSQL. SQL databases have pre-defined columns such as: name, age, birthdate, etc. and the data is inputted based upon those pre-defined column names. On the other hand, No SQL databases don't have pre-defined column names and can be created dynamically.

Which one is better? As with most questions that ask which technology is better, the answer is always "It depends".

SQL databases have more structure and No SQL databases have more flexibility. Whichever is more important for your application is the one you should be using.


At the end of the day, I begin to scratch the surface of NoSQL databases. This will definitely take the majority of the rest of my night and the next day.


Michael Choi is making some changes to the coding dojo curriculum in which we're to learn the MEAN stack (MongoDB, Express.js, Angular.js, and Node.js). He actually did a quick tutorial for some of the alumni and some of us who were ahead of the curriculum were invited to join. Now I already knew Michael Choi as an impressive teacher, but the speed and the accuracy at which he could code was out of this world. There wasn't a bug he couldn't fix within 30 seconds and had an extremely efficient style of coding. He built a functional app integrating express into node, attaching the MongoDB, and integrated a front-end framework, Angular, into an application in about 40 minutes. All while answering questions and explaining what he was doing. Most of this stuff was WAY over my head but these are all things that I'll be learning in the weeks to come. Even though I didn't understand things, I found it very beneficial to be in that environment and exposed as early as possible so that when I do see the topics again, it'll be much easier to absorb.


Well that just about sums up the day, tomorrow is my "Yellow belt exam". It's a 4-hour exam in which I'll be tested on my HTML and CSS abilities. I'm pretty confident in my skills in those areas so I don't imagine it'll be too much trouble.

No comments:

Post a Comment