In a related thread talking about PostgreSQL, it was written:
> My guess is they weren't really buying MySQL for the technology,
> they were buying it for the community.
AND, that is precisely why technologies such as Perl and MySQL succeed so well in spite of suboptimal even awkward design within the product.
First, beware of posters here, including me, that, as with religious text editor debates, tend to like what they know, and what they have used the most.
That being said...
I remember the first time I saw the Perl Book (way back when) my reaction after a 30 minute skim read was "there is no way I am going to use a language that has a manual this thick and is so out of touch with computer science". Yet now I love Perl and am kind of proficient with it. Why? Because the community that develops it not only cares about the community, they make things easy to do from the system point of view: installing, providing examples, being pragmatic about over overloading constructs in just the right way so that one can get things done and get them done quickly, etc., etc., etc.
In MySQL it is quite nice, for example, that '', NULL, and 0 all tend to have the same semantics in certain contexts. Or that on the command line, you can enter a comment beginning with any of //, --, or /* ... */ . Those are trivial examples but they illustrate the common sense pragmatism that the MySQL designers put into their system. It just makes life nicer for the user.
Look SQL itself is sucky. All of the RDBMs must cope with that. So the least one can do is provide system level ease of use. MySQL does that quite well, which is one important reason it has a thriving community.
Sometimes you get both - good design and community. Witness Python. I have not had reason to develop with Python but when the Python book first came out, unlike my initial negative reaction to the Perl Book, I thought "Now THAT is a good language. The manual is very understandable and the design is clean." The fact that a solid community arose is icing on the cake for Python and an *additional* fact about Python culture. There are excellent languages, such as Common Lisp, that failed to develop a vibrant community so excellence of language is neither a necessary nor sufficient condition to foster community.
MySQL designers and community make the right choices to support the fostering of the language. Postgres (I refuse to use the new name PostgreSQL which is a cheap cop out and attempt to leverage on the success of MySQL by copying the idea of the name) and Oracle do not share that basic thrust of making things simple to use at the system level. Oracle was first though, and is "real", very real. And very solid. So it continues to dominate based on sheer user base in critical applications, the complexity of building a complex solution in the RDBMS space, and, quite simply, because it is so very reliable.
Don't get me wrong, if I had my druthers, I might use Postgres. But, for the same reason I went with Linux and the world went with Intel chips over Motorola, it's all about pragmatism and just getting things done. I started looking for a UNIX on a PC back in about 1985. When FreeBSD came out I tried it. It was only when Linux, due to the sheer pragmatism of its community attracted so many followers and I noticed that friends of mine in the research community were going with it that I made the decision to do likewise, and have not looked back. Same reason I stuck with Red Hat after giving SuSE a sold try a few years ago.
MySQL is to easy use and, more importantly, EASY TO START USING. Then, once the community evolves, things feed on themselves. You get lots of example code, good documention, etc. You are off and running.
Disclaimer: I have not used Postgres very much. I have and do use both Oracle and MySQL a lot. But I tried PostgreSQL (OK, I'll call it that) enough to be frustrated by its lack of community and approachability. I am sure that if I applied myself on some serious project, I could become a fan of PostgreSQL. I might yet do that if the right opportunity arises. Buy MySQL now HAS the community and, like with Windows, people have to make a choice that is swayed by the sheer momentum since, after all, you need community. It takes a village, as someone once put it.