The Definitive Guide to MySQL, 2nd Ed. 128
The Definitive Guide to MySQL | |
author | Michael Kofler |
pages | 802 |
publisher | Apress |
rating | 10/10 |
reviewer | Craig Maloney |
ISBN | 1590591445 |
summary | A useful and complete reference to using and programming with MySQL |
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.
Fundamentals
The 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.
Programming
Unlike 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.
Reference
The 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.
Interesting book but (Score:3, Interesting)
Re:Interesting book but (Score:1)
I know we slashdot readers are geeks but this is a technical book, not a Playboy !
Re:Interesting book but (Score:2, Funny)
Re:Interesting book but (Score:5, Informative)
First, hold the book so the binding is resting on a hard flat surface (let's say a table), as if you are about to open it. Fold back the front and back covers so they are flush with the table.
(end view, ignore dots) Run your thumb up and down the crease where the covers meet the binding, helping them to lie flat.
Now take 8-15 pages from the front of the book and 8-15 from the back of the book and lie them flat, again running your thumb along the binding to help flatten them out. Continue this process inwards, continually flattening the pages out until you come to the middle of the book an do a final "press" down the middle.
Re:Interesting book but (Score:2)
Re:Interesting book but (Score:1)
Can't somebody invent a machine that does this at the printing factory? Or dare I say.......offshore it.
Anyhow, thanks for the tip.
Re:Interesting book but (Score:2)
Re:Interesting book but (Score:1, Funny)
Re:Interesting book but (Score:2)
I wonder... (Score:4, Funny)
Re:I wonder... (Score:1)
Re:I wonder... (Score:1)
It's the director's cut... (Score:3, Funny)
Re:I wonder... (Score:1)
Definitive Complete Ultimate comment (Score:5, Funny)
-russ
Re:Definitive Complete Ultimate comment (Score:1, Redundant)
Re:Definitive Complete Ultimate comment (Score:5, Funny)
Examples (Score:3, Interesting)
My guess (Score:4, Interesting)
Still, it's good that comprehensive book is released, some will sure find it useful.
Now, someone point me to a nice book on SQLite integration with
Re:My guess (Score:2)
FWIW, there's also a nice SQLite binding for Ruby [rubyforge.org]: Good stuff!
Re:My guess (Score:3, Interesting)
> stamina, strength and beauty.
The PostgreSQL [postgresql.org] database on RubyForge [rubyforge.org] has been slowly growing over the past year or so... it's up over 825K records and ticking along smoothly. I can't see ever going back to MySQL unless forced to...
Re:My guess (Score:2)
Re:My guess (Score:1)
Sweet. How big is the PGDATA directory? Must be gigabytes.... mine is only 250 MB....
Re:My guess (Score:1)
Re:My guess (Score:1)
Whew!! That's pretty cool. I'll have to remember that next number time a "PostgreSQL for large databases" thread arises...
Re:My guess (Score:2)
Re:My guess (Score:2, Interesting)
Re:My guess (Score:1, Funny)
Re:My guess (Score:4, Informative)
If you look at web hosting, you almost always see MySQL as "available" while PostgresSQL is a bit more rare.
That is, IMHO, why PHP is so popular... and the same goes for MySQL.
They are ubiquitous.
Re:My guess (Score:2)
Boring (Score:2, Informative)
Simple. Plain old web server admins rarely know anything about databases. Anybody who knows how "real" databases work is gainfully employed at a lucrative job, not rebooting Linux boxes that host "About Me" web pages. Out of the whole dot-bomb debacle, the only people I know that are still employed (and still paid very well) are Oracle DBA's. They couldn't give two shits about dinky web servers when they're massaging terabytes of
Re:My guess (Score:1)
Re:My guess (Score:3, Insightful)
2. MySQL has an entire community dedicated to helping people with the problems caused by its defects.
Answer (Score:3, Insightful)
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 graphica
Re:My guess (Score:1)
Will I change to PostgreSQL? I don't know. I am sure there are good reasons to do so, and good reasons no
Re:My guess (Score:3, Interesting)
Re:My guess (Score:1)
Re:My guess (Score:2)
Re:My guess (Score:1)
The Crazy PPM Repository [perlmonk.org] has a PPM for DBD::Pg [perlmonk.org].
Re:My guess (Score:5, Insightful)
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.
Agreed. (Score:3, Insightful)
Re:My guess (Score:1, Redundant)
If you've used both and found Postgres to be superior, and more or less fell in love with it, you get frustrated at the lack of public awareness. This causes us to take every opportunity we can to "inform" (annoy) people about this wonderful thing that we've found. Of course,
Mod parent up! (Re:My guess) (Score:2)
Yes, exactly. I must admit I am somewhat of a fanboy. I don't "pop up" like the grandparent post described, but I do come to these MySQL stories specifically looking for PostgreSQL comments. And sometimes I post, like now. But I don't go looking to troll or anything, just trying to advocate a great piece of software that I think gets far too little attention.
It's not unique to PostgreSQL. Any time people discover a great alternative to a well-known mainstream product, those people will use any forum to
Wow. (Score:3, Insightful)
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
Re:My guess (Score:1)
Re:My guess (Score:2)
On the shelf next to me I have one of the best books I've ever bought, called "An Introduction to Database Systems" by C.J. Date.
Read some of that, and pick up some database that you haven't used before, like DB2, Oracle, Sybase, whatever. Those probably all have free trials. Try to understand the reason so many companies spent so much time and money perfecti
Re:My guess (Score:1)
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?
Again, you s
Re:My guess (Score:1)
And somehow that argument cannot be applied to PostgreSQL? If so, please explain why...
I'm not saying MySQL is better than PostgreSQL or vice versa (I lack knowledge to make such an assessment), but I am genuinely interested in why your line of reasoning applies
Re:My guess (Score:1)
http://sql-info.de/mysql/got c has.html [MySQL gotchas]
http://sql-info.de/postgresql/postgres-g otchas.htm l [PostgreSQL gotchas]
The above site has a list of problems and SQL incompatibilities for both PostgreSQL and MySQL. The list for MySQL is quite long, but just looking through the first five examples on the first page will give you a feel for the problems.
A primary issue is data integrity. Some of the examples in the "MySQL gotchas" show flawed input data being modified by the syst
+2 Saving Throw vs. Obscure and Nerdy References (Score:2, Funny)
Now where's the Intelligence and Wisdom in that?
Re:+2 Saving Throw vs. Obscure and Nerdy Reference (Score:1)
Strength, intelligence, wisdom, dexterity, constitution and charisma yea. Speed might be a subtable of strength, dexterity and constitution. Beauty is but one aspect of charisma. Stamina might derive from constitution.
[John]
"Chaotic Dungeon Master and the Laws are Random"
Re:+2 Saving Throw vs. Obscure and Nerdy Reference (Score:1)
Ok, you caught me, I'm trying to out-do the grandparent in obscurity of reference.
Re:My guess (Score:2)
Do I remember hearing that Apple's Searchlight feature in the upcoming Mac OS X 10.4 ("Tiger") uses SQLite as well?
Re:MySQL much cleaner than Postgres IMHO (Score:2)
If you mean source code readability, people have said that MySQL's C++ source code is very obfuscated and hard to read, while the Postgres' C source code are pretty well organized.
If you mean SQL, they're basically the same, but MySQL has some shortcuts like INSERT IGNORE, REPLACE INTO, not requiring "AS" in column/table aliases, etc. But I don't see why this would be regarded as being "cleaner". Not standard-compliance, that's what it is.
If you mean the app code, why are apps using
Re:My guess (Score:2)
some free books (Score:5, Informative)
Re:802 pages...no fluff, huh? (Score:1, Insightful)
Because large volumes of text are terrible to read on a screen. This is a textbook, not a reference.
Re:802 pages...no fluff, huh? (Score:3, Insightful)
Re:802 pages...no fluff, huh? (Score:2)
While it may be wasteful of paper, I'm sticking with the binders until there is a display that (a) is as big as my desk (b) has 600 dpi effective resolution for easy reading (c) I can convince my employer to buy.
Anyway, paper books have a perfectly servicable
Re:802 pages...no fluff, huh? (Score:1)
I like books for when the wife says, "Get off that computer and come watch TV with me." See, she's the boss. I hate TV. At least i can read a book, and i only read technical books. She just wants proximity, so i can read while she watches TV.
Re:802 pages...no fluff, huh? (Score:2, Funny)
Re:802 pages...no fluff, huh? (Score:1)
Because I don't have a lot of room for books, and because I would need them both at and away from home, I like to use O'Reilly's Safari [oreilly.com] service. $10/mo to rent up to 5 books at a time and read them with any web browser. (That's the low-end package.)
I am going to go with... (Score:4, Informative)
What good is a textbook without a goddamn search function?
You have heard of an "index" correct?
Re:802 pages...no fluff, huh? (Score:3, Interesting)
1. No power requirements. I can sit out back or take a ride into the mountains and read.
2. No computer distractions. When I'm on the computer, I'm doing computer stuff. Not reading.
3. Ergonomically better. I can "curl up and read a good book". Tough to do with a computer (note I said "Tough", not impossible).
4. Search = Table of Contents or Index and I might find something else helpful while looking.
5. I can bring it with me to work and not have to worry about losing a multi-hundred or even thousand d
Re:802 pages...no fluff, huh? (Score:1)
ISBN? (Score:5, Informative)
Re:ISBN? (Score:2)
It is part of the standard review header.
Obligitory MySQL Gotcha (Score:5, Informative)
I'm lovin' it!
Re:Obligitory MySQL Gotcha (Score:2)
Re:Obligitory MySQL Gotcha (Score:2, Interesting)
Seriously though - if you find anything outdated (or just plain wrong) in the list, please tell me about it and I'll post updates. FWIW I gave it the once-over when 4.1 was certified as stable a few weeks back, but I may have missed something.
Disclaimer: despite appearances I do actually work with MySQL databases, and I'd be more than happy to see that list get smaller.
Re:Obligitory MySQL Gotcha (Score:2)
http://sql-info.de/mysql/transaction-innodb-tab
Re:Obligitory MySQL Gotcha (Score:2)
Re:Obligitory MySQL Gotcha (Score:2, Insightful)
Re:Obligitory MySQL Gotcha (Score:3, Interesting)
Note that every RDBMS has gotcha's.
Yup, but no database I've used has as many gotchas as MySQL. Recently I have been bitten by the following ones:
MySQL was chosen by my predecessors because it was the only free database they'd heard of
Rehashed up! (Score:2)
I started off using mySQL years ago but in the past 12 months migrated everything to PostgreSQL. I picked up a book on PGSQL just to see what im missing out on and could not justify the cost. (books in Australia are very expensive: $USD70 for the average book in oz).
I think books are great to get your started to know something like SQL but hardly worth buying every revision...or technology...
Especially when most of t
800 pages? (Score:1)
Rather than pull an Oracle, I would like to see a RDBMS that tries to use simple concepts, including perhaps a new simple relational language besides SQL[1]. It would get its power from custom add-ons and hooks, not by trying to be everything to everybody
Re:800 pages? (Score:2)
MySQL has taken a long time to acquire even standard SQL features, let alone obscure ones. (Version 4.1 is a huge improvement).
I would like to see a RDBMS that tries to use simple concepts, including perhaps a new simple relational language besides SQL[1]. It would get its power from custom add-ons and hooks, not by trying to be everything to everybody out of the box.
The concepts behind RDBMSes are simple - that is why they are so widely used. What is complex is
Re:800 pages? (Score:1)
Perhaps their priorities could be tuned in some areas.
If you devised an SQL replacement it would soon look just as just as sophisticated.
I disagree. SQL syntax is ugly by almost any standard there is. Its syntax "tree" is lot like COBOL in style. Compare the syntax of COBOL to say C, TCL, Lisp, etc. It is at least an order of a magnitude more complex. And, it lacks referen
Re:800 pages? (Score:2)
I would not say that the syntax is an order of magnitude more complex, but I see what you are saying. My point is that SQL expresses a lot, and
The Definitive Guide to MySQL for ADD Programmers (Score:1)
MySQL roXorZ!!!
Re:800 pages? (Score:1, Informative)
Actually, you should read all the stuff on their site (www.dbdebunk.com) to see just what a sad state the DB industry is in right now.
Anyway, here's a taste of how Tutorial D makes things simpler.
In SQL if you want a set of all tuples in a relation, you type: "SELECT * FROM Relation". In a Tutorial D-like language you type just: "Relation".
If you want to extend th
Re:800 pages? (Score:1)
Here is a draft of my pet relational language:
http://www.c2.com/cgi/wiki?TopsQueryLanguage
Tutorial D mixes infix and prefix table operators, which bothers me a bit.
O'Reilly (Score:1)
Any other suggestions for MySQL reference book? (Score:2)
My questions are:
If you have read/used this book, is it really that good?
If you have not read/used this book, what book have you read/used and found satisfactory as a desktop reference book.
--Flam
Re:Any other suggestions for MySQL reference book? (Score:1)
Re: (Score:1)
What postgresql fanatics should do: (Score:2)
If postgresql is so superior, why hasnt it been able to get any significant market share?
Why does mysql dominate webhosting?
Why are huge sites with hundreds or thousands of transactions/sec successfully using mysql without any problems? postgresql fanatics claim such sites simply cant exist because mysql can't handle "those kinds of loads".
Solve those questions and maybe po