|Title:||The Definitive Guide to SQLite|
|Review date:||26 June 2006|
Disclosure: I received a free copy of the book. A Python SQLite wrapper that I wrote (APSW) is featured in chapter 6 and I reviewed a draft of that chapter for the author. I moved the BitPim project to SQLite in 2004 as the underlying storage mechanism.
You will definitely be able to go from nothing to having a good understanding of SQL in general and the SQLite 3 implementation in particular. The book will cover your needs whether you are using SQL, the C API or another language binding.
Unicode is not covered and it is arguable as to whether Unicode is under the remit of this book. It is however a very important topic and SQLite only stores Unicode strings - no other encoding is supported. I strongly suggest reading Joel's guide, locales and collation (sorting) before reading the book.
SQLite is well documented, with the API documentation included as part of the code and then extracted and put on the web site along with other topics such as a FAQ, appropriate uses, SQL syntax, locking and concurrency, architecture etc. There is also a thriving mailing list.
On getting the book, with a big "SQLite" on the cover, I immediately flipped through it. It seemed to cover every aspect of SQLite ranging from installation, through SQL and the relational theory behind it, all of the C API, language bindings and even the underlying virtual machine. There are copious examples and diagrams. I looked at the cover again and noticed "The Definitive Guide to" in small letters above the big "SQLite". Very apt. I was also glad that it is not a reformatted printout of the website as many current computer books seem to be.
The good thing about a book is that it has an order - a beginning, middle and end. Topics build on each other. The website is great for finding a quick answer, with this book building out your underlying knowledge in logical progression.
I thoroughly enjoyed reading the book from cover to cover. The chapter about the fundamentals underlying relational databases with Codd's principles and efforts academically justifying it are amusing since SQL obviously works and is suitable for many tasks but there used to be times of doubt!
My favourite part is in chapter 4 on page 85 there is a diagram showing how SELECT actually works and the processing order of the various clauses (FROM, WHERE, GROUP BY etc). I wish that had been included as a nice big poster with the book (maybe in the 2nd edition Mike?) After winging it till now, it is good to understand what really happens and in what order.
I strongly recommend using SQLite in your applications (as appropriate) and I recommend getting this book to get up to speed, find out about all the concepts and to complement the online documentation and mailing list.