SQL Cookbook 172
Simon P. Chappell writes "One of the staples of corporate I.S. development is processing data, and increasingly these days that data lives in a relational database. The lingua franca of relational database programming is the Structured Query Language (SQL), often pronounced "sequel". Many programmers find that the basics of SQL are easy to learn, but after that, it tends to get complicated. Enter the SQL Cookbook from O'Reilly." Read the rest of Simon's review.
SQL Cookbook | |
author | Anthony Molinaro |
pages | 595 (9 page index) |
publisher | O'Reilly |
rating | 8/10 |
reviewer | Simon P. Chappell |
ISBN | 0596009763 |
summary | If you need help working with a database, this is the book for you. |
The book is not for beginners and makes no efforts to teach any SQL. It concentrates purely on building on the base level of SQL knowledge that most programmers have. If you know the basics: Create, Read, Update and Delete (an unfortunate, yet memorable acronym) but rarely go beyond that, this book is for you. I know that I fall into this target market.
The point of the cookbook is that you need to get something done and you need to get it done sooner rather than later. Now, most of us can figure out most things given enough time, but in the real world, we rarely have enough time. The cookbooks objective is to save you time by giving you a successful approach that you could have figured out eventually anyway.
If you've previously read any other technology cookbook from O'Reilly, then you already know the structure of the recipes. For those new to the O'Reilly cookbook format, it's actually fairly straightforward. Each recipe starts out with a problem statement. Recipe one in chapter one, titled "Retrieving all Rows and Columns from a Table" has the problem statement "You have a table and want to see all of the data in it." Nice and clear. Then comes the solution. Naturally, for this problem statement we end up with a SELECT that looks like this:
select * from emp
Then the recipe has a discussion section where the solution is explained in more detail and the reasoning behind it is provided. For recipe one, the discussion explores the trade-offs between using the "*" to signify all columns versus naming each column explicitly.
The chapter structure through the book is very much one of building on the previous material. The first chapter starts with the fundamentals, the retrieving of records and then chapter two takes over with sorting the results of your query, while chapter three looks at using multiple tables.
Chapter four covers inserting, updating and deleting records. After that it's back into the world of queries, with chapter five exploring metadata queries for those times when you need to know just a little more about what's going on under the covers. Chapter six looks at working with Strings, a much harder topic than it would seem at first thought. Chapter seven addresses working with numbers and chapter eight does the same for date arithmetic with chapter nine bringing more understanding to general date manipulation. Chapter ten looks at working with ranges.
Chapter eleven dives into advanced searching in preparation for chapter twelve's information on reporting and (data) warehousing. Hierarchical queries are always challenging, so they're reserved for chapter thirteen. Finally, chapter fourteen is titled "Odds 'n' Ends" and is a general catch-all for some pretty advanced, but very infrequent problems.
I guess you either like the recipe approach or not. I love it, so I'm listing it as something to like about this book. The recipes are very well explained and while each one presents only one approach, where there are obviously multiple options, the discussion takes care to explain the reasoning behind the selection.
The writing is clear and the explanations are well laid out. Both the SQL code and the query results are presented well and are easy to read.
A very important part of the book is that it covers SQL variations for Oracle, IBM's DB2, Microsoft SQL Server and the open-source databases PostgresSQL and MySQL. Each of the recipes includes solutions for each of the five databases. While SQL is a standard, there seems to be some very relaxed definitions of full adherence to that standard; hence the book has to present up to five solutions for each problem.
Many of the recipes are advanced. While the front of the book has the entry level material, it ramps up in complexity pretty quickly. For some of us with very straightforward SQL knowledge, some of the recipes are going to take a while to fully understand and be able to use.
Many of the recipes are obviously oriented towards corporate reporting. If this is a big need for you, then this book goes along way to meeting your needs. If you have no need for corporate reporting, it's wasted paper.
This is an excellent book; it does exactly what it sets out to do and fully equips you to handle the most sophisticated database transactions.
You can purchase SQL Cookbook from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Recommendation (Score:4, Informative)
Re:Recommendation (Score:4, Insightful)
In my experience, the people who generally most need SQL books like this are the report guys...You know, not really IT, just kinda work on the fringes of things with Access and Crystal Reports...Don't know much about code, but are good with the data. I can see one of these being really useful. I have the Java Cookbook (and the Php cookbook, as it happens. =P), and they're pretty handy, though they fill a niche that I usually fill with google.
Re:Recommendation (Score:5, Informative)
Problems with finding answers on the web:
1) The code for the answers to problem A and problem B don't necessarily work together
2) The code is of questionable quality. I'm six months in to teaching myself PHP (and CSS, SQL, and a few web server applications) and I can tell you that the code I wrote just two months ago was utter crap, largely because it was based on web tutorials that completely neglected good practices.
3) I have no prior experience or training with programming, which makes it hard to even know where to start looking for a solution. Books like this have helped me learn how to know what I need to search for.
Re:Recommendation (Score:5, Informative)
Not only is it obviously a complete reference guide to the language, but the user comments on each function often cover a wide variety of uses that can help solve your particular problem. More importantly, if poor quality code is posted, someone will often post a cleaned up version.
Not to knock books at all. Just saying, there's a great free resource out there that is vastly superior to the hundreds of ad ridden script sites.
Re:Recommendation (Score:2)
I went and picked up O'Reilly's Safari Service [oreilly.com], and while it is perfectly sufficient for slogging through an entire book, it's pretty inadequate the day-to-day function reference stuff, mainly due to its clunky interface. Fine, you need to split the pages up, but if I have to load a new page more than once a chapter, I'm going to be pissed. I'm not pleasure reading here, I
Re:Recommendation (Score:2)
Now, I would like to have this book to support my own ends, but as a report guy, I don't particularly need it. Why not? Because Crystal does it for me. Anything so complicated that Crystal will screw it up, I wouldn't be doing in Crystal anyway. That's when I would need more SQL for actual work, but the fact is that I don't need it anyway, because I don't have to do any reports too complex for crystal.
Meanwhile, no one with sense is going to write their own SQL (except for occasional SQL statements to r
Re:Recommendation (Score:3, Interesting)
I'm a report guy, and let me tell you that you cannot count on Crystal to do it all for you. Sometimes the request comes in is too complex to solve without using correlated subqueries, derived tables, and the like which Crystal Won't properly use for you.
Trust me, I work for an online gaming company, and
Re:Recommendation (Score:2)
Re:Recommendation (Score:2)
Then you don't know how to use Crystal well enough. Compared to Xreporter or Jasper or R&R Report writer, it's pretty damned good, don't kid yourself.
Re:Recommendation (Score:2)
Re:Recommendation (Score:4, Interesting)
Now, I am in a job where currently, I am testing data that is being modified through a series of transforms. We test by loading the end work and taking it back to the initial work (i.e. we reverse the process). We find it easy to load the data into a Postgres DB, create views with conversion functions to take end->initial and then run an assortment of queries over the data to make certain that it is correct. I have found that I do go back to several book to make sure of my sql as well as to improve the speeds (a subquery took 20 min to run while using a except gaves a similar answer in under several seconds. BIG difference considering that we are looking at many tables with a number of tests each).
The books help.
Re:Recommendation (Score:1)
It is amazing how much you can optimize things if you know what your doing and can visualize things well..
only issue i have is that i tend to over design/build things.. which makes them take longer.. but i have never had to restart from scratch to implement something new so it is worth while
Re:Recommendation (Score:2)
The problem is many report people and PHP guys can't use more advanced sql techniques like:
The other problem is we're hired to do work n
Re:Recommendation (Score:5, Insightful)
Re:Recommendation (Score:1)
Re:Recommendation (Score:2)
I know most of you have read this one, but as a service to our new readers:
The Art of Unix Programming [catb.org]. I read that one as a budding PHP coder; while very Unix/C centric (well, duh) the basic philosophies will benefit any coder. My code's not that good, really, but without the principles outlined in the book it would be absolutely horrid.
If the PHP kiddies would read it we would at least have properly indented code.
I forget; what's the official Slashdot position on ESR these days?
Re:PHP cookbook (Score:2)
sequel? (Score:5, Funny)
Re:sequel? (Score:2)
Re:sequel? (Score:3, Funny)
"Sequel cookbook"? Yeah, that's appetizing.
Re:sequel? ...... Squeal (Score:2)
Though outside of our office we do use the better known "sequel"
Re:sequel? (Score:1, Funny)
Microsofties say "sequel" (Score:1, Informative)
Re:Microsofties say "sequel" (Score:3, Interesting)
Re:Microsofties say "sequel" (Score:5, Informative)
Oh, and as to the OP stating that SQL is difficult, try IMS.
I'll take any SQL system over an IMS or other heirarchical anyday. :P I had the unfortunate need to learn IMS after years of various SQL databases. Sure it is faster, but what a learning curve!
I always thought it was Squirrel Server (Score:1)
To be in 1NF, your data must first be "acornic" in that it cannot be broken down further. There must be no repeating groups of acorns; and each row of acorns must depend entirely on the massive acorn (aka key acorn) that the squirrels use to organize the other acorns.
This also explains wh
Re:Microsofties say "sequel" (Score:2, Insightful)
For example, if you want to change data you use a different command to changing database structure.
Re:Microsofties say "sequel" (Score:2)
Nitpick: If an RDBMS has properly implemented updatable views for the catalogue, you should be able to run insert/update/delete statements against the catalogue tables and have DDL happen automatically. SQL itself doesn't prohibit this that I know of, though probably very few RDBMS's actually allow updatable system tables. In practice, you can sometimes get away with this for simple datatype changes (that don'
Re:Microsofties say "sequel" (Score:1)
Re:Microsofties say "sequel" (Score:3, Funny)
Re:Microsofties say "sequel" (Score:2)
Re:Except... (Score:2)
Re:Microsofties say "sequel" (Score:1)
Re:Microsofties say "sequel" (Score:2)
Is that pronounced 'phew' or eff-double u-eye-double u?
You sound funny (Score:5, Funny)
Wrong (Score:2)
Re:You sound funny (Score:1)
From your post, I am assuming you think it's pronounced "mysequel" which it's not. Officially, it's pronounced "my ess que ell".
http://dev.mysql.com/doc/refman/4.1/en/what-is.ht
Re:You sound funny (Score:2)
Re:MySQL pronunciation (Score:2)
About the name MySQL (Score:2)
It just happens to mean "My SQL" in english.
And, no, I didn't just make that up.
A MySQL employee told me this when I asked why he didn't* pronounciate the products name as either "My sequel" or "My S.Q.L".
*) This was in Sweden. Don't know how they say it other countries... Seems stupid from a sales standpoint to stick to a non-intuitive (for a native english speaker) pronounciation outside of MySQLs hom
Pronouncing it as "sequel"... (Score:1, Insightful)
You know how stupid it sounds when someone pronounces Linux as "Line-uhx"? Well that's exactly how smart you sound like when you pronounce SQL as "sequel".
Re:Pronouncing it as "sequel"... (Score:2)
It always amuses me when someone goes off on the pronunciation of "Linux"... Linus Torvalds pronounces it "lee-noox". Some years back, I saw a usenet post in which he was quoted as saying that, for natives of countries where his name would be pronounced "line-us", it is appropriate to pronounce it "line-ux".
And yet the people who are dogmatic about the "correct" pronunciation almost invariably insist that it must be pronounced "lin-
Provided... (Score:2)
Bullshit (Score:2, Informative)
Second, I know plenty of mainframe and UNIX guys from way back who say "sequel" for SQL, some former IBMers, others not. The only people I ever hear call it "ess-que-ell" are management types and some FOSS people who have only ever heard about databases from reading stuff on the web and have never had a real job working with real databases.
Re:Bullshit (Score:1)
Re:Bullshit (Score:2)
Re:Bullshit (Score:2)
Re:Bullshit (Score:2)
I originally got caught in the heat of the moment - have to remember that it doesn't really matter, so long as everyone understands what everyone's talking about.
Re:Microsofties say "sequel" (Score:3)
The structured query language is abbreviated 'ess cue ell.'
So it's perfectly correct to say, "let's see how that ess cue ell code performs on the sequel server."
Re:Microsofties say "sequel" (Score:2)
yet, highly confusing.
Other database companies call the database a sequel server.
More accuratly:
"So it's perfectly correct to say, "let's see how that ess cue ell code performs on the MS sequel server."
This all goes to Microft naming things in an unclear manner to make people think everything in an area of computing is theirs.
Re:Microsofties say "sequel" (Score:2)
BN vs. Amazon (Score:5, Informative)
This looks like a very handy reference for those of us who can read SQL statements alright, but have grown lazy with all the GUI SQL-statement builders that exist now.
Re:BN vs. Amazon (Score:3, Informative)
Just google for it. It's an extension these days, not a greasemonkey script, which has its good and bad points (hard to add another bookstore yourself).
Too bad SKU's aren't common in the public-facing interface of online merchants
Re:BN vs. Amazon (Score:2)
Re:BN vs. Amazon (Score:2)
Re:BN vs. Amazon (Score:2)
Re:BN vs. Amazon (Score:2)
Re:BN vs. Amazon (Score:2)
Yes, it's an affiliate link, flame away, what do I care.
Re:BN vs. Amazon (Score:2)
Re:BN vs. Amazon (Score:2)
Or get it in PDF format from your favorite torrent site for $0.
Re:BN vs. Amazon (Score:2)
I will, actually! (Score:3, Insightful)
Yup, and I will, because Amazon sucks balls, what with their 1-click patents and "oh, by the way, all that stuff we promised before? Not so much!" privacy policies. Unlike some Slashdotters, I actually put my money where my mouth (or keyboard, if you prefer) is.
The practical SQL handbook (Score:5, Informative)
Re:The practical SQL handbook (Score:1)
Re:The practical SQL handbook (Score:2)
Joe Celko (Score:4, Informative)
Re:Joe Celko (Score:1)
More Cooking with SQL (Score:5, Funny)
FROM Refrigerator
GROUP BY NO.dozen
INSERT INTO my_fryingpan (eggs1, butter1)
UPDATE my_table SET toast = 'lightly browned'
INSERT hole INTO toast
MERGE eggs INTO toast
USING (
SELECT Eggs, Toast)
CREATE Breakfast eggy_toast
DELETE FROM my_table WHERE plate = 'N'
Re:More Cooking with SQL (Score:5, Funny)
FROM Refrigerator
GROUP BY NO.dozen
INSERT INTO my_fryingpan (eggs1, butter1)
UPDATE my_table SET toast = 'lightly browned'
INSERT hole INTO toast
MERGE eggs INTO toast
USING (
SELECT Eggs, Toast)
CREATE Breakfast eggy_toast DELETE FROM my_table WHERE plate = 'N'
You fool! You didn't specify nolock in that first select statement
. . .
. . .
and I don't know if it's sadder that you wrote that SQL statement or I critiqued it
Re:More Cooking with SQL (Score:1)
Correction (Score:2)
Re:More Cooking with SQL (Score:3, Funny)
You fool! You didn't specify nolock in that first select statement
by bmalia (583394)
nolock? Is that like a MS SQL Server thing? I've never seen/used a nolock in Oracle or MySQL.
Ahh, the irony is almost as delicious as the breakfast!
Re:More Cooking with SQL (Score:3, Informative)
Re:More Cooking with SQL (Score:2, Funny)
Re:More Cooking with SQL (Score:2)
CREATE TRIGGER AFTER UPDATE TO Mental_Picture IF NEW.image = 'Eggs & Bacon' AND NEW.sound = 'Sizzle' EXECUTE PROCEDURE Salivate(NOW());
A book about SQL? Revolutionary! (Score:1, Funny)
Speak more slowly, please... (Score:4, Funny)
Thank you, Mr. Obvious!
There is also a MySQL Cookbook (Score:2, Informative)
Re:There is also a MySQL Cookbook (Score:2)
sql (Score:3, Funny)
SQL is a standard. Is it? (Score:1, Informative)
SQL variations ... While SQL is a standard, there seems to be some very relaxed definitions of full adherence to that standard...
Or, as Jim Starkey said: 'SQL isn't a standard but a theme'. For a book, it means list 5 different dialects. For regular developers (not database specialists) it means knowing only one dia
Re:SQL is a standard. Is it? (Score:2)
http://en.wikipedia.org/wiki/SQL [wikipedia.org]
Re:SQL is a standard. Is it? (Score:1)
> The standard itself is fully documented.
On how many pages? Maybe the size of the standard is the problem.
> Blame the developers, not ANSI.
I'm not blaming the developers, as it's quite impossible to implement this huge standard. I don't blame the commitee. They did what such a group usually does: they held meetings. Lots of them.
Still, there is no standard. Otherwise, how do you explain having to list 5 dialects?
Re:SQL is a standard. Is it? (Score:2)
The Microsoft rep says "hey, we have to support language extensions for row locking this way, because that's how our engine works." Oracle says "Well, let's just agree to call row locking an 'extension' but not define it because we do it differently." The DB2 guy says "Everybody needs to be able to DROP TABLE, so that should b
Re:SQL is a standard. Is it? (Score:5, Informative)
Yes, there's a great deal of nonconformance and extensions.
But, there is a standard, in fact, five: SQL-86, SQL-89, SQL-92, SQL:1999 and SQL:2003 (yeah, dashes replaced by colons, go figure). SQL:2003 can be purchased from ANSI or ISO, just like the C or C++ standards.
Various sites [www.tar.hu] list product conformance to the standards.
When I write SQL, I pretty rigorously stick to SQL-99, as that's likely to be supported by most vendors. If I need to deviate from that, I make sure I know how to replicate the vendor-specific code in SQL-99 (e.g, postgresql's inherits keyword -- it's useful for sub-typing, but it can be effected by using joins and views).
If the non-standard code is DML (not DDL), I'll do my best to encapsulate it in a stored procedure or a view, and let the rest of my code call the encapsulated abstraction. This is just the same layering you'd do in any programming language to wall off platform-specific code. And just as you'd typedef in C or create abstract types in C++, you create UDTs in SQL too.
Here's an example, using a useful testing date "function" that is cross-dialect, doesn't rely on any user-supplied function support, and can be incorporated into live code.
(And yes, you can hire me.)
Re:SQL is a standard. Is it? (Score:2, Informative)
Sample chapter (Score:4, Informative)
40 pages, 500k PDF
Yawn... (Score:1)
Ah well, it could be worse - it could be teaching me how to build another class registration system....
Re:Yawn... (Score:2)
Re:Yawn... (Score:1)
What I could use... (Score:1)
Half the time I am using PHP for something SQL could do in a couple simple commands.
Re:What I could use... (Score:1)
SQL Cookbook Lowest Price (Score:1)
http://www.alienegg.com/lowest-price-finder.php?ur l=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2F059 6009763%2Fsr%3D1-1%2Fqid%3D1147293625%2Fref%3Dsr_1 _1%2F002-4415993-5683262%3F%255Fencoding%3DUTF8 [alienegg.com]
Not for beginners?!? Doubtful (Score:2, Informative)
I am not sure how anyone can resolve the following found in the review - emphasis mine.
Time to put SQL out to pasture (Score:2)
SQL for Smarties (Score:3, Informative)
Re:Mispronunciation (Score:1, Informative)
Re:Mispronunciation (Score:1, Interesting)
Re:Mispronunciation (Score:1)
Re:Mispronunciation (Score:2)
But when I'm wearing my blue wizard hat, I refer to it by the convenient name, "sequel" which is actually a different product, but everyone knows what I'm talking about.
"Ess cue ell" is what management types call it, because they love spelling out acronyms to make themselves sound important.