Postgres - 数据类型
PostgreSql常用数据类型(数字、序列、字符、时间、布尔、枚举、网络地址、json、xml新)
- 1. 数字类型
- 2. 字符类型
- 3. 日期/时间类型(有无日期、有无时区)
- 4. 枚举类型
- 5. 几何类型
- 6. 网络地址类型
- 7. json类型(jsonb)
1. 数字类型
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);
2. 字符类型
3. 日期/时间类型(有无日期、有无时区)
CREATE table tm_x(
n1 TIMESTAMP ,
n2 timestamp with time zone ,
n3 date,
n4 time,
n5 time with time zone ,
n6 interval);
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' );
SELECT n1, n1+n6 FROM tm_x;
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;
枚举标签是大小写敏感的,因此’happy’与’HAPPY’是不同的。标签中的空格也是有意义的。
每一种枚举数据类型都是独立的并且不能和其他枚举类型相比较;如果需要比较则要 显示转换数据类型
::text
5. 几何类型
6. 网络地址类型
在对inet或者cidr数据类型进行排序的时候, IPv4 地址将总是排在 IPv6 地址前面,包括那些封装或者是映射在 IPv6 地址里 的 IPv4 地址。
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