内置SQL语句
INSERT语句
由Sql.insertInto()创建 或Sql.with()创建CTE后insert()创建
sql
INSERT INTO table VALUES (val1,val2...) ,(val1,val2...)... ;
INSERT INTO table (col1,col2,col3...) VALUES (val1,val2...) ,(val1,val2...)... ;
INSERT INTO table SELECT select_statement ;
WITH cte_calse INSERT INTO table SELECT select_statement ;DELETE语句
由Sql.deleteFrom()创建 或Sql.with()创建CTE后delete()创建
sql
DELTE FROM table WHERE condition... ;
WITH cte_calse DELTE FROM table WHERE condition... ;UPDATE语句
由Sql.update()创建 或Sql.with()创建CTE后update()创建
sql
UPDATE table SET xxx=xxx,xxx=xxx... ;
WITH cte_calse UPDATE table SET xxx=xxx,xxx=xxx... ;SELECT 语句
由Sql.select()创建 或Sql.with()创建CTE后select()创建
说明
- table_ref 可以是子查询等
LIMIT ? OFFSET ?子句 根据数据库不同,使用LIMIT ? OFFSET ?或OFFSET ? ROWS FETCH NEXT ? ROWS ONLY, 不支持ROW_NUMBER()方式,因此某些较老的数据库不被支持
sql
[WITH cte_clase]
SELECT [DISTINCT] selection...
[FROM table_ref]
[LEFT|RIGHT|FULL|CROSS|NATURAL JOIN table_ref [ON condition...]]
[WHERE condition...]
[GROUP BY col]
[HAVING condition...]
[LIMIT xxx [OFFSET xxx]]集合运算/操作
sql
SELECT xxx UNION|INTERSECT|EXCEPT [ALL] SELECT xxx
[UNION|INTERSECT|EXCEPT [ALL] SELECT xxx]CTE子句
Sql.with()创建
Query可以是SELECT语句或集合运算/操作
sql
WITH [RECURSIVE] cte1 [(col_alias...)] AS ( Query)
[,cte2 [(col_alias...)] AS (Query)]并非所有语句都支持所有数据库, 最终支持情况取决于数据库,如果数据不提供某些功能且没有可以优雅替代的方式 很可能就会执行出错,比如CTE支持