MySQL Cards and Charts 79
Michael J. Ross writes "Database programmers using MySQL frequently have a need to verify the name or parameter list of a MySQL function, or to check a statement or the data types available within its implementation of SQL. This typically occurs when the programmer is caught up in a coding session, and would much rather not break their creative flow by searching Web sites for the needed information, or stepping away from their computer to hunt for a reference book. In these cases, nothing could be more valuable than a concise summary of all SQL statements and MySQL functions, in a form compact enough to be kept within reach on the desk or tacked up to the nearest wall space. This is the goal of the VisiBone MySQL Cards and Charts." Read on for the rest of Michael's review.
These two products contain the same information, with the same formatting and color coding. They differ primarily in their construction, sizes, and likely destinations. The MySQL Cards — often referred to as cheat sheets — are 8.5 by 11 inches in size, made of card stock that has been laminated on both sides of each pair of cards, for a total of four pages of information. The MySQL Chart is 24 by 33.3 inches, printed of course on only one side. The VisiBone Web page devoted to these products notes that the cards have the advantage of portability, while the chart has the advantage of presenting all of the information in one glance. (The Web site fails to mention that the large chart has the additional advantage that it can be used to cover blemishes on a wall, such as those caused by a Web programmer banging his head against it when wrestling with browser incompatibilities.)
MySQL Cards and Charts | |
author | Bob Stein |
pages | 4 |
publisher | VisiBone |
rating | 10 |
reviewer | Michael J. Ross |
ISBN | N/A |
summary | High-quality reference materials for MySQL functions and SQL statements |
The March 2007 edition of the cards and chart cover MySQL version 5.2 and ISO/ANSI SQL 2003 specification. Such a tremendous amount of technical information needed to be packed into relatively small form factors, offering limited space — especially compared to books. Consequently, all of the available space had to be used judiciously. That is precisely what Bob Stein, principal of VisiBone, has accomplished with these items. Each one diagrams the syntax for 84 SQL statements and 236 MySQL functions and operators. In a private communication, Mr. Stein noted that no fewer than 194 of MySQL's 225 reserved words are included. (Of the remaining 31 reserved words, 7 are apparently not used anywhere in MySQL, 13 are quite obscure, and 11 are functionally synonymous with other terms — mostly column types from other database engines.)
Given the small amount of space available, there would be the danger of the material being difficult to read. Fortunately, Mr. Stein utilized shades of gray, white and black, blue (to indicate MySQL statements that are not standard ISO/ANSI), and the occasional red (to indicate the most commonly needed information). He also made full use of space on the right hand side of each page, for the largest sidebars, and the remaining space in the middle, for more modestly sized topics. Lastly, he chose a readable type size of 9 points.
The MySQL Cards present the SQL statements and MySQL functions separately, each on their own cards, in alphabetical order. The SQL statements are less horizontally linear and more diagrammatic, to indicate alternative and optional keywords. For each function, the return data type and parameters are given, as well as a pithy summary of what the function does, or an illustrative example. There are a total of 182 examples of the functions and operators, all tested.
The MySQL Chart includes the identical information provided by the cards, but with all of the SQL statements listed down the left-hand side, and all of the MySQL functions down the right-hand side.
Reviews of technical materials oftentimes focus exclusively on the product itself, with no mention as to its delivery. That might make sense for a technical book that could be ordered, packaged, and shipped from any one of many online bookstores, or purchased in person at a local bricks-and-mortar bookstore. In contrast, these MySQL products, like all other VisiBone products, are packaged and shipped from the company's only location, in Brunswick, Maine. The smaller size of such an operation allows for greater attention to each individual shipment. Furthermore, the cards are mailed in sturdy cardboard flats, with directions not to be bent. Charts are mailed in double-hulled cardboard tubes that are even more sturdy.
It is rare that one encounters such excellent products in the fast-paced world of technical publishing. However, I can offer just two minor suggestions for improvement. Even though the color choices generally work quite well, the medium gray used as the background color is probably not the best choice, since almost all of the text is in black. A lighter shade of gray — perhaps that used for a couple of the sidebars, such as "GROUP_CONCAT()" — with a corresponding change in those sidebars, would make the text stand out more.
The only other weakness I found was the use of the term "Habitat," as an adjective for "Shell," "PHP," and "Web Browser." The meaning may be immediately obvious to those of greater intelligence than myself (not that that narrows the field), but my presumption was not confirmed until I saw mention of the term on the aforesaid Web site. The term "Sample" would be more clear.
The chart is the ideal size for a poster, and the 8.5"x11" cards work well; but if the cards were folded into two or three panels, they would be easier to stand up on a desk, and not get buried underneath papers and books.
Nonetheless, the overall quality of these cards and charts is outstanding; the information they offer is accurate, up-to-date, and neatly presented; the protective packaging was appreciated. Even the levity was a nice touch: Despite the limited unused space on the cards, Mr. Stein manages to still squeeze in a bit of humor concerning ISBN bar codes.
Looking over these materials would, for anyone non-technical, probably cause their eyes to glaze over. But for the dedicated MySQL programmer, it can be a humbling experience, largely because it reveals just how little of the language is known or used on a regular basis — by most database programmers, or, at least, by this one. Slowly perusing the information-rich pages, I found myself delighted to discover for the first time functions and statements that would allow my future MySQL code to do more natively, within uncompiled statements, stored procedures, and triggers, without resorting to performing the processing within PHP or whatever other application language will be used.
Lastly, each shipment is accompanied by a letter from Mr. Stein, in which expresses to the customer his appreciation for their order, and his genuine excitement in the potential that any developer has to use his tools to help develop something great. He makes clear that the focus of his efforts is to create "visualization technology for web designers" that will help them do their job better.
Although these items are not books, the VisiBone MySQL Cards and Charts could easily replace the typical MySQL reference book for most occasions when a question of language syntax needs to be resolved as quickly and conveniently as possible. I especially recommend the MySQL Cards, not only for the wealth of information, but for the way that it put all of it "at mental fingertip reach."
Michael J. Ross is a Web programmer, freelance writer, and the editor of PristinePlanet.com's free newsletter.
Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
As a developer (Score:2)
gotta catch 'em all (Score:4, Funny)
Re:gotta catch 'em all (Score:4, Funny)
It is ineffective if your opponent had already played "Upgrade to Postgresql".
Re: (Score:1)
Oh man, you should have saved that for the bonus round.
This is degrading. (Score:2)
http://gotapi.com/ (Score:2)
A bunch of stuff from C++ to the Flickr API. It has a nifty search as you type thing.
Re: (Score:2)
Awesome (Score:3, Informative)
Re: (Score:1)
Creative flow...? (Score:4, Insightful)
Re: (Score:2)
What color is the sky in your world? In my world, you have to read all the comments below the pages in the manual to find the errors and downright lies in the text. Ditto for many other web-documented projects, especially PHP, whose documentation sans comments would be enough to drive you to tears.
Re: (Score:1)
Re: (Score:1)
Re: (Score:1, Insightful)
Unless you have been there its difficult for the non-creative type to imagine how this process works, but it does and its creativity in another realm and pace entirely.
Good luck.
Re:Creative flow...? (Score:4, Insightful)
I completely disagree with the spam article's premise that it'd be faster for me to go find a card laying somewhere on my desk, or that my creative flow wouldn't be broken by STANDING UP AND GOING TO LOOK AT A WALL POSTER, rather than going to the absolutely excellent MySQL documentation site [mysql.com], where I can actually cut and paste from examples. There's hardly ever a question about MySQL syntax or SQL functionality I can't get from the MySQL documentation. The only places where the MySQL developer guide lacks is in performance guidelines, but I don't expect that the spammed product does a better job on a laminated card.
Re: (Score:2)
Re: (Score:2, Interesting)
Re: (Score:2)
Nonsense.
I agree with your argument that good programs "are the result of thought, design and effort," but I strongly disagree that disrupting creative flow is not detrimental to well-designed programs.
I frequently write proof-of-concept code while in a state of 'creative flow' -- after taking a period of time to settle in to the job at hand and get the creative juices (so to speak) flo
Re: (Score:2, Insightful)
Re: (Score:3, Insightful)
Just because the design is finalized (or you're in a pre-design stage, as others have noted), it doesn't mean you
Next up (Score:1)
Re: (Score:1)
Re: (Score:3, Funny)
Sweet (Score:2)
Re: (Score:1)
Re: (Score:2)
I understand that different implementations are different. But I want to avoid what's different, and try to use what's widely implemented so I can switch DBMSs if necessary. For that, wouldn't it be most useful to have the widely implemented features of the SQL standard documented, along with which DBMSs do not implement those features? That would document the differences you mention. Then, in a separate section, the rest of the features, the more different on
Re: (Score:2)
Re: (Score:1)
Re: (Score:3, Informative)
For instance: MS SQL Server 2000, as a database that uses locks, likes small transactions. The smaller the better. A long running transaction in MS SQL is potentially troublesome. Big transaction locks row, another connection waits
Re: (Score:2)
Still, it would be easier to switch from SQL Server to Postgres if I stuck with features available in both. And it would be easier to do that if the documentation listed features that were widely available, and mentioned if any of
Re: (Score:1)
Most of the chart is blue.
Re: (Score:2)
I don't understand the response to this question. I have learned dozens of programming languages, usually ones that have different implementations. When I read them, they do not contain different chapters on different implementations. In C++ books, they discuss C++ and perhaps talk about implementation differences between compilers. For example, they say that an int is a data type that can hold integer values between -32768 and 32767, and can possibly hold larger and smaller values. They may even give examp
Re: (Score:2)
Even a semi-complex query with a limit of rows to return can vary from one implementation to another. Compound this with the fact that MySQL wasn't even created to be a standards compliant database, and a lot of the compliance is tacked on, and even then breaks in cert
Re: (Score:3, Informative)
I don't understand why so many SQL references contain separate sections for different DBMSs. ... Dammit, SQL has been standardized for twenty years! Shouldn't I able to write just SQL by now? --bunratty [slashdot.org]
You know I really intended to make a comprehensive SQL reference from the start, covering MySQL, Microsoft, Oracle and possibly Postgre. And I stubbornly held onto that goal for 80% of the project. But I gave it up for two reasons. For one, researching MySQL took so long, I knew the release would delay another year if I researched Microsoft, Oracle and Postgre as well.
But the more compelling reason was the vast quantity of MySQL-only features. (Actually the delay was more compelling, but this incomp
MySQL 5.2? (Score:2)
Re: (Score:1)
Not really... (Score:2)
Try MySQL Query Browser (Score:1)
Screenshot (lower right):
http://www.mysql.com/products/tools/query-browser
Then if you double-click the function it brings up a popup telling you the full usage + description.
\h (Score:2)
(though if you frequently need a reference for freaking SQL statements, I think there might be something wrong with you)
Anything similar for PostgreSQL? (Score:2)
These look like they'd be quite useful. Does anyone out there know of something similar, only for PostgreSQL instead of MySQL?
Re: (Score:1)
Re: (Score:3, Informative)
The main things missing are generate_series, current_setting, and set_config. There are also several new system information functions in PostgreSQL 8.2; see the documentation at http://www.postgresql.org/docs/8.2/static/function s-info.html [postgresql.org] for a list.
Why not do a review of a services documentation? (Score:5, Insightful)
documentation for the documentation-less (Score:2)
Documentation isn't an afterthought, it's supposed to be the blueprint for what you build (just like a house). How is the team in agreement on what's being built without something written down?
The mind boggles at how people get so close to documenting their systems and yet still miss many of the benefits.
Excellent resource (Score:1)
What - is the Internet broken? (Score:2)
What - is the Internet broken?
I remember some of the more clueless people (e.g. English majors) pulled into IT in the late 90s resorting to primitive measures like this, but really, would anyone really do this in 2007?
Ooo, a slashvertisement! (Score:4, Insightful)
Ok...
or to check a statement or the data types available within its implementation of SQL.
Still with you...
This typically occurs when the programmer is caught up in a coding session,
Really? I usually run into this problem when I'm watching television.
and would much rather not break their creative flow by searching Web sites for the needed information,
If I wrote that most database programmers would not care to spend their evening with Natalie Portman and some grits, would that make it true?
or stepping away from their computer to hunt for a reference book.
Yeah, because I bet all those MySQL database programmers have no idea where their MySQL reference book is. I bet they have to spend a whole 3 seconds reaching to the shelf behind them, or typing 'mysql <command name>' into Google.
In these cases, nothing could be more valuable than a concise summary of all SQL statements and MySQL functions,
How about a beer?
in a form compact enough to be kept within reach on the desk or tacked up to the nearest wall space.
How about a beer on a shelf?
This is the goal of the VisiBone MySQL Cards and Charts
The card might make a good coaster.
Also...
1. State the existence of a problem. (Actual existence not necessary)
2. State the lack of solutions to problem (Actual lack of solutions not necessary)
3. Submit statement to Slashdot until read by lazy editor.
4. Profit!!!
Sites CC payment is dead (Score:1)
Credit Card Error - The bank did not seem to approve that transaction.
Also sets off noscript's cross site scripting error.
Re: (Score:1)
Re: (Score:1)
rumors of CC payment death, greatly exaggerated (Score:1)
Free MySQL Cards & others (Score:2)
http://old.refcards.com/refcards/index.html [refcards.com]
It has free refcards for:
AMSTeX
Apache
Catalyst NEW (21 July 2005)
C
Emacs calc
cvs
emacs
gdb
mod_perl
Perl regular expressions
Template Toolkit
TeX
XEmacs
MySQL
HTML DOM
XHTML 1.0 frameset
XHTML 1.0 strict
XHTML 1.0 transitional
CSS level 1
CSS level 2
XPath
XSL
XSLT
XML TopicMaps 1.0
Very slick indeed.
Todd
ILoveJackDaniels.com cheat sheets (Score:2)
Re: (Score:2, Informative)
I didn't read the review (Score:3, Interesting)
Because of this:
and would much rather not break their creative flow by searching Web sites for the needed information,
I don't get that assertion at all. I keep a PostgreSQL, PHP and ADOdb tab open for my various projects. Looking through those manuals is a lot more helpful and a lot easier than a cheat-sheet. When I'm looking up something, it's because it's non-trivial, and I'll need context and examples. Or I want to do something odd, and I'm wondering if there's already a handy function or query that does what I need (SELECT FOR UPDATE to lock a row, as a simple example) so I don't have to programmatically reinvent the wheel. I guess if you need to recall the order of an UPDATE clause this might be helpful, but otherwise, no.
Besides, there's barely enough room on my desk for the laptop and a martini. I'd have to hold the cheat-sheet in my mouth.
(On a side note, I've been using Panic's Coda [panic.com] since they released 1.0. It's pretty swell. Their "Books" feature, though, is significantly less useful than the Web manuals. The PHP manual is particularly unhelpful compared to the Web version.)
Cards and Charts so low tech... (Score:1)
I'd rather see MySQL have an intuitive online help interface. Built into the command interpreter. I.E. SQL statements would be used to look up the reference
I envision something like mysql> SELECT help_snippet from mysql.functions where name like '%myfunctionname%' \G Result: help_snippet: (text describing the function)
Alternate Review (Score:1)
The cards come as 2 laminated 8.5x11 duplex sheets. Visibone's JavaScript and HTML cards are also 2 sheets, but they are connected at the spine to make a mini book, and in the case of the JavaScript cards each page has a unique border color. These small details
MySQL cheatsheet (Score:1)
If you want to select records use: SELECT
If you want to update records use: UPDATE
If you want to delete records use: DELETE
If you want to use a database use: USE
This list can also be used with other db systems.
IDE with code completion / on-line help is better (Score:2)
Hardcopy is slow (Score:1)
If locating the information on a hardcopy cheat sheet is faster than locating it using Google, either you have the slowest dial-up ever (or no IC--in that case, sure), you're the slowest typist ever (how long does it take to type a search query?), or you've memorised the exact location of every item on the cheat sheet, in which case you don't need it anymore: you have it memorised.
I use reference books, textbooks, &c a lot, but not for a quick lookup of a command I need right now.
Visual Stimuli (Score:1)