Postgres - 数据类型
PostgreSql常用数据类型(数字、序列、字符、时间、布尔、枚举、网络地址、json、xml新)
- 1. 数字类型
- 2. 字符类型
- 3. 日期/时间类型(有无日期、有无时区)
- 4. 枚举类型
- 5. 几何类型
- 6. 网络地址类型
- 7. json类型(jsonb)
1. 数字类型
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gjUoaSAE-1655300300458)(vx_images/599295751250752.png)]](/https://i-blog.csdnimg.cn/blog_migrate/f39fe0ccc4217499d94bb31a24d36bb1.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)]](/https://i-blog.csdnimg.cn/blog_migrate/075716df94b5ade1634cb1227ccd50bb.png)
2. 字符类型
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4AulKapr-1655300300459)(vx_images/33144568938945.png)]](/https://i-blog.csdnimg.cn/blog_migrate/ac69979e03016f972557c1eca29c9ee5.png)
3. 日期/时间类型(有无日期、有无时区)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RnWTvBTi-1655300300459)(vx_images/570986057734395.png)]](/https://i-blog.csdnimg.cn/blog_migrate/cd1d66a0f8a76787cc60255ca748b786.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)]](/https://i-blog.csdnimg.cn/blog_migrate/a0b42c3df9a38330f0473cd88a4de76f.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)]](/https://i-blog.csdnimg.cn/blog_migrate/f45823c8e0af25a5c48be0bcaeb2c14c.png)
SELECT n1, n1+n6 FROM tm_x;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-prDD6cDQ-1655300300461)(vx_images/418806425788428.png)]](/https://i-blog.csdnimg.cn/blog_migrate/9d73f042e3b3cb90637f040e01a530c1.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');
一个枚举类型的值的排序是该类型被创建时所列出的值的顺序。枚举类型的所有标准的比较操作符以及相关聚集函数都被支持。
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)]](/https://i-blog.csdnimg.cn/blog_migrate/aa409ff56ed2996ef50807808d04f151.png)
枚举标签是大小写敏感的,因此’happy’与’HAPPY’是不同的。标签中的空格也是有意义的。
每一种枚举数据类型都是独立的并且不能和其他枚举类型相比较;如果需要比较则要 显示转换数据类型
::text
5. 几何类型
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yfekUNzb-1655300300463)(vx_images/395465820944709.png)]](/https://i-blog.csdnimg.cn/blog_migrate/c6a078d2c5834d735e9eaf48cf9bd9e9.png)
6. 网络地址类型
在对inet或者cidr数据类型进行排序的时候, IPv4 地址将总是排在 IPv6 地址前面,包括那些封装或者是映射在 IPv6 地址里 的 IPv4 地址。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RUwRFPEf-1655300300464)(vx_images/259395664399551.png)]](/https://i-blog.csdnimg.cn/blog_migrate/79d0a85d6a7b419174ed2ac5e5af6f20.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

本文详细介绍了PostgreSQL数据库中的数据类型,包括数字、字符、日期/时间、枚举、几何、网络地址、JSON以及其用法。例如,数字类型包括SMALLINT、INT、BIGINT等,日期/时间类型如TIMESTAMP、TIMESTAMP WITH TIME ZONE等,枚举类型通过CREATE TYPE命令创建。此外,还提到了JSON类型的数据插入和查询操作。文章旨在帮助读者更好地理解和使用PostgreSQL的数据类型。

5773

被折叠的 条评论
为什么被折叠?



