INSERT INTO

INSERT INTO用于实时写入数据。

语法定义

INSERT INTO tbl_name [(col_name,...)] VALUES ({CONSTANT|NULL|DEFAULT},...),(...),...
  • 判断数据冲突与否的依据是主键,不定义主键也可以使用INSERT INTO
  • 如遇数据重复(主键冲突),默认忽略该行。
  • INSERT INTO在VALUES中没有指定值的列,系统会自动补默认值(DDL中定义的默认值)。

样例:

### 单条写入,指定列
insert into t (c1, c2, c3) values(1, 1.0, 'hello_1')
insert into t (c1, c2, c3) values(1, 2.0, null)
insert into t (c1, c3) values(3, 'hello_2')

### 单条写入,不指定列
insert into t values(1, 1.0, 'hello_1')
insert into t values(1, 2.0, null)
insert into t values(1, 2.0, default)

## 批量写入 (强烈推荐)
insert into t values(1, 1.0, 'hello_1'),(2, 2.0, 'hello_2'),(3, 3.0, 'hello_3'),(...)

REPLACE INTO

REPLACE INTO用于实时覆盖写入数据。

语法定义:

REPLACE INTO tbl_name [(col_name,...)] VALUES ({CONSTANT|NULL|DEFAULT},...),(...),...
  • 判断数据冲突与否的依据是主键,不定义主键也可以使用REPLACE INTO
  • 如遇数据重复(主键冲突),会覆盖当前记录;没有重复的记录,等同于INSERT IN语义。
  • REPLACE INTO在VALUES中没有指定值的列,系统会自动补默认值(DDL中定义的默认值)。

UPDATE INTO

UPDATE INTO用于更新写入数据,是HybridDB for MySQL定制的一种高性能批量更新语法。

语法定义:

UPDATE INTO tbl_name [(col_name,...)] VALUES ({CONSTANT|NULL|DEFAULT},...),(...),...
  • 要求表一定要有主键。
  • VALUES中要带上所有的主键列,并且包含至少一个非主键列。
  • 对表中主键列匹配的行进行更新,更新对应的非主键列的值。
  • 如果VALUES中指定的行在表中不存在,则忽略该行。

DELETE FROM

DELETE FROM用于删除记录。

语法定义:

DELETE FROM tbl_name
WHERE pk_col1 = ... and pk_col2 = ...
  • 要求表一定要有主键。
  • WHERE条件只支持主键常量值条件,并且要带上所有的主键列。