---
title: "插入数据 - OceanBase 数据库 V4.2.5 | OceanBase 文档中心"
description: 插入数据 表创建后，可以使用 INSERT 语句或其他语句向表中插入行记录。本文介绍了相关语句的使用方法和示例。 数据插入准备 在插入数据前，请确认以下事项： 请确认您已连接到数据库的 Oracle 租户，连接数据库的操作请参见 连接方式概述 。 说明 当前登录租户所属的租户模式可以由 sys 租户通过查询 ocea…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.5 LTS

# 插入数据

更新时间：2026-07-15 20:56:58

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.5/zh-CN/300.develop/200.application-development-of-oracle-mode/400.write-data-of-oracle-mode/100.insert-data-of-oracle-mode-in-develop.md)  

表创建后，可以使用 `INSERT` 语句或其他语句向表中插入行记录。本文介绍了相关语句的使用方法和示例。

## 数据插入准备

在插入数据前，请确认以下事项：

- 请确认您已连接到数据库的 Oracle 租户，连接数据库的操作请参见 [连接方式概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001499915)。

  #### 说明

  当前登录租户所属的租户模式可以由 `sys` 租户通过查询 `oceanbase.DBA_OB_TENANTS` 视图进行确认。
 - 请确认您已拥有待操作表的 `INSERT` 权限，查看当前用户权限的相关操作请参见 [查看用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502670)。如果不具备该权限，请联系管理员为您授权，用户授权的相关操作请参见 [直接授予权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502665)。

## 使用 INSERT 语句插入数据

请使用 [INSERT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001504054) 语句，再参考下面的建议，向表中插入数据。

`INSERT` 语句语法格式如下：

```sql
INSERT INTO table_name (list_of_columns) VALUES (list_of_values);

```

| 参数 | 是否必填 | 描述 |
| --- | --- | --- |
| table_name | 是 | 指定需要插入数据的表 |
| (list_of_columns) | 否 | 指定表中需要插入数据的列 |
| (list_of_values) | 是 | list_of_columns 提到的列的对应值，必须一一对应。 |

### 插入数据建议

- 插入数据前，建议了解表的所有列信息，包括列类型、有效值以及是否允许为 NULL 等。

  查看列信息可以通过 `DESC` 语句查看。

  ```shell
  obclient [SYS]> DESC ordr;
  +-------+--------------+------+-----+---------+-------+
  | FIELD | TYPE         | NULL | KEY | DEFAULT | EXTRA |
  +-------+--------------+------+-----+---------+-------+
  | C1    | NUMBER       | YES  | NULL | NULL    | NULL  |
  | C2    | VARCHAR2(50) | YES  | NULL | NULL    | NULL  |
  +-------+--------------+------+-----+---------+-------+
  2 rows in set

  ```

     - 如果列属性为 `NOT NULL`

           - 如果列属性有默认值，则可以在插入时不指定该列的值，系统会在该列上插入默认值。
           - 如果列属性无默认值，则插入时必须指定该列的值。
     - 如果列属性为 `NULL`，则可以在插入时不指定该列的值，系统会在该列上插入一个 `NULL` 值。
 - 插入数据前，建议了解表上列的约束定义情况，避免插入数据时报错。

  `NOT NULL`、`PRIMARY KEY` 约束、`UNIQUE` 约束均可以通过 `DESC` 语句查看，`FOREIGN KEY`、`CHECK` 约束可以通过查询 `ALL_CONSTRAINTS`、`DBA_CONSTRAINTS` 或 `USER_CONSTRAINTS` 视图进行查看。

### 插入单行数据

