sqlstatement - Generate complex SQL statements programmatically

The main goal of this library is to be able to construct an SQL 
statement from "slices" that concern different aspects of the final 
query (perhaps in different places in your code) and then combine them 
all together into one statement easily. 

Another important goal of this library is to give some consistent Ruby 
syntax to three statements (INSERT, SELECT, and UPDATE) that seem to 
have different enough syntax that one has two write different code to 
generate each kind of statement. 

I use my SQL database (specifically MySQL) largely as a bulk data 
processing engine, by doing INSERT...SELECT or CREATE TABLE...SELECT 
statements. This library is intended to make that kind of coding easier. 
I expect that Object Relational mappers (such as ActiveRecord) are more 
useful for most people, who are performing queries and 
inserting/updating/querying for individual records. I have nevertheless 
added INSERT...VALUES statements, and will add other statements soon, for
consistency. 

This library is inspired by CLSQL for Common LISP, or SchemeQL for 
Scheme, although it is very different from these two libraries. Scheme 
and LISP”Ęs use of s-expressions make it very easy to construct an entire 
sublanguage for the WHERE clause, simply by list parsing. The Criteria 
library for Ruby has attempted this, but in a more limited manner than 
SchemeQL or CLSQL. My library aims to cover much of the functionality in 
these libraries. 

This library doesn”Ęt try to abstract out the limitations of your DBMS, 
and I think that the SQL it uses should be fairly portable, in large 
measure because it hasn”Ęt attempted to deal with serious CREATE TABLE 
statements, where a lot of syntax concerning types, keys and sequences 
is much more variable. 

This library can be downloaded from 
http://rubyforge.org/projects/sqlstatement/
Its rdoc documentation is online at http://sqlstatement.rubyforge.org/

License: BSD license

-- 
Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/
I've added a signing subkey to my GPG key. Please update your keyring.