描述

该语句用于添加一个或多个记录到表中。

格式

  1. INSERT [hint_options] single_table_insert
  2. single_table_insert:
  3. { INTO insert_table_clause opt_nologging '(' column_list ')' values_clause [{ RETURNING | RETURN } returning_exprs [into_clause]]
  4. | INTO insert_table_clause opt_nologging '(' ')' values_clause [{ RETURNING | RETURN } returning_exprs [into_clause]]
  5. | INTO insert_table_clause opt_nologging values_clause [{ RETURNING | RETURN } returning_exprs [into_clause]]
  6. }
  7. opt_nologging: { NOLOGGING | /*EMPTY*/ }
  8. returning_exprs:
  9. projection [, ...]
  10. into_clause:
  11. { INTO into_var_list | BULK COLLECT INTO into_var_list}
  12. into_var_list:
  13. { USER_VARIABLE | ref_name } [, ...]

参数解释

参数

描述

hint_options

指定 hint 选项。

insert_table_clause

指定的插入的表,可以是基表、可更新视图、特殊子查询。

opt_nologging

尽量减少插入时的日志信息

column_list

指定要插入的列名。

returning_exprs

返回插入数据之后的投影列。

into_clause

将插入数据之后的列值插入到指定列表中。

注意

特殊子查询指的类似于可更新视图对应的子查询,这类子查询不应该包含复杂的算子(比如group by/distinct/window function等)

示例

示例表及数据基于以下定义:

  1. OceanBase(admin@test)>create table t1(c1 int primary key, c2 int);
  2. Query OK, 0 rows affected (0.16 sec)
  3. OceanBase(admin@test)>select * from t1;
  4. Empty set (0.02 sec)
  • 单表插入:向表 t1 中插入一行数数据。
  1. OceanBase(admin@test)>insert into t1 values(1,1);
  2. Query OK, 1 row affected (0.01 sec)
  3. OceanBase(admin@test)>select * from t1;
  4. +----+------+
  5. | c1 | c2 |
  6. +----+------+
  7. | 1 | 1 |
  8. +----+------+
  9. 1 row in set (0.04 sec)
  • 单表插入:直接向子查询中插入数据
  1. OceanBase(admin@test)>insert into (select * from t1) values(1,1);
  2. Query OK, 1 row affected (0.01 sec)
  3. OceanBase(admin@test)>select * from t1;
  4. +----+------+
  5. | C1 | C2 |
  6. +----+------+
  7. | 1 | 1 |
  8. +----+------+
  9. 1 row in set (0.01 sec)
  • 单表插入:包含returning子句。
  1. OceanBase(admin@test)>insert into t1 values(1,1) returning c1;
  2. +----+
  3. | C1 |
  4. +----+
  5. | 1 |
  6. +----+
  7. 1 row in set (0.02 sec)
  8. OceanBase(admin@test)>select * from t1;
  9. +----+------+
  10. | C1 | C2 |
  11. +----+------+
  12. | 1 | 1 |
  13. +----+------+
  14. 1 row in set (0.01 sec)