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条件只支持主键常量值条件,并且要带上所有的主键列。