Postgres - 数据类型

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








1. 数字类型

pg数据库numeric 转 java double 科学计数 pg数据库number类型_json

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);

pg数据库numeric 转 java double 科学计数 pg数据库number类型_json_02

2. 字符类型

pg数据库numeric 转 java double 科学计数 pg数据库number类型_SQL_03

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

pg数据库numeric 转 java double 科学计数 pg数据库number类型_json_04

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

pg数据库numeric 转 java double 科学计数 pg数据库number类型_database_05

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' );

pg数据库numeric 转 java double 科学计数 pg数据库number类型_SQL_06

SELECT n1, n1+n6 FROM tm_x;

pg数据库numeric 转 java double 科学计数 pg数据库number类型_SQL_07


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');

pg数据库numeric 转 java double 科学计数 pg数据库number类型_database_08

一个枚举类型的值的排序是该类型被创建时所列出的值的顺序。枚举类型的所有标准的比较操作符以及相关聚集函数都被支持。

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

pg数据库numeric 转 java double 科学计数 pg数据库number类型_postgres_09


枚举标签是大小写敏感的,因此’happy’与’HAPPY’是不同的。标签中的空格也是有意义的。

每一种枚举数据类型都是独立的并且不能和其他枚举类型相比较;如果需要比较则要 显示转换数据类型

::text

5. 几何类型

pg数据库numeric 转 java double 科学计数 pg数据库number类型_json_10

6. 网络地址类型

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

pg数据库numeric 转 java double 科学计数 pg数据库number类型_database_11

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;