• PgSql使用技巧总结 PgSql和MySql的对比


    作者:王中阳Go
    来源:公众号「程序员升级打怪之旅
    转载请联系授权(微信ID:wangzhongyang1993

    我在今年5月之前一直使用的MySQL,今年5月因为换工作的原因才开始使用PgSQL

    我的使用感受

    1. 首先两者的语法基本一致,基本使用没有太大区别
    2. PgSQL 有 SEQUENCE 的概念,它不能像MySQL一样设置主键id自增就可以了,PgSQL 在我们创建新表的时候要给主键创建 SEQUENCE。(序列对象(也叫序列生成器)就是用CREATE SEQUENCE 创建的特殊的单行表。一个序列对象通常用于为行或者表生成唯一的标识符。
    3. PgSQL 的字段如果是驼峰命名,我们在查询的时候要用双引号""包裹起来,否则会找不到,因为大写字母会被自动转成小写字母
    4. PgSQL 的 json 类型非常强大好用,也是因为今天学习了 json 类型的用法,仿佛打开了新世界的大门,整理了这篇文章。
    5. PgSQL在创建表之后几乎不能修改字段的顺序,我有调研过,是有解决办法的,但是异常繁琐,所以用了几乎这个词。而MySQL就没有这个问题,比如我们通过可视化工具拖拽字段的顺序,点击保存就可以了。(如果习惯了通过可视化工具查看数据,但是又不支持修改字段排序时间挺痛苦的事情;所以我习惯着弃用可视化工具,开始用sql命令查询数据了,习惯了也是挺爽的。)

    技巧总结

    PgSQL 支持对json类型字段指定group by

    说明:

    • message 是json类型

    • 其中 title content是 message中的字段

    SELECT userid,message->>'title',message->>'content',COUNT(*) as mcount from tbl_system_message WHERE "type" = 7 and message->>'title' !='xxx' GROUP BY userid,message->>'title',message->>'content' ORDER BY mcount DESC limit 100
    

    根据两个字段group by

    SELECT code,userid,"count"(*) as mcount FROM tbl_invite_code_consume GROUP BY code,userid ORDER BY mcount DESC
    

    查询重复数据

    • 查询name相同的数据,并统计个数
    SELECT DISTINCT name,COUNT(*) FROM tbl_school_info GROUP BY name HAVING COUNT(*) > 1;
    

    删除重复数据

    • 删除name相同的数据,保留id最大的那个值
    DELETE from tbl_school_info where "id" NOT IN (SELECT max("id") FROM tbl_school_info GROUP BY "name")
    

    创建表

    创建表结构的同时要创建索引

    create table tbl_video_check_job(
    	id bigserial not null primary key,
    	"jobId" varchar(40) not null,
    	"requestId" varchar(40),
    	"mediaId" varchar(40) not null,
    	unionid varchar(40),
    	suggestion varchar(10),
    	label varchar(20),
    	result json,
    	createtime bigint,
    	updatetime bigint
    );
    create index idx_video_check_job_jobid on tbl_video_check_job("jobId");
    

    between and

    • 是包含左右边界的
    a between x and y 
    

    等效于

    a >=x and a <=y
    

    Last but not least

    技术交流群请到 这里来。 或者添加我的微信 wangzhongyang1993 ,一起学习一起进步。

    感谢大家的点赞、评论、关注;谢谢大佬们的支持,感谢 ღ( ´・ᴗ・` )比心

    作者:王中阳Go
    来源:公众号「程序员升级打怪之旅
    转载请联系授权(微信ID:wangzhongyang1993

  • 相关阅读:
    Qt raise()问题
    C++单例写法记录
    不同厂商SOC芯片在视频记录仪领域的应用
    【问题排查】InheritableThreadLocal类引发的生产事故
    TCGA下载和表达矩阵整理:最适合初学者的教程
    STC 51单片机51——直流电机PWM
    Rollup(2): Rollup-plugin-commonjs 和 Rollup-plugin-node-resolve 的应用
    洛谷P1307 [NOIP2011 普及组] 数字反转
    java计算机毕业设计学生健康信息管理源码+系统+mysql数据库+lw文档
    借助PLC-Recorder,汇川中型PLC(AM、AC系列,CODESYS平台)2ms高速采集的方法
  • 原文地址:https://blog.csdn.net/w425772719/article/details/127120179