Postgres - 数据类型

2 篇文章 0 订阅
1 篇文章 0 订阅

Postgres - 数据类型

PostgreSql常用数据类型(数字、序列、字符、时间、布尔、枚举、网络地址、json、xml新)

  • 1. 数字类型
  • 2. 字符类型
  • 3. 日期/时间类型(有无日期、有无时区)
  • 4. 枚举类型
  • 5. 几何类型
  • 6. 网络地址类型
  • 7. json类型(jsonb)

1. 数字类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gjUoaSAE-1655300300458)(vx_images/599295751250752.png)]

 CREATE table tm_z( 
 n1 SMALLINT ,
 n2 INT ,
 n3 BIGINT ,
 n4 DECIMAL(8,2),
 n5 numeric(8,2),
 n6 real,
 n7 double PRECISION,
 n8 SMALLserial,
 n9 serial,
 n10 bigserial);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvEfsGq8-1655300300459)(vx_images/61966080097243.png)]

2. 字符类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4AulKapr-1655300300459)(vx_images/33144568938945.png)]

3. 日期/时间类型(有无日期、有无时区)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RnWTvBTi-1655300300459)(vx_images/570986057734395.png)]

 CREATE table tm_x( 
 n1 TIMESTAMP ,
 n2 timestamp with time zone ,
 n3 date,
 n4 time,
 n5 time with time zone ,
 n6 interval);
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-89TqmpQm-1655300300460)(vx_images/298086262654490.png)]

INSERT INTO tm_x ( n1, n2, n3, n4, n5, n6 )VALUES	( now( ), now( ), now( ), now( ), now( ), '12h' );
INSERT INTO tm_x ( n1, n2, n3, n4, n5, n6 )VALUES	( now( ), now( ), now( ), now( ), now( ), '1y' );

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gws0yOSl-1655300300460)(vx_images/148105046636962.png)]

SELECT n1, n1+n6 FROM tm_x;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-prDD6cDQ-1655300300461)(vx_images/418806425788428.png)]
time、timestamp和interval接受一个可选的精度值 p,这个精度值声明在秒域中小数点之后保留的位数。缺省情况下,在精度上没有明确的边界。p允许的范围是从 0 到 6。

SQL要求只写timestamp等效于timestamp without time zone,并且PostgreSQL鼓励这种行为。timestamptz被接受为timestamp with time zone的一种简写,这是一种PostgreSQL的扩展。

4. 枚举类型

枚举类型可以使用CREATE TYPE命令创建,例如:
CREATE TYPE mood AS ENUM (‘sad’, ‘ok’, 'happy’);
一旦被创建,枚举类型可以像很多其他类型一样在表和函数定义中使用。

CREATE TABLE tm_v (
    n1 text,
    n2 mood
);
INSERT INTO tm_v VALUES ('x', 'happy');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7vO1taFz-1655300300462)(vx_images/20385505663067.png)]一个枚举类型的值的排序是该类型被创建时所列出的值的顺序。枚举类型的所有标准的比较操作符以及相关聚集函数都被支持。

INSERT INTO tm_v VALUES ('y', 'sad');
INSERT INTO tm_v VALUES ('z', 'ok');
SELECT * FROM tm_v WHERE n2 > 'sad' ORDER BY n2;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bmlSpVmy-1655300300462)(vx_images/449165277626402.png)]
枚举标签是大小写敏感的,因此’happy’与’HAPPY’是不同的。标签中的空格也是有意义的。
每一种枚举数据类型都是独立的并且不能和其他枚举类型相比较;如果需要比较则要 显示转换数据类型
::text

5. 几何类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yfekUNzb-1655300300463)(vx_images/395465820944709.png)]

6. 网络地址类型

在对inet或者cidr数据类型进行排序的时候, IPv4 地址将总是排在 IPv6 地址前面,包括那些封装或者是映射在 IPv6 地址里 的 IPv4 地址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RUwRFPEf-1655300300464)(vx_images/259395664399551.png)]

7. json类型(jsonb)

json会输出和输入完全相同的文本,而jsonb 则不会保留语义上没有意义的细节(例如空格。

7.1 创建数据表

CREATE TABLE orders (
   ID serial NOT NULL PRIMARY KEY,
   info json NOT NULL
);

7.2 插入json数据

要插入json数据,需确保数据是格式规范的json。下面insert语句插入一行order数据:

INSERT INTO orders (info)
VALUES
   (
      '{ "customer": "John Doe", "items": {"product": "Beer","qty": 6}}'
   );

下面同时插入多行。

INSERT INTO orders (info)
VALUES
   (
      '{ "customer": "Lily Bush", "items": {"product": "Diaper","qty": 24}}'
   ),
   (
      '{ "customer": "Josh William", "items": {"product": "Toy Car","qty": 1}}'
   ),
   (
      '{ "customer": "Mary Clark", "items": {"product": "Toy Train","qty": 2}}'
   );

7.3 查询json数据

使用select语句查询json数据,与其他基本数据类型类似:

SELECT info FROM  orders;

其他关于JOSN 数据类型的专题说明,请参考如下内容:

https://aduandniuniu.blog.csdn.net/article/details/125304811?spm=1001.2014.3001.5502

本文参考:https://blog.csdn.net/zhangyongze_z/article/details/114359304#t6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Adunn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值