Take the 2-minute tour ×

I've been using MySql and SQL Server for a while. Not for anything that complicated! Mainly for web and desktop application development.

I've also used SQLite for some simple applications (not really a RDBMS, I know!). I haven't used Oracle even once.

The thing is I want to start learning a RDBMS thoroughly and I really don't know which one to go with.

I know that for example if you learn MySql completely, you won't get into much trouble working with other RDBMSes available. The thing is I don't have any idea about extra and exclusive features each one of them offer. I don't know which one is better for which environment and honestly I don't know how they differ form each other! :(

I wanted to take a course on Oracle but then I said "Hey wait! What if there's a better option".

I am a big fan of .NET and I also program in Java and PHP.

I'm really confused and I really need to get started early. Any help is totally appreciated.

Edit 1: Can anyone tell me about how much data each one can handle? I mean I know that for example Oracle can handle large amount of data! I want a sort of comparision: for example Oracle > SQL Server > MySql... Also I would like to know which one is richer in the aspect of features.

Edit 2: I really don't know how to thank you all for your responses! I'm totally amazed by the accuracy and simplicity of you responses!

For anybody else who might come across this question: I've made up my mind and I'm going with SQL Server because of it's great balance in features and availability and simplicity! The ANSI SQL and its features in .NET (like Linq to Sql) are big pluses for me! Some day I might try using PostgreSql but I don't think I'm going anywhere near Oracle! At least for the time being! :D

Again thanks all

share|improve this question

closed as not constructive by Jeff, marc_s, ChristopheD, Pierre-Alain Vigeant, mikerobi Nov 2 '10 at 19:28


Will get closed probably (too subjective!) but I think you should give PostgreSQL a try: a very mature, fast, well documented RDBMS... –  ChristopheD Nov 1 '10 at 18:18

9 Answers 9

up vote 9 down vote accepted

Learn MySQL if you want a "popular" and open source database. It's not the most advanced, but it's very widely used.

Learn PostgreSQL if you want the (probably) most advanced open source database.

Learn Oracle if you want the heavyweight database that's used a lot in the enterprise.

Learn SQL server if you know you'll be a lot in Microsoft space.

Note: above options are my own and are obviously subjective. As usual, there is no "definite" answer.

share|improve this answer
PostgreSQL... Care to explain more about it? Thanks –  M2X Nov 1 '10 at 18:48
@M2X: PostgreSQL is often seen as a direct competitor to MySQL in open source database space. It is more advanced and more ANSI SQL standard compliant than MySQL. It also has a procedural language called PL/pgSQL that can be compared to Oracle's PL/SQL. You should Google something PostgreSQL or something like "PostgreSQL vs. insert another database here" if you want more information. –  darioo Nov 1 '10 at 18:53

I wouldn't jump into Oracle right now, if you've never worked on it and don't see any immediate need to.

Both MySQL and MSSQL are widely available and used (particularly the Express editions of MSSQL) and are excellent choices for most projects. You would do well to learn either one.

Beyond that, I would suggest that you learn which ever one is most likely to be installed where you will want to be using it. As a general rule, that's MySQL in Linux/UNIX and MSSQL on Windows.

Anything more than that is getting into very subjective territory.

share|improve this answer
Since I'll be mostly writing Windows stuff, I think SQL Server gets a plus in here. Thanks –  M2X Nov 1 '10 at 18:48

Study several: Oracle, SQL Server and MySQL are good set to know because they're probably the most widely used - at least in web application development.

SQL Server is the easiest to get up on Windows and has the best tools. MySQL is a close second on Windows. MySQL's GUI on Linux last I checked was only so-so. If your comfortable with a command line interface on Linux then MySQL is the way to go.

That noted, what can help drive your decision is programming language.

This is particularly notable because SQL Server and Oracle execute code in those respective languages (don't know what options are there for MySQL).

Also, there are other interesting aspects of every database, for instance MySQL makes it particularly easy and cheap to set up master-slave replication, SQL Server has some very useful reporting tools built in, Oracle does is probably the most stable of the lot under pressure - but you have to know how to tune it better than the rest in my experience.

share|improve this answer
Nice response! Learn 'em all! :-) I like that! But what do you mean by "executing code"? –  M2X Nov 1 '10 at 18:50
As others have said, I would start with either MySQL or SQL Server depending on platform. By execute code, I mean you can write things like stored procedures in a programming language rather than SQL in each respective database server. I've updated my answer with some links to Oracle and SQL Server for this purpose. –  orangepips Nov 1 '10 at 18:57

I don't think you need to worry about size of the datbase in any of the three you mentioned. I know people who support terrabyte sized databses in SQL server and I'm pretty sure mySQL can support a large database.

If you are thinking of becoming a database specialist, I recommend either SQL Server or Oracle as most professional specialist positions use one or the other. You don't say if you are interested in DBA or development type data experience but Oracle is significantly more difficult to administer and consequently tends to pay a premium salary. ALso only large corporations tend to use it and they tend to pay better than smaller organizations anyway.

What I would do if I wanted to start specializing in data today's world is to go in depth on one of:

SQL Server Oracle MySql Postgres SQL

I would then learn one of the noSQL databases. I think the combination of a relational and a noSQL database will become highly sought after in the next five years. Knowing when to use each will be important.

If you are interested in the development side, learn SQL code at an advanced level for your chosen datbase, learn basic design and database refactoring, learn performance tuning, learn BI, and learn how to create reports. If you get the chance learn how to create data warehousing.

If you are more interested in the dba route, then learn basic admin (create backups and recover dbs from backups, user security etc), learn performance tuning and advanced SQl (you can't perfomance tune well without advanced SQL), learn how to scale the database for large data sets (things like partioning come to mind) and learn strategies for keeping the database up and running 24/7,learn how to monitor the database, learn how to set up the hardware and install the database, learn about configuration management and database refactoring.

You might also invest in learning one or more of the ORMS that are being used by application developers.

share|improve this answer

I would rather suggest you to study some general database theory. Here are my favorite books:

Even if these books can't directly help you to operate on above databse systems, but these concept can apply to any systems and help you to understand the offical manuals of these systems.

For example, it's a good thing once you know how to write the more efficient query event if MySQL's query optimization doesn't gain any performance benefits yet. But such query can gain performance benefits from others.

Moreover, even if MySQL doesn't support so advanced index types as Oracle's, but you should know that any database system won't guarantee the usage of index when executing queries.

And the most important thing: Correct database schema design is always matter.

share|improve this answer

I'll talk a bit about my personal experience. When I was younger, I wanted to give web development a try. The first database I used was MySQL. I was doing my little scripts and was happy with it. Obviously, I didn't know anything else!
But as I was progressing, I realised I was limited with MySQL. It was (and is!) really, really far from SQL Standarts, allow bad practice (hidden GROUP BY columns..., defaul engine is MyISAM (no referential integrity)), etc. I realised even after months and months of hardcore coding that I was still bad.

I decided to try new things. I downloaded PostgreSQL and, my god, what an amazing RDBMS! First of all, PostgreSQL really is a free-to-use RDBMS. Unlike MySQL (you have to pay a licence for commercial use), you don't have to worry about any licence. I understand this may not be something important for you (for the moment at least!).

Then, the fact that Postgres respects the standards is a real plus for a beginner. You learn about new, powerful syntax ([recursive] CTE, window functions, CHECK constraints...), you can use a powerful procedural language (pl/pgSQL).

PostgreSQL is an old, stable and mature project. It is definitely worth a try, especially as a beginner. I know this is a subjective answer, but I feel that it's worth posting so beginners don't make the same mistake as me. It is better to start with real standarts then switch to something less compliant, so you at least know what you're missing.

I can't talk about other RDBMS such as Oracle or SQL Server, I have never used them. But most of them have the same advantages over MySQL (ANSI SQL Compliant). The biggest problem is the licence, but the Express versions may be enough for you.

share|improve this answer
I always thought MySQL was the closest to ANSI standards? –  Mercfh Nov 2 '10 at 3:01
No it isn't, it is the furthest. –  Vincent Savard Nov 2 '10 at 3:09
I guess DB2 prolly closest? –  Mercfh Nov 2 '10 at 4:04

MSSQL is what i've chosen, i just graduated with my B.S. in Comp. Science and I saw the most jobs wanting MSSQL, not to mention the certifications are simpler and T-SQL really isn't all that bad. I enjoy it quite alot. It doesn't have all the bells and whistles that Oracle does, but I think Oracle is alot harder to learn, and I see less and less companies using it because it's quite expensive.

Mysql i've noticed is mostly web stuff, but it's good to know either way. Reporting services for MSSQL are very handy tho, and it comes in one big package making it an easy install. Smaller type businesses around here primarily use MSSQL 2005/2008 from my experience.

But the syntax for basic stuff isn't too different from the others from what I can tell, altho can anyone confirm/deny this? because I dont know that much advanced stuff.

edit: I'd also like to add that for some reason I dont see MYSQL ever "preferred", it's either oracle or MSSQL when it comes to jobs in my area. Which is sad because I actually really love Mysql

share|improve this answer
I would recommend anyone get a good foundation in ANSI standard SQL in general, as that would be enough to help you get around the basics in the primary RDBMS's. But each one has some significant and important extensions which are their own, too; not just little things, but very frequently used ones. Data paging comes to mind as something where there are big differences. –  Andrew Barber Nov 1 '10 at 18:41
You mean like things such as triggers/stored procedures? Isn't all the Update/Select/Insert basics basically the same for each? –  Mercfh Nov 1 '10 at 18:43
Over and above any embedded language that would enable stored procedures (T-SQL, PL/SQL, etc.) there are non-ANSI SQL extensions that vendors will add to give their DB a competitive advantage. One example is Oracle's CONNECT BY clause. That gives you an optimized way to traverse a hierarchical (i.e., self-joined) table up toward a root ancestor or down to all the descendents. Much faster and cleaner than explicit recursion. Currently living in an Oracle world right now so don't remember off the top of my head non-ANSI examples for other vendors' DBs but they certainly do exist. –  Ed Lucas Nov 1 '10 at 19:13
I see, but the "basic" stuff is more or less the same tho (update/select etc..) correct?. I've been giving Oracle a look here recently as I've been seeing more and more jobs pop up. –  Mercfh Nov 1 '10 at 19:16

MSSQL Server is easy to use/install/manage and handles pretty much all the important stuff you will need to know.

Unless you have a specific interest or requirement into a particular database and work on windows download Sql Express and Management studio for free and start playing with it. http://www.microsoft.com/express/Database/

share|improve this answer

Full disclosure, I am biased. I use MySql pretty much exclusively in my production environment. My servers are all Linux but the client applications I write are typically in C#.NET.

Anyway, it's relatively mature, and version 5 has a lot of stuff that is considered enterprise functionality like stored procedures, etc. I've never had much trouble doing things like scaling and replicating.

All bells and whistles arguments aside though, it sounds like you are using this to a great extent to learn things. From that standpoint MySql is great:

  • for tinkering it's free
  • no matter what brand you go with you will learn how to compose queries and debug/optimize them
  • there are connectors for most every language you would want to use -- you mentioned .NET, yep there's a really good factory connector for that
  • you don't need a bajillion features if you're just starting out and learning the ropes...in fact a feature packed hard to learn product can be intimidating
  • The MySql community is quite large and there are a lot of resources to turn to when you need help
share|improve this answer
