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

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL和PostgreSQL(简称为PgSQL)是两种常见的关系型数据库管理系统(RDBMS)。它们都具有广泛的应用和一系列功能,但在某些方面有所不同。 1. 开发历史:MySQL是由瑞典公司MySQL AB开发的,后来被Oracle收购。而PgSQL是由加拿大人Andrew Yu和Jolly Chen在加拿大大学开发的。 2. 数据类型:MySQLPgSQL都支持各种标准的数据类型,如整数、浮点数、字符串等。然而,在处理日期和时间类型时,两者有所不同。MySQL使用DATETIME和TIMESTAMP来表示日期和时间,而PgSQL使用DATE、TIME和TIMESTAMP。 3. 扩展性:MySQLPgSQL在扩展性方面也有所不同。MySQL使用主从复制来实现横向扩展,即通过将数据复制到多个节点来提高读取性能。PgSQL则提供了更强大的横向扩展功能,称为流复制(Streaming Replication),它允许将数据复制到多个节点,并支持高可用性配置。 4. SQL兼容性:MySQLPgSQL都遵循SQL标准,但在某些方面有所差异。例如,PgSQLSQL标准的支持更全面,支持更多的高级功能,如窗口函数、递归查询等。MySQL则更注重性能和简单性,有时可能会有一些非标准的行为。 5. 存储引擎:MySQL支持多个存储引擎,如InnoDB、MyISAM等,每个引擎都有其特点和适用场景。PgSQL则默认使用一种称为PostgreSQL Global Development Group(PGDG)的存储引擎。 总的来说,MySQL更适合简单的应用程序和小型项目,而PgSQL则更适合需要高级功能和复杂查询的大型项目。选择使用哪种数据库取决于具体的需求和项目要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王中阳Go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值