> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/heavyai/llms.txt.
> For full documentation content, see https://docs.nvidia.com/heavyai/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/heavyai/_mcp/server.

# INSERT

Use INSERT for both single- and multi-row ad hoc inserts. (When inserting many rows, use the more efficient [COPY](/loading-and-exporting-data/command-line/load-data#copy-from) command.)

```
INSERT INTO <table> (column1, ...) VALUES (row_1_value_1, ...), ..., (row_n_value_1, ...);
```

## Examples

```sql
CREATE TABLE ar (ai INT[], af FLOAT[], ad2 DOUBLE[2]); 
INSERT INTO ar VALUES ({1,2,3},{4.0,5.0},{1.2,3.4}); 
INSERT INTO ar VALUES (ARRAY[NULL,2],NULL,NULL); 
INSERT INTO ar VALUES (NULL,{},{2.0,NULL});
-- or a multi-row insert equivalent
INSERT INTO ar VALUES ({1,2,3},{4.0,5.0},{1.2,3.4}), (ARRAY[NULL,2],NULL,NULL), (NULL,{},{2.0,NULL});
```

You can also insert into a table as SELECT, as shown in the following examples:

```sql
INSERT INTO destination_table SELECT * FROM source_table;
```

```sql
INSERT INTO destination_table (id, name, age, gender) SELECT * FROM source_table;
```

```sql
INSERT INTO destination_table (name, gender, age, id) SELECT name, gender, age, id  FROM source_table;
```

```sql
INSERT INTO votes_summary (vote_id, vote_count) SELECT vote_id, sum(*) FROM votes GROUP_BY vote_id;
```

You can insert array literals into array columns. The inserts in the following example each have three array values, and demonstrate how you can:

* Create a table with variable-length and fixed-length array columns.
* Insert `NULL` arrays into these colums.
* Specify and insert array literals using `{...}` or `ARRAY[...]` syntax.
* Insert empty variable-length arrays using`{}` and `ARRAY[]` syntax.
* Insert array values that contain `NULL` elements.

```sql
CREATE TABLE ar (ai INT[], af FLOAT[], ad2 DOUBLE[2]); 
INSERT INTO ar VALUES ({1,2,3},{4.0,5.0},{1.2,3.4}); 
INSERT INTO ar VALUES (ARRAY[NULL,2],NULL,NULL); 
INSERT INTO ar VALUES (NULL,{},{2.0,NULL});
```

## Default Values

If you [create a table](/sql/data-definition-ddl/tables#create-table) with column that has a default value, or [alter a table](/sql/data-definition-ddl/tables#alter-table) to add a column with a default value, using the INSERT command creates a record that includes the default value if it is omitted from the INSERT. For example, assume a table created as follows:

```sql
CREATE TABLE tbl (
   id INTEGER NOT NULL, 
   name TEXT NOT NULL DEFAULT 'John Doe', 
   age SMALLINT NOT NULL);
```

If you omit the name column from an INSERT or INSERT FROM SELECT statement, the missing value for column `name` is set to `'John Doe'`.

`INSERT INTO tbl (id, age) VALUES (1, 36);` creates the record `1|'John Doe'|36` .

`INSERT INTO tbl (id, age) SELECT id, age FROM old_tbl;` also sets all the name values to `John Doe` .