PgSQL的使用记录

一些函数的使用

有些函数并不是说只有pg才有,只是比较菜,边用边学

coalesce()函数

  • 表达式

      COALESCE(expression_1, expression_2, ...,expression_n)
    
  • 将依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。所以看可以使用改函数将null化为你默认的比如false.下面是一个例子

     select name, COALESCE(age, 15) from table
    

cast()函数

  • 表达式

    CAST (expression AS data_type)
    
  • expression:任何有效的SQServer表达式;AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型;data_type:目标系统所提供的数据类型。

    CAST (NULL AS int8) AS age
    

为表中的某一列加上序列

  • 新建序列

  • 将序列插入表中

        alter table tablename alter column id set default nextval('seqname') 
      ```
    
  • 其实pg数据中有一个数据类型交serial,这个就是自增的,建表的时候可以设置成这个

使用数据库遇到的问题

删除数据库的重复数据

今天再写服务的时候,查看数据库,发现数据都是double的,需要进行重复数据的删除

第一种是部分数据重复的,比如,我的每条记录的id不同

  • 首先出有哪些数据是重复的结果记为①

    SELECT name From table GROUP BY name HAVING COUNT(name)>1 # 设置为=,就可以查询没有重复的数据
    
  • 查询重读数据里id最小的结果记为②

    SELECT MIN(id) from table GROUP BY name HAVING COUNT(name)>1
    
  • 删除name在①里,但是id不再②里的

    DELETE 
    FROM 
    	table
    WHERE 
    	id IN(
    SELECT  id
    FROM
    	table
    WHERE
    	name IN ( SELECT name From table GROUP BY name HAVING COUNT(name)>1)
    	AND id NOT IN ( SELECT MIN(id) from table GROUP BY name HAVING COUNT(name)>1))
    

第二种是数据完全重复的,直接将数据筛选后,构建新表

  • 从原表进行数据筛选,创建临时表

    CREATE  TABLE tabletest AS (SELECT DISTINCT * FROM table)
    
  • 从临时表导回数据,只是一个命令

      INSERT INTO 表名 (SELECT * FROM 临时表)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值