• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PgSQL 使用技巧总结

武飞扬头像
juejin
帮助228

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanfbbcb
系列文章
更多 icon
同类精品
更多 icon
继续加载