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 
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容