# Database Knowledge For A Noob



## Troy210 (Nov 7, 2014)

Hi all, 

I've been doing desktop support for a couple of years now, and I'm looking to take my career into a new direction. I've heard that Databasing is the new 'thing', and I wanted to get some basic, ground floor knowledge. Can anyone point me in the right direction?


----------



## Aquinus (Nov 7, 2014)

Usually, working with a database is closely associated with developers who write code for applications and services, but if you wanted to get started with just the database side of things, SQL is a must know. There are different flavors of it, but I would recommend either MySQL (more simple) or PostgreSQL (more complex). You can play around with them both on SQL Fiddle.

Maybe something like PostgreSQL Exercises is something you might be interested in? I personally work with pgsql so I'll recommend it, but generally speaking some people think MySQL is an easier database to use and has less features that you need to be aware of. PostgreSQL is more like the open source alternative to Oracle or MSSQL as it is a ACID database where MySQL is not usually ACID and even engines like InnoDB aren't strictly ACID.


----------



## Cybrnook2002 (Nov 7, 2014)

Probably not going to learn much in a thread. Best bet is find your yourself a job at a small company that is running some M$SQL databases and hope that you can buddy up next to a DBA who will take you under his wing and show you the ropes to start with. There is so much to a database internally and externally that its far to overwhelming to try and decipher with google searches etc. Once you get comfortable with the easy ones, then move your way up to some of the bigger boys like Oracle, or even the next big thing, in memory databases (SAP HANA, Oracle in memory).

Grab yourself a copy of enterprise office and install a copy of Access. It's a tinker toy DB, but it's something.... Maybe build a database of your friends, numbers, birthdays, etc... Then start playing with table relations and maybe build a report to pull them in different formats.


----------



## Aquinus (Nov 7, 2014)

Cybrnook2002 said:


> Probably now going to learn much in a thread. Best bet is your yourself a job at a small company that is running some M$SQL databases and hope that you can buddy up next to a DBA who will take you under his wing and show you the ropes to start with. There is so much to a database internally and externally that its far to overwhelming to try and decipher with google searches etc. Once you get comfortable with the easy ones, then move your way up to some of the bigger boys like Oracle, or even the next big thing, in memory databases (SAP HANA, Oracle in memory).


I agree with this statement, but that doesn't stop anyone from making a simple relational database and using it. A lot of businesses like to see that a person has gone out of their way to learn something. It shows intrigue for the subject which is a powerful tool if you're trying to get employed.

With that all said, I still think using SQL Fiddle and learning some PostgreSQL wouldn't be a bad idea. It will only expand your knowledge. It's not like you'll learn a little bit about PostgreSQL and end up knowing less as a result.

At least if the OP plays with PostgreSQL I can give input because it's a technology I use in my day job. I can give input with MySQL as well, but I don't know it as well as I do pg because I don't use it all the time.


----------



## Cybrnook2002 (Nov 7, 2014)

Ha, as you replied to that I was updating my posting with something along those lines ;-)


----------



## Troy210 (Nov 8, 2014)

Good info guys. What is considered an entry level job in this realm?


----------



## Aquinus (Nov 8, 2014)

llllllllllll said:


> Good info guys. What is considered an entry level job in this realm?


Intern. There really is no entry level position for this kind of work without a degree or prior experience. There is some level of expectation that you know what you're doing. It's important to remember that this is a science field and education is a rather important factor.


----------



## Troy210 (Nov 8, 2014)

What about certifications? Are there any?


----------



## Cybrnook2002 (Nov 8, 2014)

Try and get a couple years under your belt before you shoot for certs.  Even then certs only go so far, I know at my company is what you can really do once your behind the keyboard that proves your worth.  Some of the applicants we get push certs on their resumes and when we interview them they are clueless.  Like "what's a listener".

Check your local community college if your willing to invest.  Most cert program's start at 500.


----------



## Aquinus (Nov 8, 2014)

llllllllllll said:


> What about certifications? Are there any?


Computer science isn't exactly a field that you just "jump into". If you want to get started, a 2 year associates is a good starting point however you'll want to make sure it aligns to a 4 year program. Most people we interview who don't have any degree don't start off doing dev or database work, they start on the help desk. Even our current intern has a 2 year degree and in the past all of our interns either had experience or were already going to school for a 4 year degree. I really need to emphasize that this isn't just working with computers. A contrast would be how in science class you make a volcano, sure you made a little chemical reaction but it's far from something worthwhile in the industry, computer science is the same way. For how much these kinds of job pay, there is an expectation that you know what you're doing and you very well might be able to convince a company that you have the skill to do a job but your chances get *a lot* better when you have a degree. Without the degree, you'll struggle just to get your foot in the door and you can't expect a decent paying job until you have the experience or the schooling. It's also worth noting that a lot of companies declare 1 year of going towards a degree is worth 2 years of experience. Just keep that in mind because I can't emphasize this enough because like every other field, there is an expectation of being skilled and knowledgeable. Devs and DBAs get paid decent money for a reason and it's not because you can just pick it up and start doing it.

