insert 语句

最近更新时间:2024-07-24 17:02:21

我的收藏

SQL 插入语句

插入单条记录

指定所有字段:
postgres=# insert into tbase(id, nickname) values(1, 'hello TBase');
结果:INSERT 0 1
指定某些字段,未指定字段将使用默认值:
postgres=# insert into tbase(nickname) values('TBase 好');
结果:INSERT 0 1
不指定字段,则默认所有字段与建表时一致:
postgres=# insert into tbase values(nextval('t_id_seq'::regclass), 'TBase 好');
结果:INSERT 0 1
字段顺序可以任意排列:
postgres=# insert into tbase(nickname, id) values('TBase swap', 5);
结果:INSERT 0 1
使用 default 关键字,即值为建表时指定的默认值方式:
postgres=# insert into tbase(id, nickname) values(default, 'TBase default');
结果:INSERT 0 1
插入记录后的数据:
postgres=# select * from tbase;
id
nickname
1
hello TBase
2
TBase 好
5
TBase swap
3
TBase 好
4
TBase default

插入多数记录

插入多条记录:
postgres=# insert into tbase(id, nickname) values(1, 'hello TBase'), (2, 'TBase 好');
结果:INSERT 0 2
插入后查询结果:
postgres=# select * from tbase;
id
nickname
1
hello TBase
2
TBase 好

使用子查询插入数据

使用子查询插入数据:
postgres=# insert into tbase(id, nickname) values(1, (select relname from pg_class limit 1));
结果:INSERT 0 1
插入后查询结果:
postgres=# select * from tbase;
id
nickname
1
pg_statistic

从另外一个表取数据进行批量插入

从另一个表批量插入数据:
postgres=# insert into tbase(nickname) select relname from pg_class limit 3;
结果:INSERT 0 3
插入后查询结果:
postgres=# select * from tbase;
id
nickname
5
pg_type
6
pg_toast_2619
4
pg_statistic

大批量的生成数据

使用 generate_series 函数大批量生成数据:
postgres=# insert into tbase select t, md5(random()::text) from generate_series(1,10000) as t;
结果:INSERT 0 10000
插入后计数:
postgres=# select count(1) from tbase;
count
10000

返回插入数据,轻松获取插入记录的 serial 值

插入记录并返回所有字段:
postgres=# insert into tbase(nickname) values('TBase 好') returning *;
id
nickname
7
TBase 好
指定返回字段:
postgres=# insert into tbase(nickname) values('hello TBase') returning id;
id
8

insert..update 更新

使用 ON CONFLICT 子句进行更新:
postgres=# insert into t values(1,'pgxz') ON CONFLICT (id) DO UPDATE SET nc = 'tbase';
结果:INSERT 0 1
更新后查询结果:
postgres=# select * from t;
id
nc
1
tbase

insert all

使用 insert all 语句:
postgres=# create table t5(f1 int, f2 int);
postgres=# create table t6(f1 int, f2 int);
postgres=# insert all into t5 values(1, 1) into t6 values(1, 1) select 1 as f1, 1 as f2;
结果:INSERT 0 2
查询 t5 表:
postgres=# select * from t5;
f1
f2
1
1
查询 t6 表:
postgres=# select * from t6;
f1
f2
1
1