Very valuable insights on MySQL although get to be very repetitive for those who read it as a whole, because I think it was written as a reference so every section could be used as a standalone explanation and if something missing there would be given its page. Otherwise, it is an excellent diveInto MySQL with experienced warrants about pitfall and tips on its usage.
It is a precious book! just its organisation following two models at the same time make it larger than it is necessary (cognitive : listing all information about an element. And as a problem-solving approach : making each element as a standalone point that suffices you to answer a particular question).
He could avoid make it so huge (1224 pages 4th edition). If he has chosen to treat it as a cookbook or as a reference book but not both. That is I'm not talking about the reference section that is rightfully included at the end of such books.
Besides of the repetitive content, there is something that I found problematic with this book.
My explanation for it is either that technical writers give there content to other writers, to dilate it to make it easier to understand, other explanation is when try to translate your thoughts from your mother tongue (French) to English, it happens with me all the time, what happens is that sometimes the meaning will be affected.
Consider this expression at page 169 of the 4th edition :
" ORDER BY within an individual SELECT is used only if LIMIT is also present, to determine which rows the LIMIT applies to" the first think that come to my mind is that it is syntax restriction, whether it is in fact just doesn't make much sense to do it otherwise, one word change the whole meaning "only", consider the above sentence without it
"ORDER BY within an individual SELECT is used with LIMIT to determine which rows the limit applied to" sounds more meaningful?
Consider this expression at page 162 of the same edition :
" When ALL , ANY , or SOME are used with the = comparison operator, the subquery can be
a table subquery. In this case, you test return rows using a row constructor to provide the
comparison values. " when a reader land on this expression he will deduce that a row constructor is only used with 'ALL, ANY or SOME' when in fact a row constructor is used whenever you compare multiple columns in the where statements.
Consider this too at page 186 :"A foreign key
relationship can be set up to disallow NULL values, in which case all foreign key values
must match a value in the parent table."
This expression dangerous expression will make you have the assumption that with non-null values a matching value in the parent table isn't enforced which is not the case.
The book is filled with that kind of false flags. Those are not very dangerous to the meaning if you invest more time to think, your reading will be slower as if you're debugging a program in C.
This is such a waste since the book can be made into a 400 page book without even remotely touching the meaning, and make it easier to understand and grasp to the reader.
Look at this :
<<12.10.1 General Multiple Server Issues:
...For source distributions that you compile yourself, you can use the --prefix option for configure to specify a different installation location for each distribution.
....>> "just in the next section"
<<12.10.2 Configuring and Compiling Different Servers:
The easiest way to keep different distributions separate is to indicate a different installation base directory for each one by using the --prefix option when you run configure .>>
The last one is just a tiny example of what seem to be a masturbation of back and forth on the same idea throughout the book, entire sections with the same meaning, to make the frightening book of 1200 pages.