# clojure-sql 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 (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 Copyright © 2013 FIXME Distributed under the Eclipse Public License, the same as Clojure.