当前位置: 首页 > 科技观察

PostgreSQL数组类型操作用法及特点详解

时间:2023-03-14 17:30:25 科技观察

PostgreSQL数组类型用法详解也许你对关系型数据库PostgreSQL并不熟悉,因为大多数人对它最熟悉,企业用得最多的就是MySQL。先从PostgreSQL数据库(以下简称PG)开始,给大家简单介绍一下。如果以后有机会,我会单独写一篇关于pgSql的文章,叫做世界上最先进的开源关系数据库。最先进的开源关系型数据库”。严重违反我国广告法的一句话。上一个敢这么大声喊叫的技术是PHP,“世界上最好的语言”。然而,PG并没有受到批评或嘲笑这种明目张胆的自我标榜。事实上,无论是在务实的coder界还是讲究规则的学术界,人们都称赞PG,而PG是当之无愧的。从这句话来看,下面列出了PostgreSQL的一些特性。PostgreSQL是加州大学计算机系开发的非常完善的关系型数据库,PostgreSQL开源协议是类BSD协议,或者修改代码重命名卖钱,没有风险,PostgreSQL支持数据类型很多,除了常用的,还有枚举类型,几何类型,UUID类型,json类型,数组类型等等,数组类型也是本文的目的介绍数组类型在PostgreSQL中的使用。目标数据库建立时是Oracle数据库,PostgreSQL的各项功能和性能都很强。PostgreSQL对复杂SQL的执行比MySql好......特性很多,这里只简单介绍几个,以上特性也是我最喜欢的那些关心的人,www.helloworld.net取代Mysql的原因出于这些原因,在此修订版中使用PostgreSQL。之前有很多人问过,地狱世界开发者社区改版使用了哪些技术栈,其中之一就是将Mysql换成PostgreSQL。这是一个需要勇气的决定,但幸运的是我们坚持了下来。在修改的过程中,有过这样的场景:一个博客有多个标签,比如博客有多线程、并发、线程池。对于这样的需求,我们可以分析一篇博客。有多个标签。一个标签也可以对应多个博客。这样就形成了多对多的关系。建表的话,会有关联表,大部分会想到建博客表是这样的:列出最小列):博客表:id号类型,博客id,自增主键标题字符串类型,博客标题标签表:id数值类型,标签id,自增主键名称字符串类型,标签名tag_blog:id数值型,自增主键tag_id标签id(对应标签表id)blog_id博客id(对应博客表中的id)上面的博客标签要求需要3个表,我们知道PostgreSQL的列类型支持数组类型,是否可以优化上面的需求,把3张表变成1张表只保留一张blog表,在blog表中增加一列tags,类似于text[]新建blog表fields如下:blog表:id号类型(bigint),blogid,self-growth主键标题字符串类型(text),博客标题标签字符串数组类型(text[])为了方便大家测试,表SQL如下CREATETABLEIFNOTEXISTSpublic.blog(idbigintNOTNULL默认nextval('blog_id_seq'::regclass),titletextCOLLATEpg_catalog."default",tagstext[]COLLATEpg_catalog."default",CONSTRAINTblog_pkeyPRIMARYKEY(id))表空间pg_default;如果存在public.blogOWNER则更改表到postgres;接下来我们对tags字段做一些基本操作数组类型的基本操作1Query现在表中没有数据,我们查看select*fromblog的结果如下:2Insert数据插入一条记录,标题为www.helloworld.net,对应标签有3个,分别是helloworld,technology,community,"Community"}')重新查询select*fromblog结果如下:可以看到已经有一条数据了,tags数组中有3个元素,分别是helloworld、technology、community.我们再插入两条数据方便我们测试insertintoblog(title,tags)values('www.juejin.im','{"掘金","Technology","Developer"}');insertintoblog(title,tags)values('www.oschina.net','{"开源中国","oschina","开源"}');查询结果如下:3条件查询3.1搜索查询语法中有技术标签的博客select*fromblogwhere'xx'=any(arrayfield)sql语句如下:select*fromblogwhere'technique'=any(tags)查询结果如下:3.2查询标签中带有helloworld标签或opensourceChina标签的博客的sql语句如下:select*fromblogwhere'helloworld'=any(tags)or'OpenSource中国'=any(tags)结果如下:4更新4.1更新标签名称。在id=1的记录的tags数组中,社区改为开发者社区。注意:pg中数组类型从1开始,我们设置id=1记录,社区元素索引为3,修改语法为:updatetablenamesetfield[index]='xx'whereid=1sql如下:updateblogsettags[3]='developercommunity'whereid=1再次查询,结果如下:可以发现通过tags[3]='DeveloperCommunity',社区已经成功修改为开发者社区。PostgreSQL的array_append函数的使用方法如下:sql写法如下:updateblogsettags=array_append(tags,'programmer'::text)whereid=1再次查询结果如下:5删除删除tagid=3的记录在tag中,删除开源sql如下:updateblogsettags=array_remove(tags,'opensource'::text)whereid=3执行后,再次查询,如下:总结以上是PostgreSQL数组类型的常见用法,至于其他用法,可以看看官方文档,结合本例的SQL写法,应该可以轻松掌握以上需求.其实在实际应用中,数组类型并不适合求解。数组适用于场景、操作和交互。很多,不太重要,可以使用helloworld开发者社区。改版过程中,数据库已经更换为PostgreSQL,但是博客标签的需求,没有采用这种方式。这个例子只是为了方便。如何在实践中使用它?您需要根据业务需求灵活选择。以上就是PostgreSQL数组类型操作用法和特性详解的详细内容。更多关于PostgreSQL数组类型的内容,请关注服务器之家其他相关文章!原文链接:https://juejin.cn/post/7157973007380529166