通过 `INSERT` 语句可以插入单行数据。如果需要插入多条记录，可以执行多个单行插入语句来实现。如果需要批量插入，可参考 [批量插入多行数据](#批量插入多行数据) 进行操作。

假设待插入数据的表信息如下：

```shell
obclient [SYS]> CREATE TABLE t_insert(
    id number NOT NULL PRIMARY KEY,
    name varchar(10) NOT NULL,
    value number,
    gmt_create DATE NOT NULL DEFAULT sysdate
 );
Query OK, 0 rows affected

```

其中，表的 `id` 列、`name` 列不能为空，且 `id` 列为主键列，满足唯一性约束要求，不能有重复的值； `gmt_create` 列指定了默认值。

示例 1：使用多个单行插入语句插入多行数据。

由于 `gmt_create` 列指定了默认值，在插入数据时可以不指定默认值。

```shell
obclient [SYS]> INSERT INTO t_insert(id, name, value)
VALUES (1,'CN',10001);
Query OK, 2 rows affected

obclient [SYS]> INSERT INTO t_insert(id, name, value)
VALUES(2,'US', 10002);
Query OK, 2 rows affected

```

注意，如果 `gmt_create` 列未指定默认值，则在插入数据时，必须指定值，语句如下。

```shell
obclient [SYS]> INSERT INTO t_insert(id, name, value, gmt_create)
 VALUES (3,'EN', 10003, sysdate);
Query OK, 1 row affected

```

### 批量插入多行数据

在插入数据时，如果要插入多条记录，也可以用一个 `INSERT` 语句包含多个 `VALUES` 来批量插入。单个多行插入语句比多个单行插入语句要快。

示例 1 中的操作，又可以通过以下语句来完成。

示例 2：批量插入多行数据。

```shell
obclient [SYS]> INSERT INTO t_insert(id, name, value)
  VALUES (1,'CN',10001),(2,'US', 10002);
Query OK, 2 rows affected

```

此外，当需要备份表数据或者将一个表的全部记录拷贝到另一个表时，可以使用查询语句 `INSERT INTO ... SELECT ... FROM` 充当 `INSERT` 的 `values` 子句进行批量插入。

示例 3：将表 `t_insert` 中的全部数据备份到 `t_insert_bak` 表中。

```shell
obclient [SYS]> SELECT * FROM t_insert;
+----+------+-------+------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+------------+
|  1 | CN   | 10001 | 31-OCT-22  |
|  2 | US   | 10002 | 31-OCT-22  |
|  3 | EN   | 10003 | 31-OCT-22  |
+----+------+-------+------------+
3 rows in set

obclient [SYS]> CREATE TABLE t_insert_bak(
    id number NOT NULL PRIMARY KEY,
    name varchar(10) NOT NULL,
    value number,
    gmt_create DATE NOT NULL DEFAULT sysdate
 );
Query OK, 0 rows affected

obclient [SYS]> INSERT INTO t_insert_bak SELECT * FROM t_insert;
Query OK, 2 rows affected
Records: 3  Duplicates: 0  Warnings: 0

obclient [SYS]> SELECT * FROM t_insert_bak;
+----+------+-------+------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+------------+
|  1 | CN   | 10001 | 31-OCT-22  |
|  2 | US   | 10002 | 31-OCT-22  |
|  3 | EN   | 10003 | 31-OCT-22  |
+----+------+-------+------------+
3 rows in set

```

## 使用 MERGE INO 语句插入数据

在批处理任务中，可能需要对目标表进行大量的 `INSERT` 操作。当待插入的数据在表记录中不存在时，也可以使用 `MERGE INTO` 语句将源表的记录插入到目标表中，具体操作及示例请参见 [替换数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001499909)。

#### 说明

在使用 `INSERT` 语句插入数据时，如果表上有唯一性约束，则在插入相同的记录时，系统会报错，您可以通过 `MERGE INTO` 语句来更新表记录，避免唯一性约束的冲突。

## 通过 DBLink 使用 INSERT 语句插入数据

当前 OceanBase 数据库支持通过 DBLink 向 OceanBase 数据库（Oracle 模式）和 Oracle 数据库中写入数据。

通过 DBLink 向远端数据库的表 `t1` 中插入一行数据 `(11,11)` 的示例如下：

```shell
obclient> SELECT * FROM t1@ob_dblink;
+------+------+
| C1   | C2   |
+------+------+
|    1 |    1 |
+------+------+
1 row in set

obclient> INSERT INTO t1@ob_dblink VALUES (11,11);
Query OK, 1 row affected

obclient> commit;
Query OK, 0 rows affected

obclient> SELECT * FROM t1@ob_dblink;
+------+------+
| C1   | C2   |
+------+------+
|    1 |    1 |
|   11 |   11 |
+------+------+
2 rows in set

```

## 相关文档

- [更新数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001499908)
 - [删除数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001499907)
 - [替换数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001499909)
 - [通过 DBLink 修改远端数据库中的数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001501861)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
