|
If you use Oracle SQL on a regular basis, and are looking for more power without turning to procedural SQL, greater understanding of what's possible with Oracle SQL, and overall greater mastery of the language, then this book definitely deserves a place in your library. The book aims to fill the gap between the sometimes spotty vendor documentation, and other non-vendor-specific books on SQL that just don't explore the full depths of what is possible with Oracle-specific SQL. Mastering Oracle SQL certainly hits this mark, and proves to be a very valuable resource for getting the most out of Oracle's breed of SQL.
The authors claim that the book is targeted towards both beginners and seasoned professionals, however a beginner might find himself somewhat confused at terminology that is used before being formally introduced, as well as examples that quickly become quite complicated. We're definitely beyond the basic SELECT name FROM employee very early on in the book.
The first couple of chapters describe at a breakneck pace the basics of SQL, and then coverage leaps into joins. And all I can say is wow! They don't call this book Mastering Oracle SQL for nothing. The authors exhaust the possibilities for every type of join you can imagine, inner joins, outer joins, inner self joins, outer self joins, non-equi-self-joins, and more. And this type of thorough coverage sets the tone for the rest of the book.
The book continues with coverage of the basic aggregate functions (sum(), count(), the GROUP BY and HAVING clauses, etc.) and if you don't get enough there they really open the firehose up in the later chapters of the books to show you just how powerful the various aggregate and analytical functions available in Oracle SQL can be.
Continuing, the book offers chapters dedicated to subqueries (including the very handy inline view capabilities of Oracle SQL), methods for handling temporal data (think date and timestamp data types), set operators (UNION, INTERSECT, and MINUS), heirarchical queries (START WITH...CONNECT BY), and inline conditional expressions via CASE and DECODE. The book also covers the basics of partitioning, objects, and collections. Plentiful examples of each topic are provided throughout each chapter.
A chapter introducing PL/SQL shows you briefly how to create your own stored procedures, functions and packages. A very nice aspect of this part of the book is how the authors show you many ways to accomplish difficult tasks using only SQL where many SQL programmers would be tempted to turn to PL/SQL to get the job done.
Finally, a nice chapter on SQL best practices wraps the book up by reviewing the more important points covered throughout the text.
One very nice feature in the book is how the authors are very good to point out gotchas you might encounter, and particularly workarounds to limitations in Oracle's implementation of SQL. In this way the book falls squarely into the role for which it was intended, i.e., mastering the topic—knowing the inherent strengths and shortcomings of the product, and how to leverage the strengths while working around the shortcomings.
Throughout the book the authors include coverage on new features availble in the newer Oracle 9i, and they are very careful to point out which features covered are available in the various older releases of Oracle (as well as which ones are not).
Mastering Oracle SQL passes the practicality and timeliness rating with flying colors. I've already been able to use several tricks I've learned from the book to great advantage in my daily work.
In conclusion, if you want to get beyond the simple examples in most books covering SQL, and get a better picture than what the references and the Oracle documentation itself have to offer, Mastering Oracle SQL will be an invaluable tool in your hands.
Overall rating: 9/10
|