Skip to content

数据操作语言(DML)

本章节将介绍 Ignite 3 支持的所有数据操作语言(DML)命令。

1.DELETE

从表中删除数据。

sql
DELETE FROM tablePrimary [ [ AS ] alias ]
[ WHERE booleanExpression ]

2.INSERT

往表中插入数据。

sql
{ INSERT } INTO tablePrimary
[ '(' column [, column ]* ')' ]
query

2.1.联接

Ignite支持并置的和非并置的SQL关联,此外,如果数据在不同的表中,Ignite可以做跨表的关联。

3.MERGE

往表中合并数据。

sql
MERGE INTO tablePrimary [ [ AS ] alias ]
USING tablePrimary
ON booleanExpression
[ WHEN MATCHED THEN UPDATE SET assign [, assign ]* ]
[ WHEN NOT MATCHED THEN INSERT VALUES '(' value [ , value ]* ')' ]

参数

  • tableName:要更新的表名;
  • columnName:要用VALUES子句中的值初始化的列名;

描述

MERGE会更新已有的条目,或者插入新的条目。

示例:

NewPersons表的数据合入Person表:

sql
MERGE INTO Person USING NewPersons

4.SELECT

从一个表或多个表中检索数据。

sql
SELECT [ hintComment ] [ ALL | DISTINCT ]
    { * | projectItem [, projectItem ]* }
FROM tableExpression
[ WHERE booleanExpression ]
[ GROUP BY { groupItem [, groupItem ]* } ]
[ HAVING booleanExpression ]

5.UPDATE

更新表的数据。

sql
UPDATE tablePrimary
SET assign [, assign ]*
[ WHERE booleanExpression ]

6.WITH

定义一个命名的子查询,然后在后面的子查询中引用。

sql
WITH  { query_name [( columnName [,...] )] AS ( query ) [,...] }

参数

  • query_name:要创建的子查询名,该名字会被视为内联视图或表;

描述

WITH创建一个子查询,可以按名称引用一个或多个公用表表达式。列名声明是可选的,即列名可以从命名的查询中推断出来。WITH语句中的最后一个操作可以是SELECTINSERTUPDATEMERGEDELETE或者CREATE TABLE

示例:

sql
WITH cte1 AS (
        SELECT 1 AS FIRST_COLUMN
), cte2 AS (
        SELECT FIRST_COLUMN+1 AS FIRST_COLUMN FROM cte1
)
SELECT sum(FIRST_COLUMN) FROM cte2;

18624049226