首 页 | 联系我们 | 关于优化网 | 中国阀门网-阀门88网 WEB优化行业门户网站-WEB-YOUHUA.CN
当前位置 : 首页 >> PHP技术 >> PostgreSQL 的数组
返回首页

PostgreSQL 的数组

时间:2012-8-25 8:27:38 来源:中国优化网 作者:youhua 人气: 767 发表评论  匿名投稿
PostgreSQL有很多丰富的开箱即用的数据类型,从标准的数字数据类型、到几何类型,甚至网络数据类型等等。虽然很多人会忽略这些数据类型,但却是我最喜欢的特性之一。而数组数据类型正如你所期望的,可以在 PostgreSQ(中国阀门网-中国泵阀网-五金机械网)

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

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

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

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

 

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

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

要往这个表里插入数据的 SQL 如下:

1 INSERT INTO purchases VALUES (1, 37, {{15.0, 1.0, 25.0}, {15.0, 1.0, 25.0}}, now());
2 INSERT INTO purchases VALUES (2, 2, {{11.0, 1.0, 4.99}}, now());

 

一个更有实际意义的例子是标签的使用,你可以用标签来标识购买的物品:

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

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

1 SELECT title, unnest(tags) items FROM products

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

1 -- Search where product contains tag ids 1 AND 2
2 SELECT  *
3 FROM    products
4 WHERE   tags @> ARRAY[1, 2]
5  
6 -- Search where product contains tag ids 1 OR 2
7 SELECT  *
8 FROM    products
9 WHERE   tags && ARRAY[1, 2]
”欢迎转载www.web-youhua.com文章,谢谢

(责任编辑:youhua)
------分隔线----------------------------
本公司致力于网站建设,网站优化,搜索引擎优化(SEO),Google左侧排名等服务。欢迎转载收藏web-youhua.com
用户名:  验证码:   
理智评论文明上网,拒绝恶意谩骂  [ 查看全部 ] 网友评论
相关推荐