Skip to content

内置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支持