举例简单介绍PostgreSQL中的数组

 更新时间:2015年04月21日 09:28:24   投稿:goldensun  
这篇文章主要介绍了举例简单介绍PostgreSQL中的数组,PostgreSQL是一个高性能关系型数据库,学习PostgreSQL将成为趋势,需要的朋友可以参考下

 PostgreSQL 有很多丰富的开箱即用的数据类型,从标准的数字数据类型、到几何类型,甚至网络数据类型等等。虽然很多人会忽略这些数据类 型,但却是我最喜欢的特性之一。而数组数据类型正如你所期望的,可以在 PostgreSQL 存储数组数据,有了这个特性,你可以在单个表中实现以往需要多个表才能实现的存储要求。

为什么要使用数组来存储数据,如果你是应用开发人员,那么在数据库中使用同样的模型来存储程序中的数据,何乐而不为呢。况且这样的做法还能提升性能。下面我们将介绍如何使用 PostgreSQL 的数组类型。


假设你在一个网站上购买物品,那么你所购买的信息就可以用下面这个表来表示:
 

CREATE TABLE purchases (
  id integer NOT NULL,
  user_id integer,
  items decimal(10,2) [100][1],
  occurred_at timestamp
);

在这个表中,拥有一个数组字段来保持多个商品记录,包括:

  •     购买商品的编号
  •     数量
  •     价格

要往这个表里插入数据的 SQL 如下:
 
INSERT INTO purchases VALUES (1, 37, '{{15.0, 1.0, 25.0}, {15.0, 1.0, 25.0}}', now());
INSERT INTO purchases VALUES (2, 2, '{{11.0, 1.0, 4.99}}', now());
一个更有实际意义的例子是标签的使用,你可以用标签来标识购买的物品:

 

CREATE TABLE products (
  id integer NOT NULL,
  title character varying(255),
  description text,
  tags text[],
  price numeric(10,2)
);

你可使用基本的查询语句来获取数据:

 

SELECT title, unnest(tags) items FROM products


你还可以使用 Postgres 的 Gin and Gist  索引来根据指定的标签快速搜索产品:
 

-- Search where product contains tag ids 1 AND 2
SELECT *
FROM  products
WHERE  tags @> ARRAY[1, 2]
 
-- Search where product contains tag ids 1 OR 2
SELECT *
FROM  products
WHERE  tags && ARRAY[1, 2]

相关文章

  • SQL基础教程之行转列Pivot函数

    SQL基础教程之行转列Pivot函数

    这篇文章主要给大家介绍了关于SQL基础教程之行转列Pivot函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • SQL 注入式攻击的本质

    SQL 注入式攻击的本质

    SQL 注入式攻击,又是注入式攻击,没想到2008年这个老掉牙的东西又出来搅风搅雨
    2008-12-12
  • 关于ADOX的相关知识

    关于ADOX的相关知识

    关于ADOX的相关知识...
    2006-12-12
  • 数据库分页查询方法

    数据库分页查询方法

    在这里主要讲解一下MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法。
    2009-07-07
  • 数据库之Hive概论和架构和基本操作

    数据库之Hive概论和架构和基本操作

    Hive是一个构建在Hadoop上的数据仓库框架,最初,Hive是由Facebook开发,后台移交由Apache软件基金会开发,并做为一个Apache开源项目,感兴趣的同学可以参考阅读
    2023-04-04
  • 详解Unique SQL原理和应用

    详解Unique SQL原理和应用

    以一定的算法结合解析树中的各结点,计算出来一个整数值,用来唯一标识这一类SQL,这个整数值被称为Unique SQL ID,Unique SQL ID相同的SQL语句属于同一个“Unique SQL”。
    2021-05-05
  • mysql与MongoDB性能对比,哪个更适合自己

    mysql与MongoDB性能对比,哪个更适合自己

    经常看到有人讨论,mongodb性能不如MySQL,MySQL能不能代替之类的说法 ,其实作为技术人,很不喜欢哪个比哪个好这种说法,基本就是挑事,我们今天一起
    2023-06-06
  • datastage server job之dsjob 命令

    datastage server job之dsjob 命令

    DataStage之dsjob命令 看了一个星期的罗胖子的语录和视频,荒废了一个星期。
    2009-07-07
  • 5分钟快速了解数据库死锁产生的场景和解决方法

    5分钟快速了解数据库死锁产生的场景和解决方法

    这篇文章主要给大家介绍了关于如何通过5分钟快速理解数据库死锁的相关资料,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • SQLServer与Access常用SQL函数区别

    SQLServer与Access常用SQL函数区别

    SQLServer Access SQL函数
    2009-06-06

最新评论