• 售前

  • 售后

热门帖子
入门百科

PostgreSQL标准建表语句分享

[复制链接]
123457176 显示全部楼层 发表于 2021-10-26 12:34:26 |阅读模式 打印 上一主题 下一主题
如下所示:
  1. -- 建表
  2. CREATE TABLE if not exists public.user
  3. (
  4. id character varying(32) NOT NULL DEFAULT sys_guid(),
  5. name character varying(100) NOT NULL,
  6. gender character varying(50) NOT NULL,
  7. age character varying(10) NOT NULL,
  8. id_no character varying(50) NOT NULL,
  9. created_date timestamp without time zone DEFAULT now(),
  10. created_by character varying(100) DEFAULT 'system',
  11. updated_date timestamp without time zone DEFAULT now(),
  12. update_by character varying(100) DEFAULT 'system',
  13. CONSTRAINT user_pkey PRIMARY KEY (id)
  14. )with (oids = false);
  15. -- 注释
  16. COMMENT ON TABLE public.user IS '用户表';
  17. COMMENT ON COLUMN public.user.id IS '主键';
  18. COMMENT ON COLUMN public.user.name IS '姓名';
  19. COMMENT ON COLUMN public.user.gender IS '性别';
  20. COMMENT ON COLUMN public.user.age IS '年龄';
  21. COMMENT ON COLUMN public.user.id_no IS '身份证号';
  22. COMMENT ON COLUMN public.user.created_date IS '创建时间';
  23. COMMENT ON COLUMN public.user.created_by IS '创建人';
  24. COMMENT ON COLUMN public.user.updated_date IS '更新时间';
  25. COMMENT ON COLUMN public.user.update_by IS '更新人';
  26. -- 主键 (如果建表语句里面没添加主键就执行该语句)
  27. alter table public.user
  28. add constraint user_pkey primary key (id);
  29. -- 索引或唯一索引
  30. drop index if exists user_name;
  31. CREATE INDEX user_name ON user (name);
  32. drop index if exists user_id_no;
  33. CREATE UNIQUE INDEX user_id_no ON user (id_no);
  34. -- 授权
  35. GRANT ALL ON TABLE public.user TO mydata;
  36. GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.user TO mydata_dml;
  37. GRANT SELECT ON TABLE public.user TO mydata_qry;
复制代码
增补:postgresql根本功能:创建表、新增列、修改列字段名称、某列值自增或循环自增、
根据现有表创建新表:
  1. CREATE TABLE "test04" AS ( select * from testdemo);
复制代码
修改数据表名:
  1. alter table table_name(表名) rename to new_table_name(新表名)
复制代码
新增列字段:
  1. ALTER TABLE test04 ADD gid1_type integer;
复制代码
删除列字段:
  1. ALTER TABLE test04 DROP COLUMN gid1_type;
复制代码
修改列字段名称:
  1. alter table test05 RENAME "gid" TO "id";
复制代码
修改列字段范例:
  1. ALTER TABLE test05 ALTER COLUMN "gid" TYPE datatype;
复制代码
特殊的修改为integer:
  1. alter table table_name(表名) alter column 字段名 type 新字段类型 using to_number(字段名,'9')
复制代码
更新字段数据:
  1. update test05 set "gid1_type" = 0 where ("组分类型1" = '消防栓') or ("组分类型1" = '水表') or ("组分类型1" = '节点');
复制代码
在postgresql中,设置已存在的某列(num)值自增:
  1. //将表tb按name排序,利用row_number() over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中
  2. create table tb1 as (select *, row_number() over(order by name) as rownum from tb);
  3. //根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中
  4. update tb set num=(select tb1.rownum from tb1 where tb.name = tb1.name);
  5. //判断表tb1的存在并删除表
  6. drop table if exists tb1;
复制代码
在postgresql中,循环设置已存在的某列(num)值为0-9:
  1. //将表tb按name排序,利用row_number() over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中
  2. create table tb1 as (select *, row_number() over(order by name) as rownum from tb);
  3. //根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中,由于为0-9循环自增,则%10
  4. update tb set num=(select tb1.rownum from tb1 where tb.name = tb1.name) % 10;
  5. //判断表tb1的存在并删除表
  6. drop table if exists tb1;
复制代码
以上为个人履历,盼望能给大家一个参考,也盼望大家多多支持草根技术分享。如有错误或未思量完全的地方,望不吝赐教。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作