The Definitive Guide to MySQL 5 100
jsuda writes "The Definitive Guide to MYSQL 3rd Edition certainly deserves its
title. It is a large, dense, complete guide to MySQL and updates its predecessor
edition by covering new MySQL5 and new auxiliary software including database administration
tools and interfaces. MySQL is the open-source database software which has become
very popular for web-based database applications now being used by Yahoo, NASA,
Slashdot, and other entities. Read on for the rest of Jsudas' review
The Definitive Guide to MySQL 5 3rd Edition | |
author | Michael Kofler |
pages | 748 |
publisher | Apress |
rating | 7 |
reviewer | John Suda |
ISBN | 1-59059-535-1 |
summary | The Definitive Guide to Mysql 5 |
The author of this book, Michael Kofler, has a Ph.D. degree in computer science and is an accomplished writer of technical books. The audience is intermediate to high-level database designers and programmers. Although the presentation assumes little prior knowledge of MySQL and databases, it does assume a good amount of contact with and knowledge of programming languages. The topic of this book does not lend itself to an easy, flowing writing style. Reading through this complex material is like chewing on heavy New England pound cake. That is not a criticism of the author as he thoroughly presents the topics in a comprehensive, workmanlike, textbook-like manner. The discussions of databases and MySQL features are lightened by numerous table, charts, graphics, and examples of relevant matters.
The updating from the 2nd Edition of The Definitive Guide involves the upgrade of MySQL from version 4.1 to 5.0 which now provides support for Unicode, the sub-SELECT and GIS functions, improved authorization features, addition of stored procedures, and other new commands and server options. It also includes discussion of new or updated auxiliary software used with MySQL, like PHPAdmin and new interfaces for Open Office, Star Office, and Apo.NET.
There are six parts with twenty-three chapters and 3 appendices, amounting to 748 pages with index. The parts entail an introduction to MySQL and databases, administrative tools and user interfaces, fundamentals of database design, programming using MySQL, and detailed content references. The appendices include short segments of a glossary, bibliography, and notes about the sample code files available for downloading from the publisher's website at http://www.apress.com./
The beginning chapters introduce the basic concepts of MySQL including its client-server architecture, tables, fields, queries, keys, and the distinction between relational and object-oriented databases. The author focuses the bulk of the book on relational databases. The many features of MySQL are itemized and other matters like licensing and setting up test environments are discussed. A large segment of this early material offers instruction on installing under Windows and Unix/Linux platforms and configuring the installations for function, usability, and security. An introductory example of building an opinion poll application with PHP is provided.
Chapters 4 - 6 cover a number of administrative tools to use with MySQL, including mysqladmin, mysqldump, and PHPAdmin. The author spells out how to install and configure, set up user management and security, create and edit databases, import and export data, and use auxiliary functions, among other things.
The best chapter, in my view, is Chapter 8 on database design. The technical aspects of databases are well-covered, like the various table types and data types, but the more theoretical aspects are noted in some length. There is some art in creating databases and tables which is above the technological. Correct design with related tables is crucial to efficiency, ease of use, accuracy, ability to revise, and consistency. A segment on "tips and tricks" in database design is especially interesting.
The bulk of Part 3 contains a comprehensive presentation of SQL features, syntax, configuration, and security issues, The new functions of version 5 are explored, like GIS and stored procedures and triggers. A section on transactions for advanced users and setups is nicely done. For novice users, mention is made of the "--I-am-a-dummy" option which warns and provides a second chance to avoid inadvertent updating or deleting of a table. Chapter 14 is all about maintenance issues - backing up, importing, logging, and replication.
Part 4 deals with how to combine MySQL with programming languages like PHP, perl, Java, C, Visual Basic, and Visual Basic.NET. Each is treated similarly - detailing features, concepts, syntax, and programming techniques. Most of the attention is given to PHP, which is described as a natural companion to MySQL for use in developing dynamic web applications.
Chapter 21 is a comprehensive SQL reference of operations, functions, data types, variables and constants, and commands. There are a large number of charts and tables to bring order to the dense material. Chapter 23 contains material on the various API's which can interact with MySQL. These include PHP.API, perl.API, JDBC, ADO-net, and C.API.
For those with a need to know, and those with a desire to learn MySQL, this volume contains nearly everything you would want and expect, not only about MySQL itself but about the software that interacts with it or web servers. The author deserves credit for presenting the dense material in a thorough and orderly manner."
You can purchase The Definitive Guide to MySQL 5 3rd Edition from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Does this mean... (Score:3, Interesting)
The problem with buying "new and improved" is the revelation that all along you'd been using "old and inverior".
Not sure how definitive (Score:1)
Re:Does this mean... (Score:3, Insightful)
They were definitive at the time. (Score:2)
And yes, the old books may be considered "inferior" when you're working with MySQL 5, just because it is new software and the older books thus do not cover it.
Re:Does this mean... (Score:2)
No no no. You obviously don't understand marketing speak. If something is "new and improved", it means the old one was "original", "classic", or "tried-and true".
-ccm
Eh? (Score:1, Insightful)
that's the truth (Score:5, Insightful)
totally... i was wandering in my favorite geek bookstore [powells.com] yesterday... it's weird to look at the shelves, at the rows and rows of thick, expensive books, and think... "i've had no trouble with the online help for that one, and that one, and that one..."
people will spend money on just about anything... but, in fairness, it can be nice to have a guide that you can flip through some times... i don't like online doucmentation for everything but it has its place... a lot of these books though seem a bit much
For me, not so much. (Score:3, Informative)
(If anyone's trying to learn PHP, by the way, I highly recommend Sams' Teach Yourself PHP In 24 Hours. I
Re:For me, not so much. (Score:2)
Thankfully, however, we have better technology to replace Java and Perl. Ruby and Python have shown themselves to be true contenders in this area. They offer all of the benefits of PHP, but without many of the negative aspects of PHP. Plus they are far more mature and po
Re:For me, not so much. (Score:1)
An example of an overly poor script which I come across far too many times is:
main stuff here
However any person with common sense can pick out many problems in this (for example: use ' instead of " to save processing time, there are many more).
Re:For me, not so much. (Score:1)
<? include ("header.php"); ?>
<? include ("menu.php"); ?>
main stuff here
<? include ("footer.php"); ?>
Re:For me, not so much. (Score:2)
Re:For me, not so much. (Score:1, Troll)
Indeed, even those with much experience have run into may problems with PHP. Take the Drupal and PHP-Nuke developers running into so many problems, for instance.
Like it or not, PHP just isn't suitable for anything remotely important. It's
Re:that's the truth (Score:2)
Re:Eh? (Score:3, Interesting)
Re:Eh? (Score:2, Informative)
MySQL hatred thread (Score:5, Funny)
Re:MySQL hatred thread (Score:2, Funny)
You'll take your flames like every one here.
BTW, BSD is dying, vi is better than emacs, open office is bloated, linux only has one game called tuxracer, and memory managed programming languages are slow.
Re:MySQL hatred thread (Score:1)
you forgot one.....
Linux, the OS you never have to reboot! unless you have a driver problem, or you reconfigure your kernel, or you have a hardware problem with CPU, disk or memory...
ok, you don't have to reboot if you change your IP!
Re:MySQL hatred thread (Score:1)
Re:I'll read it, then what? (Score:2)
Intermediate level? (Score:5, Insightful)
However, considering the average DB design skillz of a commonplace/low-rent PHP developer (or at least the ones I have had to clean up after). I am hopeful that more developers using PHP/MySQL will actually take the time to look at the content in this or other definitive books on MySQL.
Re:Intermediate level? (Score:2)
can't both possibilities be true? why can't the book be geared toward an intermediate/advanced mysql user in terms of assumed skillset, features covered, etc., but also include a really good chapter on db design?
Re:Intermediate level? (Score:3, Insightful)
Re:Intermediate level? (Score:4, Funny)
Re:Intermediate level? (Score:2)
Re:Intermediate level? (Score:1)
Re:Intermediate level? (Score:1)
Re:Intermediate level? (Score:2)
you now believe that the database design chapter was relative? you'd place money on the chapter helping civilization? you can see how someone would be so bothered to include a chapter on database design.
Oh, you cursed and incomplete sentence! We shall never know your true meaning.
Then get a book on database design. (Score:2)
I wouldn't expect a book about using C++Builder to delve into designing C++ programs using common patterns, for instance. It's supposed to be about C++Builder, rather than designing C++ programs.
Re:Then get a book on database design. (Score:3, Insightful)
It also claims to be the definitive guide. If something is definitive, it's got to be complete. You can't properly use a SQL DBMS without understanding the principles of the SQL language.
This is especially true since MySQL takes liberties with the SQL standard which already diverges widely from the relational model.
It's specifically about MySQL. (Score:2)
Again, it isn't the "Definitive Guide to SQL" or the "Definitive Guide to Relational Database Design". It's supposed to focus on specifically on MySQL itself, rather than more general SQL a
Re:It's specifically about MySQL. (Score:2)
Worse - unless things have changed it's an incomplete SQL (even SQL92) implementation.
Consequently, it certainly was necessary, in previous versions, to review the link between relational calculus/algebra and 'SQL', since one couldn't even rely on the normal advice about normalisation when subqueries were not supported...
(Btw, I'd be very interested to know if this still stands - I gave up with it when I found out how far from a relational D
Re:It's specifically about MySQL. (Score:2)
Strict data handling (in strict mode, if the data doesn't fit the column type, it's rejected with an error), INFORMATION_SCHEMA, and SQLSTATE error messages - supported in 5.0.
The handling of some joins has been changed in 5.0 so they're now compliant with SQL:2003.
More: What's New in MySQL 5.0 [mysql.com]
LOL (Score:2)
Re:Intermediate level? (Score:2)
"Should" being the operative word.
In practice, this just isn't the case.
For example, a unique ID for a primary key on a database could be implemented as a autonumber field in mysql, or a sequence in oracle.
This changes the application using the database. What if that ID is the foreign key for child tables? Transactional support may be handled differently if the parent table's primary key is known before initiating the tra
Quiet in this thread (Score:5, Interesting)
Perhaps something less insulting to the user should have been chosen? e.g. "--novice" or "--safety=on"? I understand that they're trying to be funny, but they've never seen a highly frustrated newbie before. The poor sap may be so flustered that having the documentation call him a "dummy" might just be the last straw.
Alternatively, your boss might not find it so funny when you tell him you'll just flip on the "I'm a dummy" flag. I know that my boss wasn't too impressed when I told him that I was going to use Bouncy Castle [bouncycastle.org] for encryption. The API is really great, but the name doesn't exactly scream "Professionsl!"
In the same vein, I always got a kick out of the naming for the ElectricFire [mozilla.org] JVM. From "How did the project get it's name?":
Re:Quiet in this thread (Score:5, Informative)
Re:Quiet in this thread (Score:2)
Re:Quiet in this thread (Score:1)
Re:Quiet in this thread (Score:1)
Re:Quiet in this thread (Score:2)
I don't see the need for a new option to warn people when they make major changes to the database, when the transaction system should be able to take care of it.
MySql has transactions now, right? Just get people into the habit of typing BEGIN; before they start to work, and they shouldn't get into trouble, an d no insultingly named options are needed.
DDL autocommits (Score:2)
Re:DDL autocommits (Score:2)
PostgreSQL has no problem rolling back table changes - I can open a transaction and create or drop tables; add, delete, or change the types of columns in tables, change rules, triggers, and stored procedures, and undo everything with a single ROLLBACK;.
It's really handy, because I can make a set of changes, and run some test queries to mak
Re:DDL autocommits (Score:2)
Re:Quiet in this thread (Score:1)
Re:Quiet in this thread (Score:2)
I find linux error messages refreshingly human. Often verbose and clear, in the vein of "I am
Re:Quiet in this thread (Score:2)
Pre-requisite Packages... (Score:5, Informative)
MySQL is rarely used alone. (Score:2)
Considering that MySQL is mainly used for web-based tasks, it's most likely a very useful choice for most people who are purchasing the book. It gives them what they want, while also offering examples to those who are using MySQL for non-WWW-related jobs.
Re:Pre-requisite Packages... (Score:1)
On the other hand, what I didn't like about this particular book is that it covers use of many languages (Java/Perl/PHP/C/VB) on the surface, without getting into the gory details of any language that one needs for real programming.
For example, last week I was trying to figure out the best way to use "datetime" types in
MySQL (3rd ed) Paul DuBois (Score:1)
Also, forward references to sections are a hasle as sections lack numbering (granularity is just chapters) and a page number isn't provided either. For a book this big
"That is not a criticism of the author..." (Score:4, Funny)
Aside from a few sentences of vague praise, the bulk of this "book review" is a summary of the table of contents.
How about a guide to embedding Gecko? (Score:1, Offtopic)
Indeed, the online documentation is terrible. It is horribly outdated (we're talking 2 or 3 years here), and thus barely relevant today. Even if it might still be somewhat useful, there are often interfaces that have been changed, and the documentation ends up being more misleading than helpful. The example program
Re:How about a guide to embedding Gecko? (Score:2)
I think I remember seeing a book on this when I did my article on free books [blogspot.com]. Ah, here we are. [phptr.com] If I'm not mistaken, "Rapid Application Development with Mozilla" should cover the topic you're interested in. You can even download it [phptr.com] at no cost as part of Peren's dedication to Open Source Books.
Embedding Gecko, or using it as a platform? (Score:2)
Re:Embedding Gecko, or using it as a platform? (Score:2)
If you're thinking that they're different, perhaps you're only looking for the ActiveX Control [mozilla.org]? You can get the binaries here [www.iol.ie]. It should work *exactly* lik
They're two separate activities. (Score:2)
Most of the documentation focuses on using XUL to design Firefox-like applications. It looks like that book focuses on that as well. I was considering embedding Gecko into a proprietary C++ GUI toolkit. I was not interested in designing an XUL application on top of Mozilla. That is why such documentation was useless.
The somewhat relevant
Re:They're two separate activities. (Score:2)
At the end of the day, though, the only way to really get going is to do as the Embedding FAQ [mozilla.org] suggests,
Re:They're two separate activities. (Score:1, Troll)
Frankly, people who are developing serious projects (that is, often for money) with Mozilla do not have time to "muck around" with examples, especially ones of atrocious quality. We need solid documentation that is up-to-date, accurate, helpful and with
Re:They're two separate activities. (Score:2)
Frankly, people who are developing serious projects (that is, often for money) with Mozilla do not have time to "muck around" with examples, especially ones of atrocious quality.
Well, the way I see it your options are:
1. Read the book I linked to and gleen enough internal understanding of the sy
You're wrong on several counts. (Score:2)
I read the book you linked to. It is about creating XUL applications on top of Mozilla. It is not about embedding Mozilla within existing applications. Hence it is useless.
The examples are basically useless to much around with. They are poorly documented, and are meant
Correction (Score:2)
My take... (Score:4, Funny)
A murder in the silent after-hour halls of the Louvre museum reveals a sinister plot to uncover a secret that has been protected by a clandestine society since the days of Christ. The victim is a high-ranking agent of this ancient society who, in the moments before his death, manages to leave gruesome clues at the scene that only his granddaughter, noted cryptographer Sophie Neveu, and Robert Langdon, a famed symbologist, can untangle. The duo become both suspects and detectives searching for not only Neveu's grandfather's murderer but also the stunning secret of the ages he was charged to protect. Mere steps ahead of the authorities and the deadly competition, the mystery leads Neveu and Langdon on a breathless flight through France, England, and history itself. Kofler has created a page-turning thriller that also provides an amazing interpretation of Western history. Kofler's hero and heroine embark on a lofty and intriguing exploration of some of Western culture's greatest mysteries--from the nature of the Mona Lisa's smile to the secret of the Holy Grail. Though some will quibble with the veracity of Kofler's conjectures, therein lies the fun. The Definitive Guide to MySQL 5 is an enthralling read that provides rich food for thought.
Re:My take... (Score:2)
--
Evan
Re:What about 4.0 to 5.0? (Score:2)
PHP is not the natural companion any more (Score:2)
Since MySQL 5.0 handles Unicode really well (except for regular expressions), and since PHP has close to zero Unicode support, and since any serious programming uses Unicode today, it's hardly correct to see PHP as the natural companion to MySQL 5.0. Perl and Python and Ruby however have excellent Unicode support.
It will probably be a while before we see decent Uni
ad-review (Score:1)
Do you have to put that there? Is this really needed?