SQL数据库类型规定了一个属性的取值范围。数据类型直接对应于关系模型中域的概念。关系中的每个属性必须来自于一个域。相应地,表中每个列的取值必须符合定义表时指定的数据类型。数据类型见下图所示:
常用数据类型及说明如下:
数值型(Numeric) INTEGER/INT SERIAL SERIAL8 SMALLINT BIGINT BIGSERIAL DECIMAL NUMERIC(p,s) REAL or SMALLFLOAT FLOAT DOUBLE PRECISION Money(p,s) 时间型(TIME) DATE DATETIME INTERVAL | 字符型(CHARACTER) CHAR(n) CHARACTER VARYING(n,r) VARCHAR(n,r) LVARCHAR(n) NCHAR(n) NVARCHAR(m,r) 大对象(Large Objects) BYTE TEXT BLOB CLOB 布尔型(BOOLEAN) BOOLEAN |
1.数值类型
(1)INTEGER/INT
4个字节,为 -(231-1)到 231-1 的整数。
(2)INT8 or BIGINT
8个字节,为 -(263-1)到 263-1 的整数。
(3)BIGINT
优于INT8。
(4)SMALLINT
2个字节,为 -(215-1)到 215-1 的整数。
(5)SERIAL
4个字节,为1到231-1的正整数,由服务器自动递增。
(6)SERIAL8 or BIGSERIAL
8个字节,为1到263-1的正整数,由服务器自动递增。
(7)BIGSERIAL
优于SERIAL8。
(8)FLOAT or DOUBLE PRECISION
双精度浮点数,有16个有效位。
(9)SMALLFLAOT or REAL
单精度浮点数,有8个有效位。
(10)DECIMAL(p,s) or NUMERIC(p,s)
定点小数,其中的p是总位数,s是小数点右边的位数。
(11)MONEY(p,s)
货币值,与DECIMAL相似,用货币字符进行格式化。
2.字符类型
(1)CHAR(n)/CHARACTER(n)
定长的字符串,n为字符串长度,默认为1字节。如果长度小于n,那么用空格填充至n个字符。n的最大值为32767.
(2)VARCHAR(n,r)/CHARACTERVARYING(n,r)
长度可变的字符串,n为最大字节长度,r是最小保留空间;如果存储的值的长度小于r,那么用空格填充至r个字符;如果存储的值的长度大于r但小于n,那么只占用存储数据所需的空间。n的最大值为255.
(3)LVARCHAR(n)
长度可变的字符串,n为最大字节长度,默认为2048字节。只使用存储数据所需的空间,n的最大值为32739.
(4)NCHAR(n)
定长的字符串,包括使用 Global Language Support(GLS)存储由数据库地区决定的单字节和多字节字符集;还允许使用本地的整理次序。
(5)NVARCHAR(n,r)
长度可变的字符串,参数含义同VARCHAR,具有与NCHAR相似的特殊性质。
如何选择char 或者varchar ?
char(1)占用1字节,而Varchar(1)占用2字节。
固定长度的情况选择char,N<20且变化不大的情况选择char,特别是需要创建index的字段,应该选择char,而非varchar。
3.时间类型
(1)Date
默认格式为MM/DD/YY,可通过GL_DATE环境变量修改。
(2)DATETIME
日期时间,默认格式为YYYY-MM-DD HH:MM:SS:FFF,可以通过GL_DATETIME环境变量修改格式:
Datetime year to second,
Datetime year to fraction(5),
(3)INTERVAL
时间跨度,格式与DATETIME相同。
4.大对象
简单大对象有如下类型。
(1)BYTE
最大为2GB。
(2)TEXT
最大为2GB。
智能大对象有如下类型。
<1> BLOB二进制大对象,最大为4TB,用于存储二进制数据。
<2> CLOB字符大对象,最大为4TB,用于文本数据。
5.布尔型
BOOLEAN:'t' 或 'f'。