Loading...

# 字段操作

# 添加字段

alter table schema.table add column 字段名 varchar(50);
-- 赋予默认值
alter table schema.table add column 字段名 int default(10);
alter table schema.table add column 字段名 int default '10';

# 修改字段名

alter table schema.table rename 旧字段名 to 新字段名;

# 修改字段类型

alter table schema.table alter column 字段名 type 新类型;

# 添加字段注释

comment on column schema.table.column is '注释';

# 添加主键

alter table schema.table add primary key(字段名);

# 删除字段

alter table schema.table drop 字段名;

# jsonb 字段操作

样例数据

idcodenameother
1001zhangshan
2002lisi

# 查询

select * from schema.table where other::jsonb ->> 'id' = '1';

# 排序

# 更新数据

样例 1

旧数据 {"DEMO":{"code":"ERROR","name":"错误"}}
更新为 {"DEMO":{"code":"ERROR","name":"错误"}, "EXAMPLE":{"code":"NORMAL","name":"正常"}}

update schema.table 
set column = jsonb_set(column, '{EXAMPLE}', '{"code":"NORMAL","name":"正常"}'::jsonb)
where id = 'xxx';

样例 2

旧数据 {"DEMO":{"code":"ERROR","name":"错误"}}
更新为 {"DEMO":{"code":"NORMAL","name":"正常"}}

update schema.table 
set column = jsonb_set(column, '{DEMO,code}', '{"code":"NORMAL","name":"正常"}'::jsonb)
where id = 'xxx';

解释

jsonb_set (target jsonb, path text [], new_value jsonb [, create_missing boolean]) 四个参数的含义

  • target:原 json 数据
  • path:新 json 数据期望在原 json 数据中的路径,不存在则新增,存在则修改,如 {DEMO,code} 第一个 DEMO 表示原数据第一层 key-DEMO,第二个 code 表示原数据第二层 key-code
  • new_value 期望插入 / 更新的 json 数据
  • create_missing: 值为 true:如果元素值不存在,则添加;false: 元素值不存在,不添加 (默认为 true)

样例 3

旧数据 {"DEMO":{"code":"ERROR","name":"错误"}, "EXAMPLE":{"code":"NORMAL","name":"正常"}}

更新为 {"DEMO":{"code":"ERROR","name":"错误"}}

update schema.table 
set column = column - 'EXAMPLE'
where id = 'xxx';

# 索引操作

# 查看索引

select * from pg_indexes where tablename = 'xxx';
select * from pg_statio_all_indexes where relname = 'xxx';

# 跨库操作

-- 第一步、创建垮库连接扩展
create extension dblink;
-- 第二步,查看是否创建成功,出现 dblink 则成功
select * from pg_extension;
-- 第三步,跨库操作数据,注意手动更改对应的 host,port,dbname,user 和 password
UPDATE  schema.table
SET 字段 = xxx
WHERE
	( 字段a, 字段b )
	IN ( SELECT T.字段a, T.字段b
	FROM dblink ( 'host=xxx port=5432 dbname=xxx user=xxx password=xxx',
	'select 字段a,字段b from schema.table WHERE 字段c = ''xxx'' and 字段d = ''xxx'' ' )
	AS T ( 字段a TEXT, 字段b TEXT));
更新于

请我喝[茶]~( ̄▽ ̄)~*

七音 微信支付

微信支付

七音 支付宝

支付宝