insert into
用于使用
VALUES 子句向表插入数据。注:
若要向分布式表中插入数据,请先调整配置项 enableInsertStatementForDFSTable。
语法
insert into
table_name1 (colName1 [, colName2, ...])
values (X [, Y, ...]) | select col_name(s) from table_name2
其中, colName 指定目标表中的列名,可以有以下三种方式:
-
不加引号的列名
colName -
双引号括起来的列名
"colName" -
前加下划线的双引号列名
_"colName"
例子
t=table(`XOM`GS`FB as ticker, 100 80 120 as volume);
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
insert into t values(`GOOG, 200);
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 200 |
insert into t values(`AMZN`NFLX, 300 250);
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 200 |
| AMZN | 300 |
| NFLX | 250 |
insert into t values(('AMD','NVDA'), (60 400));
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 200 |
| AMZN | 300 |
| NFLX | 250 |
| AMD | 60 |
| NVDA | 400 |
上例还有另一种写法,即按照 SQL 标准写法,直接向表 t 传入多行数据。可得结果一致。
insert into t values ('AMD', 60), ('NVDA', 400);
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 200 |
| AMZN | 300 |
| NFLX | 250 |
| AMD | 60 |
| NVDA | 400 |
只往部分列插入新的记录:
insert into t(ticker, volume) values(`UBER`LYFT, 0 0);
t;
| ticker | price | volume |
|---|---|---|
| XOM | 98.5 | 100 |
| GS | 12.3 | 80 |
| FB | 40.6 | 120 |
| GOOG | 100.6 | 200 |
| AMZN | 120 | 300 |
| NFLX | 56.6 | 250 |
| AMD | 78.6 | 60 |
| NVDA | 33.1 | 400 |
| UBER | 0 | |
| LYFT | 0 |
