进阶数据库系列(六):PostgreSQL 数据类型与运算符

前面介绍了 PostgreSQL 目录结构与配置文件 postgresql.conf、常用管理命令、访问控制与认证、语法 相关的知识点,今天我将详细的为大家介绍 PostgreSQL 数据类型与运算符 相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发支持一波!!!

PostgreSQL 支持多种数据类型,主要有整数类型、浮点数类型、任意精度数值、日期/时间类型、字符串类型、二进制类型、布尔类型和数组类型等。

PostgreSQL 数据类型介绍

数值类型:整数类型、浮点数类型、任意精度类型。

整数类型

整数类型包括:SMALLINT、INT(INTEGER)、BIGINT三种,三者在取值空间和存储范围上有所不同,不同的存储空间也决定了不同的查询效率。应根据实际需要选择最适合的类型,以在查询效率和存储空间上有所平衡。

浮点数类型

实际工作中很多地方需要用到带小数的数值,PostgreSQL使用浮点数来表示小数。浮点数类型有两种:REAL和DOUBLE PRECISION。PostgreSQL也支持使用标准的SQL语法,即:float和float§来声明非精确的数值类型,p表示可接受的精度。REAL类型对应float(1)~float(24),DOUBLE PRECISION对应float(25)~float(53),未声明精度时将被当作DOUBLE PRECISION处理。

任意精度类型

NUMERIC表示任意精度类型,PostgreSQL中任意精度类型可存储最多1000位精度的数字并且准确地进行计算,非常适合用于货币金额和其它要求计算准确的数据,但是,NUMERIC类型的运算速度要比整数类型或者浮点数类型要慢很多。使用格式为:NUMERIC(M,N)。其中,M称为精度,表示总位数;N称为标度,表示小数位。M和N决定了NUMERIC的取值范围,当用户数据的精度超出指定精度时,会进行四舍五入处理。

序号类型

序号类型SERIAL和BIGSERIAL并不是真正的类型, 只是为在表中设置唯一标识做的概念上的便利。在目前的实现中,下面一句话:

CREATE TABLE tablename (colname SERIAL);

等价于:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename(
    colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
);

类型名 SERIAL 和 SERIAL4 是等效的: 两个都创建 INTEGRE 字段。类型名 BIGSERIAL 和 SERIAL8 也一样,只不过它创建一个 BIGINT 字段。 如果你预计在表的生存期中使用的标识数目超过 2^31 ,那么你应该使用 BIGSERIAL。更多关于大数据 PostgreSQL 系列的学习文章,请参阅:PostgreSQL 数据库,本系列持续更新中。

日期时间类型

PostgreSQL保存日期时间格式的数据类型有多种,主要有:TIME、DATE、TIMESTAMP、INTERVAL。日期时间类型输入像字符串类型输入一样,需要加单引号。每种日期时间类型都有合法的取值范围,超出范围时系统会将"零"插入数据记录中。

时间类型

时间类型是TIME和TIMEwith time zone,默认情况下为不带时区(即:TIME)。不带时区时间格式可接受输入方式有:HH:MM:SS、HH:MM、HHMMSS。带时间格式输入可用系统的NOW()函数。时间、时区输入参考如下。

时间输入:

04:05:06.789 ISO 8601  
04:05:06 ISO 8601  
04:05 ISO 8601  
040506 ISO 8601  
04:05 AM 与 04:05 一样;AM 不影响数值  
04:05 PM 与 16:05一样;输入小时数必须 <= 12  
04:05:06.789-8 ISO 8601  
04:05:06-08:00 ISO 8601  
04:05-08:00 ISO 8601  
040506-08 ISO 8601  
04:05:06 PST 用名字声明的时区

时区输入:

PST 太平洋标准时间(Pacific Standard Time)  
-8:00 ISO-8601 与 PST 的偏移  
-800 ISO-8601 与 PST 的偏移  
-8 ISO-8601 与 PST 的偏移  
zulu 某军方对 UTC 的缩写  
z zulu的缩写
DATE类型

DATE类型用于仅需要日期值时,日期输入格式为:YYYY-MM-DD、YYYYMMDD。输入DATE类型数据时,可以使用字符串或数字类型的数据输入,符合DATE的日期格式即可。可以使用CURRENT_DATENOW()插入当前系统时间。

TIMESTAMP类型

时间戳类型的有效输入由一个日期和时间的联接组成,后面跟着一个可选的时区,一个可选的 AD 或者 BC。时间戳输入格式为:YYYY-MM-DD HH:MM:SS。带时区输入格式为:2019-03-22 4:05:06 -8:00

INTERVAL类型

INTERVAL类型输入格式如下:

quantity unit [quantity unit…] [direction]

quantity 是一个数字或符号; unit 是 second, minute, hour, day, week, month, year, decade, century, millennium, 或这些单位的缩写或复数; direction 可以是 ago 或者为空。符号 @ 是一个可选的东西。不同的单位以及相应正确的符号都是隐含地增加。更多关于大数据 PostgreSQL 系列的学习文章,请参阅࿱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值