PostgreSQL常用命令

1. table新增字段和注释

ALTER TABLE T_DEVICE_MONITORING_NETWORK ADD COLUMN area_temp char(50);
ALTER TABLE t_device_monitoring_network ADD COLUMN area_humidity char(50);
COMMENT ON COLUMN t_device_monitoring_network.area_temp IS '区域温度';
COMMENT ON COLUMN t_device_monitoring_network.area_humidity IS '区域湿度';

2. table 删除字段

ALTER TABLE t_device_monitoring_network DROP COLUMN area_temp;

3. 修改字段类型

ALTER TABLE table_name ALTER COLUMN column_name TYPE  varchar(50);

//从varchar 改为 int 时
ALTER TABLE table_name ALTER COLUMN column_name TYPE  int4 USING column_name::integer ;

补充:char 和varchar 存取时的去别
存数据时的区别
char是固定长度,长度范围是0—255,存储时,如果字符数没有达到定义的位数,会在后面用空格补全存入数据库中
varchar是可变长度,长度范围是0-65535,存储时,如果字符数没有达到定义的位数,不会再后面空格
取数据时的区别
char取数据时,会把后面的空格全部去掉
而varchar在取数据时,尾部空格会保留

4、删除NOT NULL约束

alter table m_order_detail_lottery alter COLUMN info_id drop not null;

5、为已有的字段添加默认值

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_value;  

6、删除默认值

ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT;  

7、如果存在则更新,如果不存在则新增(在mysql中可以用replace into)

 insert into sys_tag_info(tag_id,create_time) values(20,1517396043592) 
on CONFLICT(tag_id,info_id) do update set create_time = 1517396043597 

8、删除SEQUENCE(relation t_device_aisle_test_id_seq is already exists)

DROP SEQUENCE t_device_aisle_test_id_seq;

9、修改字段名称

ALTER TABLE table_name RENAME COLUMN column_name1 to column_name2;

10、char 和varchar的区别

char:定长,效率高,一般用于固定长度的表单提交数据存储  ;例如:身份证号,手机号,电话,密码等

varchar:不定长,效率偏低

char定长,如果长度不够,则从数据查出来后,会以空格补全,这点需要特别注意

11、查看表占用磁盘空间大小

SELECT  table_schema || '.' || table_name AS table_full_name,
pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables  
WHERE table_name  = 't_device_monitoring_network'
ORDER BY 
pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC

12、查看数据库占用磁盘空间大小

 SELECT d.datname AS Name,  pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
        THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
        ELSE 'No Access'
    END AS SIZE
FROM pg_catalog.pg_database d
    ORDER BY
    CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
        THEN pg_catalog.pg_database_size(d.datname)
        ELSE NULL
    END DESC -- nulls first
    LIMIT 20

13、去重

  • 查询数据库中重复记录,重复记录是根据单个字段(code )来判断
SELECT * from t_device_error_code WHERE 
code in ( SELECT code from t_device_error_code GROUP BY code HAVING count(code) > 1) 
and ctid not in ( SELECT min(ctid) from t_device_error_code GROUP BY code HAVING COUNT(code) >1 )
ORDER by code

删除数据库中重复记录

delete  from t_device_error_code WHERE 
code in ( SELECT code from t_device_error_code GROUP BY code HAVING count(code) > 1) 
and ctid not in ( SELECT min(ctid) from t_device_error_code GROUP BY code HAVING COUNT(code) >1 )
  • 多个字段(factory_dev_no,position)
    查询
SELECT * from t_device_param_config WHERE 
id in 
( SELECT id  from t_device_param_config where  type = 2) 
and 
ctid not in 
( SELECT MAX(ctid)  from t_device_param_config where type = 2 GROUP BY factory_dev_no,position ORDER BY factory_dev_no )

删除

DELETE from t_device_param_config WHERE 
id in 
( SELECT id  from t_device_param_config where  type = 2) 
and 
ctid not in 
( SELECT MAX(ctid)  from t_device_param_config where type = 2 GROUP BY factory_dev_no,position ORDER BY factory_dev_no )

14、时间戳转换

SELECT TO_TIMESTAMP(create_time/1000) as time,*  
FROM t_push_message_device_history where status=1 and send_time=1 
ORDER BY id DESC limit 1000 

15、修改postgresql自增id的默认值

通常表中id是自增的,我们初始化数据时如果需要保持原有的id不变,那么我们的insert语句中就会有id值,初始化完成以后,再通过ORM框架保持数据时,可能会报id重复,这是因为insert插入时并没有改变默认的id值,所以再保存时id自增就会重复,
所以可以在初始化完成以后,重置id的默认值

alter SEQUENCE t_device_parts_template_id_seq  RESTART  with 20 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,640评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,254评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,011评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,755评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,774评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,610评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,352评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,257评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,717评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,894评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,021评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,735评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,354评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,936评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,054评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,224评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,974评论 2 355

推荐阅读更多精彩内容

  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,158评论 0 33
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,817评论 5 116
  • 你走的匆忙 追出去看不見你我有些慌 強忍心中的惆悵 靜靜的坐在樹旁 看著枝椏在老舊的牆上 靜靜地長 看見一個女生的...
    霧亂寒山風不巧阅读 221评论 0 0
  • 当大地蒙上第一层霜花 狐狸便换上了一身银衣 那是雪的颜色 在别人眼里 他从一只黑狐 变成了一只银狐 猎人和狗再也无...
    一夜星辰阅读 893评论 8 4
  • 一直想提笔写点什么东西,可是苦于没有头绪。最近在翻看各种文章的过程中,几次看到了简书。看到别人妙笔生花,其实心里是...
    帝喾阅读 564评论 0 50