当前位置:早雪网网络学院编程文档数据库技术Postgresql → PostgreSQL7.0手册-用户手册-3. 数据类型

PostgreSQL7.0手册-用户手册-3. 数据类型

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-23 12:18:21
第三章. 数据类型
内容 
数值类型 
货币类型 
字符类型 
日期/时间类型 
布尔类型 
几何类型 
IP 版本 4 网络和主机类型 



描述 Postgres 内建的可用数据类型.
Postgres 有着丰富的数据类型可用.用户可以使用 DEFINE TYPE 命令为 Postgres增加新的数据类型. 
在数据类型这部分,随后的各节将讨论 SQL 标准的兼容性,移植问题和使用问题.一些 Postgres 类型直接与 SQL92-兼容类型相对应.其它一些 SQL92 语法定义的数据类型直接映射为Postgres 内部的数据类型.许多内建的数据类型有明确的外部格式.但是,有一些数据类型或者是Postgres特有的,如开放和闭合路径,或者是有几种可能格式的类型,如日期和时间类型. 

  表 3-1. Postgres数据类型 
   
 
 Postgres 类型 SQL92 或 SQL3 类型 描述 
bool boolean 逻辑布尔量 (真/假) 
box   二维平面中的方形盒 
char(n) character(n) 定长字符串 
cidr   IP v4网络或主机地址 
circle   二维平面中的圆 
date date 日历日期(不带时间) 
decimal decimal(p,s) p <= 9,s = 0 的准确数字 
float4 float(p), p < 7 精度为p的浮点数 
float8 float(p), 7 <= p < 16 双精度浮点数 
inet   IP v4网络或主机地址 
int2 smallint 两字节长带符号整数 
int4 int, integer 四字节长带符号整数 
int8   八字节长带符号整数 
interval interval 通用的时间间隔 
line   二维平面中的直线(无限长) 
lseg   二维平面中的线段 
money decimal(9,2) 美国风格的货币类型 
numeric numeric(p,s) p == 9,s = 0的准确数字 
path   二平面的开放的或封闭的几何路径 
point   二维平面中的点 
polygon   二维平面中的封闭几何路径 
serial   用于索引和/或交叉索引的独一无二的标识符 
time time 一天里的时间 
timetz time with time zone 一天里的时间,包括时区 
timestamp timestamp with time zone 日期/时间 
varchar(n) character varying(n) 变长的字符串 


注意: cidr 和 inet 用于处理任何IP类型数据,但目前只能处理ipv4的数据.在以后的版本里我们将将所有对ipv4的支持增加到对ipv6的支持中.
表 3-2. Postgres 函数常量 
   
 
 Postgres 函数 SQL92 常量 描述 
getpgusername() current_user 当前会话的用户名 
date('now') current_date 当前事务的日期 
time('now') current_time 当前事务的时间 
timestamp('now') current_timestamp 当前事务的日期和时间 
Postgres 拥有开发 ORDBMS 应用的首要特性.除了符合SQL3规范外,我们还支持很大一部分 SQL92 规范.尽管我们尽可能地遵循 SQL92 规范,但该规范里有一些方面欠缺考虑,在后继的规范中不可能继续存在.Postgres不会为这些特性花费太多的时间;因为这些方面主要发生在很少使用或语意含混的场合,典型的用户很少能碰到它们。 
绝大多数与基本类型(如:整数和浮点数)对应的输入输出函数都会做错误检查.出于改善执行性能的考虑,一些操作符和函数(如加法和乘法)并不做运行时的错误检查.因而在一些系统上的对某些数据类型的数字操作会导致轻微的数值溢出或下溢。 

要注意的是一些输入输出函数是不可逆的.也就是说,一个输出函数的输出结果与输入的数据相比可能会丢失精度。 

注意:浮点数可以保持该类型的最高固有精度(一般来说,双精度是15位,4字节浮点数是6位).其他依赖浮点的数据类型(如,几何类型)也有相似精度.
数值类型
数值类型由2或4字节的整数以及4或8字节的浮点数和固定精度小数组成。 
表 3-3. Postgres 数值类型 
   
 
 数值类型 存储空间 描述 范围 
decimal 变长 用户声明精度 ~8000 位(数字) 
float4 4 bytes 变精度 6 位数字 
float8 8 bytes 变精度 15 位数字 
int2 2 bytes 固定精度 -32768 到 +32767 
int4 4 bytes 常用的固定精度数 -2147483648 到 +2147483647 
int8 8 bytes 极大范围的固定精度数 +/- > 18 位数字 
numeric variable 用户声明精度 无限制 
serial 4 bytes 标识或交叉索引 0 到 +2147483647 


数值类型对应有一套完整的数学操作符和函数.相关信息请参考 数字操作符 和 数学函数。 

int8 类型因为是要靠编译器来支持的,因而可能无法在所有平台上得到支持。 

Serial(序列)类型
serial 类型是 Postgres 用其他现有的类型构造出来的一种特殊的类型.典型的应用是创建表的唯一标识,在当前的实现中,下面一句话: 
CREATE TABLE tablename (colname SERIAL);
等价于下面几句话: 
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename
    (colname INT4 DEFAULT nextval('tablename_colname_seq');
CREATE UNIQUE INDEX tablename_colname_key on tablename (colname);
  
  注意 
创建为serial 类型的隐含序列号在删除表时不会自动删除 


在删除一个包含 serial 类型的表的时候,隐含的支持 serial 的序列号不会被自动删除。因此下面顺序执行的命令将是无效的: 

CREATE TABLE tablename (colname SERIAL);
DROP TABLE tablename;
CREATE TABLE tablename (colname SERIAL);
除非显式地使用 DROP SEQUENCE 命令,序列号不会被删掉而一直在数据库里面。 

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

货币类型
过时的类型:money (货币)现在已经过时,用numeric 或 decimal 取代它。
money 类型支持US-类的固定小数点位置的货币数字.如果编译Postgres 时使用了 USE_LOCALE 编译选项,货币类型将使用为locale(7)定义的货币习惯. 
表 3-4. Postgres 货币类型 
  货币类型 存储空间 描述 范围 
money 4 字节 固定精度 -21474836.48 到 +21474836.47 


numeric 最终将取代货币类型。因而应该优先使用。 



---

[1] [2] [3] [4]  下一页


Tags:PostgreSQL,手册,用户,手册,数据,类型
[数据载入中...] [返回上一页] [打 印]