It's also worth noting that one of our SysAdmins had a degree in engineering and not comp sci, so if you can prove you have what it takes and you have a degree in something else, that might be enough to convince an employer that you're a worth while investment but expect to be hit with a lot of questions during the interview. Most people without degrees fail the interview (at my job) just because they can't answer most questions that I would consider basic and that's a red flag to me. Occasionally someone will be very skilled, but as I said before, they needed to prove it for us to hire them and that means answering random questions that the employer (probably another dev or DBA will also be there,) thinks up.


----------



## Troy210 (Nov 8, 2014)

I have a network systems administration degree, its an Associates. I'm sure I could roll that into computer science.


----------



## brandonwh64 (Nov 9, 2014)

I am also majoring in networking but had a couple of classes that explained the basics of databases. I believe a systems administrator degree would be more into what you are thinking. My associates was more in electronics and computer technology and I did not take a single class about database structure.


----------



## Aquinus (Nov 9, 2014)

llllllllllll said:


> I have a network systems administration degree, its an Associates. I'm sure I could roll that into computer science.


You very well might find that many of the classes don't align between the two major, much like the difference between IT and Comp Sci. Just having then degree is a good starting point, even if it's not in Comp Sci or Info Tech it's something that says you can learn. I would recommend classes if you're not experienced with any development work at all.  It's worth noting that sys admin, network admin, and IT degrees are all applied fields. Computer science is an abstract and theoretical field; it explains a lot of why stuff works in computers, what computers can do, what they can't, and how to measure complexity of a task.

It's really important to realize that Comp Sci tends to cover a lot of things at a high level and the building blocks at a low level. I would argue that someone with a degree in Comp Sci is capable of being a sys admin or a network admin simply because the combination of breadth and depth of knowledge as it tends to cover a lot. Applied fields tend to focus on what is happening and how to use things, not really how they work from a low level which is really a requirement for a developer and it's hard to pull developer out of database admin. Usually someone who can be one can be the other as well, however which job a person with a degree in comp sci might have very well might depend on what they like more or what they're more skilled with.

With all of this said though, I wouldn't give up. I would start learning in your free time. Pick up a programming language (I always think Clojure is cool but it's not a good starting point, something like Java, Python, or Ruby would probably be the best options) and do problems on Project Euler or start learning about a particular relation database.

Getting into Comp Sci is a big undertaking. I went into it higher-ed having already learned 3 programming languages, so I would make sure that you're willing to dedicate the time to it. I would say that computer science isn't strictly work, it's almost a passion. People who are passionate about the work they do are the ones who are likely to succeed, regardless of skill or degree, but like all things it takes time. You're not going to learn how to do all of this stuff over night, you're in for a haul. As long as you enjoy it and you're passionate about it though, there is no reason you shouldn't pursue it.


----------



## Troy210 (Nov 10, 2014)

Thank you Aquinus, this is great info!


----------



## Thefumigator (Nov 12, 2014)

I have background in computer science (more than 3 years) but I wanted to move it quicker, so I took a course on MS tecnologies.
I received my diploma on MS .NET web programming in the first year, I learned ASP.NET, SQL, and C#, 
the second year was more intensive with distributed apps, but I never needed it, 
3rd year was all JAVA and everything app-design related (UML and Software Engineering). But personally, I actually with the first year completed it was enough to get a job as junior developer and now moving to senior areas.

What I would do, if you don't want to become developer, you could take a course on MS SQL alone, and if you pass, there you have it. In my case I like designing databases, as they tell me, or as I want it, but I dislike *administrating *databases. Why? Think about if you lose a single byte of data and they will hang you. Its mission critical in some cases, where you just CAN'T lose data. (I actually accidentaly overwrote a database view, and we could recover it looking at an old backup, but I was in a sweat for a couple of hours) if you are one of those kind of tigers who dare to loose it all, or like to be heroes in data rescue, DBAdmin is for you man.

Actually, when I develop an application I copy the database to a server I have mounted, so I can toy with the database, and once my application is running fine, we do a deploy to production's sandbox (a copy of the real thing) and if sandbox is working, and properly tested, we replace the old application with the new one.

Then the DBAs are monitoring for dropouts, seeking all the time where the database is performing poorly, which actions make it to hang, but the most difficult part of their job might be migration, from one database to another. It takes a whole lot to plan that kind of things and you can't do it alone, its a teamwork most of the time. The possitive side is, once the job is done, you may walk away.


----------

