ClojureQL 主要用于查询。对插入(conj! table records) 和删除(disj! table predicate) 有一些支持,但主要是提供基于关系运算符project、select 和rename 的SQL 接口。
要执行您要求的查询,您可以访问 clojure.java.jdbc,ClojureQL 在后台使用它。
首先,DDL 命令可以在 clojure.java.jdbc.ddl 命名空间的帮助下完成:
;; create table t1 (id int, name varchar(50), age varchar(100));
(execute! db
(create-table :t1
[:id :int]
[:name "VARCHAR(50)"]
[:age "VARCHAR(100)"])
;; drop table table3;
(execute! db
(drop-table :table3)
我认为您那里的其他两个操作没有语法支持,但您可能可以像这样向数据库发送原始查询。
(execute! db
["insert into table1(id, name, age) select id, name, age from table2"])
如果你正在做很多迁移/ddl-y 类型的事情,我认为有一些库有更多的语法支持,因为clojure.java.jdbc.ddl“故意有一个非常小的 DDL 语法”。 (可能是Lobos 或Ragtime?)