diff options
author | Carlo Zancanaro <carlo@clearboxsystems.com.au> | 2013-05-14 11:12:05 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@clearboxsystems.com.au> | 2013-05-14 11:12:05 +1000 |
commit | d70e99185025eeef545248321c04d885aa6a38c2 (patch) | |
tree | 0995a99feaee8de5ed0725db6f45ce34d247e682 /README.md | |
parent | a60e513dddaf82894b34f7e12f48922aa1217bac (diff) |
Most of the RA stuff works now.
Need to fix up the compilation to return a query ready for value substitution
by the jdbc stuff, or something (rather than embedding parameters in the
query).
Also need to add insert!, update! and delete! functions.
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 30 |
1 files changed, 28 insertions, 2 deletions
@@ -1,10 +1,36 @@ # clojure-sql -A Clojure library designed to ... well, that part is up to you. +A DSL for [Clojure][1] to compose queries using the constructs of [Relational +Algebra][2]. The RA constructs are then compiled into an SQL query to be run on +a DBMS. + +`clojure-sql` provides some utility functions beyond strict RA to allow for +data to be inserted, updated and deleted. + +`clojure-sql` provides no mechanism to create database schemas. + +[1]: http://clojure.org/ +[2]: http://en.wikipedia.org/wiki/Relational_Algebra ## Usage -FIXME + (require '[clojure.sql :as s]) + + (-> (s/table :users) + (s/project [:id :username]) + deref) + ; => "SELECT \"users\".\"id\", \"users\".\"username\" FROM \"users\"" + + (-> (s/table {:users :u}) + (s/project [:id :username]) + (s/rename {:id :uid}) + (s/join (-> (s/table {:people :p}) + (s/project {:id :pid, :fname :first}) + (s/select '(= :first "Henry"))) + '(= :uid :pid)) + (s/project [:username]) + deref) + ; => "SELECT \"u\".\"username\" FROM \"users\" AS \"u\" JOIN \"people\" AS \"p\" ON (\"u\".\"id\" = \"p\".\"id\") WHERE (\"p\".\"fname\" = 'Henry')" ## License |