I shopped long and hard before finally shelling out $40.00 for MySQL by Paul DuBois. I first looked at a book called "Sams Teach Yourself SQL in 21 days." The Sams book would be great if all you needed to do was formulate queries in straight SQL (I know, SQL != mySQL... but close enough--there is now a version specifically for mySQL.) The Sams book doesn't say anything about administration, installation, or programming interfaces for it, which is what I needed.
I also looked at another book, which I am now unable to locate. This book turned out to be basically a bound version of the online documentation. Trying to put online documentation into a book works about as well as trying to put a book directly onto the web. I found that book annoying, confusing, and redundant, so back it went within 2 hours.
I also considered the O'Reilly book on this topic, because normally I am a big fan of the O'Reilly series. However, I believe that lately O'Reilly has not been as careful with their editing as in the past and they're trying harder to be first than to be best, figuring, "we can be best in the second edition". Also The O'Reilly book tries to cover both mSQL and mySQL in the same book.
So, I took a chance and ordered the DuBois book from Amazon, because of the glowing reviews it got there, but I was still skeptical until I started using it.
The book is organized into three main sections: Use, API's, and Admin, in that order. The Use section is where you learn all about mySQL. It starts with a tutorial. I always like books with LOTS of examples and this book delivers--for me, an example is worth 5 paragraphs of tortuous technical explanation. It then explains the different types of data and offers terrific examples of how to choose the right one. It also does a good job of explaining the tricky joins, though I wish his examples had been something meaningful-- instead of having bogus data like "a" and "b", I'd rather have had "Golden", "Retriever" or something that makes sense. It also points out features that are NOT supported in mySQL (e.g. subselects and rollbacks) and shows workarounds, and finally gives several useful examples of query optimization.
Section II, the one on API's, has a chapter for three major API's you can use to build database applications: the one in C, the one in PERL, and the one in PHP. Obviously you will read most carefully the one on the API you are actually going to use, (PHP in my case) but it would be useful to skim the other two because each one does something different, and when you read the "C" chapter, for example, you might think, "Oh, yeah, here's how you would do that in PHP." It is excellent that the author includes these chapters, because mySQL would not be used by very many people without application interfaces.
Section III is the one on Admin. I am now reading this section "for real" because before, I had someone else to admin and install mySQL and all that is about to change. It goes into all the problems you are likely to have: security, basic configuration and installation, backing up, updating, and fixing corrupt databases. So far, with what little I've done, I have found this section very useful as well.
And what would a techie book be without the Appendices? This book has excellent appendices that I refer to ALL THE TIME, especially B through E.
A tells you where you can get the mySQL software.
B is a complete reference of all data types.
C references all operators and functions.
D is a language syntax reference.
E talks about all the mySQL software and is for administrators
F,G, and H are references to the three API's
I is a great resource for third party tools
J gives some guidelines for assessing ISP's and hosting.
Not only is this book well organized and thorough, but the author's writing style is very clear, easy to follow, and devoid of "geekie cuteness" (which I REALLY hate!!!)
If you want to learn about mySQL, this is (to date) hands down the best book.