PostgreSQL 数据类型

译者:anxin
日期:2017-10-13

PostgreSQL数据类型是为数据库表中字段的数值的类型,如整数,字符串,布尔等数值。在创建PostgreSQL数据库表时,必须为字段指定数据类型。PostgreSQL中用户可以使用CREATE TYPE创建自定义数据类型。

数字类型

数字类型由2、4或8字节的整数以及4或8字节的浮点数和可选精度小数组成。

名字 存储尺寸 描述 范围
smallint 2字节 小范围整数 -32768 到 +32767
integer 4字节 整数的典型选择 -2147483648 到 +2147483647
bigint 8字节 大范围整数 -9223372036854775808 到 +9223372036854775807
decimal 可变 用户指定精度,精确 最高小数点前131072位,以及小数点后16383位
numeric 可变 用户指定精度,精确 最高小数点前131072位,以及小数点后16383位
real 4字节 可变精度,不精确 6位十进制精度
double precision 8字节 可变精度,不精确 15位十进制精度
smallserial 2字节 自动增加的小整数 1到32767
serial 4字节 自动增加的整数 1到2147483647
bigserial 8字节 自动增长的大整数 1到9223372036854775807

数字类型使用实例

1)可变精度数字类型有两个参数:第一个参数是精度,即:数字的所有位数;第二个参数是比例,即:小数点后的数字位数。

NUMERIC(precision, scale)

#数字 23.5141 的精度为6而比例为4

NUMERIC(6, 4)

或者设置比例为0:

NUMERIC(precision)

2)serial为自动增长类型,在设置主键时使用,数字类型使用实例

CREATE TABLE tablename (
    id SERIAL,
    colname1 INTEGER,
    colname1 NUMERIC(10, 4),
);

字符类型

名字 描述
character varying(n), varchar(n) 定义可变长度字符串,字符串的最大长度为n,即:字符串占用的最大长度为n
character(n), char(n) 定长字符串,如果字符串长度不到n,使用空格填充
text 无限变长字符串

PostgreSQL提供了两种基本的字符类型character varying(n)和character(n),其中n为一个正整数。varchar(n)是character varying(n)的简写形式,char(n)是character(n)的简写形式。

字符类型使用实例

CREATE TABLE tablename (
    id SERIAL,
    colname1 char(32),
    colname1 varchar(64),
);

日期/时间类型

名字 存储尺寸 描述 最小值 最大值 解析度
timestamp [ (p) ] [ without time zone ] 8字节 包括日期和时间(无时区) 4713 BC 294276 AD 1微秒 / 14位
timestamp [ (p) ] with time zone 8字节 包括日期和时间,有时区 4713 BC 294276 AD 1微秒 / 14位
date 4字节 日期(没有一天中的时间) 4713 BC 5874897 AD 1日
time [ (p) ] [ without time zone ] 8字节 一天中的时间(无日期) 00:00:00 24:00:00 1微秒 / 14位
time [ (p) ] with time zone 12字节 仅仅是一天中的时间,带有时区 00:00:00+1459 24:00:00-1459 1微秒 / 14位
interval [ fields ] [ (p) ] 16字节 时间间隔 -178000000年 178000000年 1微秒 / 14位

time、timestamp和interval可以配置一个可选的精度值 p,它表示在秒后面保留的小数的位数,p的值可以为0--6。

interval类型有一个附加选项,它可以通过写下面之一的短语来限制存储的fields的集合:

YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
YEAR TO MONTH
DAY TO HOUR
DAY TO MINUTE
DAY TO SECOND
HOUR TO MINUTE
HOUR TO SECOND
MINUTE TO SECOND

注意如果fields和p被指定,fields必须包括SECOND,因为精度只应用于秒。

货币类型

名字 存储尺寸 描述 范围
money 8 bytes 货币额 -92233720368547758.08到+92233720368547758.07

money存储固定小数精度的货币数字,小数的精度由数据库的lc_monetary参数决定。表中展示的范围假设有两个小数位。可接受的输入格式很多,包括整数和浮点数文字,以及常用的货币格式,如'$1,000.00'。 输出通常是最后一种形式,但和区域相关。

布尔类型

名字 存储字节 描述
boolean 1字节 状态为真或假

"真"状态的有效文字值是:

  • TRUE
  • 't'
  • 'true'
  • 'y'
  • 'yes'
  • 'on'
  • '1'

而对于"假"状态,你可以使用下面这些值:

  • FALSE
  • 'f'
  • 'false'
  • 'n'
  • 'no'
  • 'off'
  • '0'
本文链接:/tutorial/postgresql/postgresql-shuju-leixing

本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!