The Definitive Guide to MySQL, 2nd Ed.
The book has four sections: Introduction, Fundamentals, Programming and Reference. The Introduction begins with a brief introduction to databases, relational databases, ANSI 92, and how MySQL fits in to each of these. It also touches on the licensing for MySQL (commercial vs. non-commercial usage) and a version roadmap for past and future releases of MySQL. The roadmap is very helpful to know what features are present in the version of MySQL you may be using (or are planned for an upcoming release).
Next, Kofler sets up a rudimentary testing environment which is used through the rest of the book. He does an excellent job of outlining a decent development environment under both Unix and Linux without getting too bogged down in trying to describe every single user interface for accessing MySQL (those are described later in the book). It steps through setting up MySQL, Apache, Perl (with DBD and DBI), and PHP, and also adds phpMyAdmin as a graphical tool to administer the databases. The unit ends with a simple PHP script to handle an opinion poll. This all happens in the first 80 pages of the book.
FundamentalsThe next section expands on the basics learned in the first chapter. First is a chapter on the user interfaces available for using MySQL, starting with the MySQL command-line client, followed by an introduction to several graphical clients (including phpMyAdmin and MySQLCC). Database design is covered in the next chapter, starting with a brief overview of the theory in designing a relational database. First, second and third normal forms are introduced with examples, as are relations (1:1, 1-n, and n-n), data types, and indexes. Once the reader is armed with the theory, the book continues with how to create the tables in SQL, and covers using SQL to examine and manipulate data in "Introduction to SQL." "SQL Recipes" contains lots of useful scripts for handling interesting cases of SQL (like selecting data at random, pivot tables, creating a new table by copying, etc). A special section is devoted to the new InnoDB format, which brings transactions and integrity rules (foreign key constraints) to MySQL. "Security and Administration" complete the Fundamentals unit with topics on user-level security, backing up the data, and replication between two MySQL instances.
ProgrammingUnlike most books, the programming languages introduced in The Definitive Guide to MySQL aren't introduced with examples as though you have never programmed a computer before. (So beware, if you haven't; this is probably not the right book for you.) The examples start with useful code that assumes familiarity with the language. The examples are excellent, demonstrating how to efficiently get your code connecting to the database. The author covers PHP, Perl, Java, C and C++, and Visual Basic, C# and ODBC. PHP is the real star of the book, though, garnering a second chapter to expand on the earlier examples presented in the book, but the other languages (and ODBC) are given excellent treatment. Fans of these languages will be able to get their programs running with MySQL using the examples from the book.
ReferenceThe last 100 pages (not including the appendix, glossary and index) contain several references for MySQL. "The SQL Reference" covers the SQL commands that MySQL understands (along with what versions they are valid for), as well as system and session variables and data types. Coverage of the utilities that MySQL uses is in the "MySQL Tools" section. Lastly, the API reference rounds off the book with the functions and variables for each language in an easy-to-use reference. Whew!
Programmers will find excellent examples for linking their programs with MySQL, and developers will find the reference and examples extremely useful for taking their data from creation to deployment. I found this book easy to read and exceptionally useful. The author did the hard work of taking the documentation and sifting through it to bring the useful parts together clearly and concisely. Definitive indeed.
You can purchase The Definitive Guide to MySQL from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
For those of us who don't enjoy being chained to a computer. To take a book, sit on a comfortable piece of furniature... or... I know this may be a shock... go outside to read!
Because large volumes of text are terrible to read on a screen. This is a textbook, not a reference.
I do. Maybe I'm different, but I certainly prefer ink and paper documentation and books to the e-version. I generally try to read through a book before I begin the "searching", so maybe that's why. When I go to a project, I don't always have an electronic form avalaible. With PDF, Microsoft eReader, Palm Reader and many other formats, it's just easier and more worthwhile to buy a text version. I can't imagine trying to read through the Camel Book or the Sendmail book with an e-version; my eyes would just start burning from looking at a screen that long.
Oh yeah, and I like to support publishers like O'Reilly, who consistently deliver top-notch books that are almost always worth my money.
"You and your third dimension."
2. MySQL has an entire community dedicated to helping people with the problems caused by its defects.
LRC, the best-read libertarian site on the web
Does anyone today look at the available technologies, and actually choose MySQL over PostgreSQL? I mean, assuming they aren't already using any database, and they don't have any requirements that would force them to MySQL (like a PHB saying, "But I've HEARD of MySQL! What's this Postgres crap?")... why would anyone choose MySQL?
This has come up more than once in previous discussions. Reasons include: web hosts not supporting PostgreSQL, technology unfamiliarity with ORDBMS's relative scarcity of graphical PostgreSQL clients, and (the illusion of) a bigger grassroots support base for MySQL, to name a few.
Anyway, why wasn't parent modded Off Topic?
In my experience, MySQL works very well. I am fully aware of all the "gotchas" out there, and the reasons why MySQL is such a toy, shouldn't be used for anything ever, etc, but to be honest there are a couple of things putting me off trying PostgreSQL:
First, I honestly am repelled by the fanboys who immediately pop up like clockwork whenever MySQL is mentioned and say that it is a piece of crap, and PostgreSQL rocks. MySQL is not crap. Perhaps PostgreSQL does rock, but all the obnoxious "advocates" for PostgreSQL just remind me of so many religious fanatics. It's at the point where I don't even care if they have a point or not, it's just too shrill and monotonous. Whenever MySQL gets mentioned, I can GUARANTEE that someone will pop up screaming about how crap it is and why isn't everyone using PostgreSQL instead. I have been using MySQL for about four years now, and so I know from personal experience how well it works. There are probably some things that PostgreSQL does better, perhaps many things, I don't know. I just know that there are many things that MySQL does perfectly adequately or even extremely well, for me, and no amount of "sorry but you're simply wrong" can dissuade me from this opinion, since I am speaking from personal experience over a period of years. Also, there are many companies using MySQL in a major way, if it was so crap then why/how would this be. Never mind, I suppose all those companies are just totally clueless. I suppose now people will also put me down for not being a "real" DBA or something. Whatever.
Secondly, MySQL is simple. When I first tried using it, the thing "just worked". Everything is there in the package. Whenever I tried looking at PostgreSQL (not recently, see above) it always seemed much more complicated and not as friendly. Well, I have something that has been working very, very well for me for a long while now, so why put myself through all that hassle? Whether it actually is or not, PostgreSQL *seemed* harder and more complicated. The documentation seemed more geared toward people who are willing to really dig into this stuff in a big way and learn all the wrinkles for tuning your database. Whenever someone criticizes PostgreSQL for this, someone seems to reply that a database *shouldn't* be used by someone "out of the box", without thinking much about all the tuning and suchlike. This is a very elitist viewpoint, imho, there are many people out there who simply want a database that "just works". It's worth noting a simple truth, that Simplicity Rules. It doesn't matter how technically brillian your tool is, if it appears to be complex then people will probably use the simpler competitor instead, even if it isn't as technically brilliant as your baby.
So, here's my point: If the PostgreSQL crowd could be a little bit less aggressive in their hostility toward MySQL, and focus instead on making the toolkit as easy to use and accessible as MySQL, then perhaps they would win over more people and become more popular.
Just my opinion.
MySQL is an excellent database server, as is Postgre. Maybe the fanboys should find something better to do with their time than hanging around Slashdot complaining about the database some other people use?
Note that every RDBMS has gotcha's.
Table-ized A.I.
I have a doppelganger, and it is you. I was just about to type the same thing!
Well said.
I've been using MySQL for 5 years. It just works, it has handled load very well with default configurations, it is easy to install, and client support is very strong. For example, I admin all of my MySQL servers from a Windows desktop at work. All free, all without problems, very stable.
We looked at PostgreSQL...for our purposes it would have been like using a sledgehammer on a tack. Does that mean we don't have any "real databases"? Maybe so, but our revenue is growing like crazy and our systems have more than enough capacity and stability to handle it. Any software that helps us make money like that without any problems is real in my book.