PostgreSQL 数组类型使用详解
PostgreSQL 数组类型使用详解
可能大家对 PostgreSQL 这个关系型数据库不太熟悉,因为大部分人最熟悉的,公司用的最多的是 MySQL
我们先对 PostgreSQL 数据库 (下面简称 PG
)简单的介绍一下,以后有机会,再单独写一篇专门介绍 pgSql 的文章
The World’s Most Advanced Open Source Relational Database
这是 PG
官网对自己的介绍,是的,你没有看错,“世界上最先进的开源关系型数据库”。一段严重违反我国广告法的话,上一个敢那么叫嚣的技术是 PHP
,“世界上最好的语言”,然后这句话就成了码农界最广为人知的梗,存在于各种笑料中。
不过 PG
并没有因为这样明目张胆地自吹自擂而遭到什么抨击或调侃,事实上,无论在务实的码农界,抑或是讲究章法的学术界,人们对 PG
都是赞许有加,PG
是完全当得起这句话的。
下面列出一些 PostgreSQL 的特点
-
PostgreSQL 是一种功能非常齐全关系型数据库,由加州大学计算机系开发
-
PostgreSQL 开源协议是类 BSD 的自有协议 ,这是一种非常友好的协议,不论是商用还是自用,或者修改代码再起个名拿来卖钱,都没有任何风险
-
PostgreSQL 支持的数据类型非常多,除了常用的,还有
枚举类型
,几何类型
,UUID类型
,json类型
,数组类型
等,其中数组类型
也是本篇文章的目的,介绍其中数组类型的使用 -
PostgreSQL 成立时对标的数据库是
Oracle
数据库,所有 PostgreSQL 的功能和性能是非常强的。 -
PostgreSQL 对复杂 SQL 的执行,要好于 MySql
…
还有很多的特性,这里只简单的写几个,上面的几个特点也是我非常在意的,之所 www.helloworld.net
此次改版把 Mysql 换成了 PostgreSQL , 就是有这些原因。
之前很多人问过,hellworld开发者社区
改版用到了哪些技术栈,其中之一,就是把 Mysql
换成了 PostgreSQL
在改版的过程中,所有的表全部重新设计,这对于后端来说,是一个极其需要勇气的决定,好在我们坚持下来了
在改的过程中,其中有这样一个场景:
一篇博客,有多个标签 ,比如 一个博客,有多线程
, 并发
, 线程池
这三个标签
对于这样的需求,我们可以分析一下
- 一篇博客,有多个标签
- 一个标签,也可有对应多篇博客
这样就形成了 多对多
的关系,建表的话,就会有一张关联表,大部分会想到这样建表
博客表: blog
标签表: tag
标签博客表: tag_blog
其中各表的字段,如下(简单起见,只列出最少的列):
blog
表:
- id 数字类型,博客的 id, 自增长的主键
- title 字符串类型,博客的标题
tag
表:
- id 数字类型,标签的 id , 自增长的主键
- name 字符串类型,标签的名字
tag_blog
:
- id 数字类型, 自增长的主键
- tag_id 标签 id