软件下载吧文章资讯

分类分类

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

2024-03-09 11:50作者:下载吧

PostgreSQL 数组类型使用详解

可能大家对 PostgreSQL这个关系型数据库不太熟悉,因为大部分人最熟悉的,公司用的最多的是 MySQL

我们先对PostgreSQL数据库 (下面简称 PG)简单的介绍一下,以后有机会,再单独写一篇专门介绍pgSql的文章

The World's Most Advanced Open Source Relational Database

这是PG官网对自己的介绍,是的,你没有看错,“世界上最先进的开源关系型数据库”。一段严重违反我国广告法的话,上一个敢那么叫嚣的技术是PHP,“世界上最好的语言”,然后这句话就成了码农界最广为人知的梗,存在于各种笑料中。

不过PG并没有因为这样明目张胆地自吹自擂而遭到什么抨击或调侃,事实上,无论在务实的码农界,抑或是讲究章法的学术界,人们对PG都是赞许有加,PG是完全当得起这句话的。

下面列出一些PostgreSQL的特点

还有很多的特性,这里只简单的写几个,上面的几个特点也是我非常在意的,之所 www.helloworld.net 此次改版把Mysql换成了PostgreSQL ,就是有这些原因。

之前很多人问过,hellworld开发者社区 改版用到了哪些技术栈,其中之一,就是把 Mysql 换成了 PostgreSQL

在改版的过程中,所有的表全部重新设计,这对于后端来说,是一个极其需要勇气的决定,好在我们坚持下来了

在改的过程中,其中有这样一个场景:

一篇博客,有多个标签 ,比如 一个博客,有多线程, 并发 , 线程池 这三个标签

对于这样的需求,我们可以分析一下

这样就形成了 多对多 的关系,建表的话,就会有一张关联表,大部分会想到这样建表

博客表: blog

标签表: tag

标签博客表: tag_blog

其中各表的字段,如下(简单起见,只列出最少的列):

blog 表:

tag表:

tag_blog

上面这个博客标签需求,需要 3 张表,我们知道,PostgreSQL 的列的类型是支持数组类型

我们是不是可以优化一下上面的需求,把 3 张表变成 1 张表

只保留一张 blog 表,在 blog 表中增加一列 tags , 类似就是 text[ ]

新的博客表字段如下:

blog表:

为了方便大家测试,建表SQL 如下

CREATE TABLE IF NOT EXISTS public.blog
(
id bigint NOT NULL DEFAULT nextval(‘blog_id_seq’::regclass),
title text COLLATE pg_catalog.”default”,
tags text[] COLLATE pg_catalog.”default”,
CONSTRAINT blog_pkey PRIMARY KEY (id)
)
TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.blog
OWNER to postgres;
展开全部

相关文章

说两句网友评论
    我要跟贴
    取消