postresql常用sql
序列相关
创建序列:
create sequence 序列名 minvalue 1 maxvalue 99999999
increment by 1
start with 1;
例:create sequence resource_security_rule_id_seq minvalue 1 maxvalue 99999999
increment by 1
start with 1;
绑定序列到字段上
alter table 【表名】 alter column 【字段】 set default
例:alter table "public".resource_security_rule alter column id set default
查看当前序列值
nextval('序列名')
例:nextval('resource_security_rule_id_seq')
删除序列
drop sequence 序列名;
例:drop sequence security_group_rule_seq;
查询所有序列
SELECT
*
FROM
pg_class
WHERE
relkind = 'S'
字段相关
新增字段:
ALTER TABLE 【表名】 ADD COLUMN 【字段名】 【类型】;
COMMENT ON COLUMN 【表名】.【字段名】 IS 【字段描述】;
例:
ALTER TABLE "public"."resource_eks_cluster" ADD COLUMN "instance_group" jsonb;
COMMENT ON COLUMN "public"."resource_eks_cluster"."instance_group" IS '实例组详情';
例:
ALTER TABLE "public"."common_cloud_region"
ADD COLUMN "create_time" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP;
修改字段:
修改字段类型:
alter table 【表名】 alter COLUMN 【字段名】 type 【修改的类型】 ;
例:alter table "public"."resource" alter COLUMN "id" type varchar(128) ;
修改字段名称:
ALTER TABLE 【表名】 RENAME 【原名称】 TO 【新名称】;
例:ALTER TABLE "public"."resource_instance" RENAME "eks_group_name" TO "group_name";
删除字段:
alter table 【表名】 drop column if exists 【字段名】;
例:alter table "public"."resource_emr_cluster" drop column if exists "instance_id";
表相关
删除表:
DROP TABLE 【表名】;
例:DROP TABLE "public"."resource_emr_instance";
如果存在表再删除
DROP TABLE if exists 【表名】;
drop table if exists "public"."resource_bucket";
新增表:
普通创建:
CREATE TABLE resource_key_pair
(
id VARCHAR(64) NOT NULL,
create_time TIMESTAMP ,
cloud_type VARCHAR(32) NOT NULL,
extend_data JSONB,
PRIMARY KEY (id)
);;
COMMENT ON TABLE resource_key_pair IS '资源-密钥对';
COMMENT ON COLUMN resource_key_pair.create_time IS '创建时间';
COMMENT ON COLUMN resource_key_pair.id IS '实例ID';
COMMENT ON COLUMN resource_key_pair.extend_data IS '扩展数据';
COMMENT ON COLUMN resource_key_pair.cloud_type IS 'aws/ali/ucloud';
COMMENT ON COLUMN resource_key_pair.last_operate_id IS '最后操作记录';
设置自增主键的创建:
CREATE
SEQUENCE putaway_zone_id_seq START
WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
CREATE TABLE "public"."putaway_zone" (
"id" int4 NOT NULL DEFAULT nextval('putaway_zone_id_seq'::regclass),
"putaway_id" int4 NOT NULL,
"zone_id" int4 NOT NULL
)
;
COMMENT ON COLUMN "public"."putaway_zone"."putaway_id" IS '关联 product_putaway';
COMMENT ON COLUMN "public"."putaway_zone"."zone_id" IS '关联 cloud_zone';
ALTER TABLE "public"."putaway_zone" ADD CONSTRAINT "putaway_zone_pkey" PRIMARY KEY ("id");
补充:
当数据为jsonb类型时,如何判断某个值在其中