第三章、数据类型及子类型
各种数据类型的用途:
•定义数据库表中的列在CREATE table语句中使用或ALTER table改变列
•声明或改变一个域使用创建域或改变域语句
•在存储过程中声明局部变量,PSQL块和触发器和存储过程中指定参数
•在声明外部函数时间接指定参数和返回值(用户自定义函数)
•特别当转换一种数据类型到另一种数据时为CAST()函数提供参数
表3.1数据类型的概述
名称 | 大小 | 范围 /精度 | 描述 |
BIGINT | 64位 | 从 -263 到 (263 -1) | 这个数据类型仅在方言3中有效 |
BLOB | 不固定 | BLOB段大小限于64K,BLOB字段的最大长度为4GB |
动态变长度二进制类型,用于存放大量数据的情况,如图片、音乐、视频、多媒体等。其基本结构单位为段,它的子类型描述了存储数据的详细信息 |
CHAR(n), CHARACTER(n) |
n个字符,总长度由字符编码的字节数决定 | 从1到32767个字节 | 一个固定长度的字符数据类型。当其数据显示,尾部的空格添加到指定的字符串长度。尾部的空格不存储在数据库,但在显示列数据到客户端时恢复到与定义相匹配长度,在局域网内不发送空格以减少网络流量,如果没有指定字符的数量,默认情况下使用1. |
DATE | 32位 | 从公元后01.01.0001 到 31.12.9999 |
日期类型。只有年月日,不带时间 |
DECIMAL (precision, scale) |
变长(16、32或64位) | 精度precision从1到18:指定数字的总长度;标度scale从0到18:指定小数点后的位数。 | 一个数带有小数点那小数点后面的位数必须小于或等于其总长度,定点小数。例如decimal(10,3)可以存储的数字形式为:ppppppp.sss |
Double Precision | 64位 | 从2.225 * 10-308 到1.797 * 10308 |
IEEE双精度浮点数,15位长度,实际长度依赖于所在的平台 |
Float | 32位 | 从1.175 * 10-38 到3.402 * 1038 |
IEEE单精度浮点数,7位长度 |
INTEGER, INT | 32位 | 从-2147483648 到2147483647 |
为有符号整数 |
NUMERIC (precision, scale) |
变长(16、32或64位) | 精度precision从1到18:指定数字的总长度;标度scale从0到18:指定小数点后的位数。 | 一个数带有小数点那小数点后面的位数必须小于或等于其总长度,定点小数。例如decimal(10,3)可以存储的数字形式为:ppppppp.sss |
SMALLINT | 16位 | 从-32768到32767 | 短整数 |
TIME | 16位 | 从0:00 到23:59.9999 | 时间类型,一天的时间。它不能用于存储时间间隔 |
TIMESTAMP | 64位(2*32位) | 从公元后01.01.0001天开始到公元后31.12.9999天结束 | 由日期和时间组成 |
Varchar(N) VARCHAR(n), CHAR VARYING, CHARACTER VARYING |
n个字符,总长度由字符编码的字节数决定 | 从1到32765个字节 |
长度可变字符串类型,字符串总长的字节数不能超过32KB-3,考虑他们的编码。结尾2字节用于存储声明的长度。没有默认大小:n参数必须提供,前置和结尾空格都会被存储,不会被自动删除,除它们超出了声明的长度
|
关于日期的备注
记住日期构成的时间序列在过去的世纪是没有被处理成实际的历史情况, 虽公历是适用在整个序列。