informix数据类型

更新时间:2023-10-13 17:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一. 内建的数据类型

1. 数字相关 1)INTEGER

整型,范围为:-2147483647-2147483648 2)SMALLINT 短整型,-32767-32767 3)INT8

长整型 –(263 –1) - 263 –1 4)DECIMAL(p,s)

可调整精度浮点型10-130 - 10124 SMALLINT和INTEGER的优势:

占用很小的空间,分别占用2个字节和4个字节 可以对他们执行算术表达式和排序操作 SMALLINT和INTEGER的劣势: 可以存储数值的范围有限

只有IDS才支持INT8,虽然占据的空间是INT的两倍,但是存储的数值的范围增大到: –(263 –1) - 263 –1 DECIMAL(p,s)的优势:

p指数据的精度,其范围从1到32,s则用以确定小数位数,是0的时候等同于DECIMAL(p)表示整数。他完整涵盖了SMALLFLOAT和FLOAT的表达范围。DECIMAL(p)占用的存储空间为p/2+1个字节,而DECIMAL(p,s)占用的存储空间,如果s是偶数,占用(p +3)/2个字节,s为奇数(p + 4)/2个字节。 DECIMAL(p,s)的劣势:

缺点是算术运算的效率比较低,且许多变成语言不支持此种格式。

4)SERIAL、SERIAL8、BIGSERIAL

这三种类型都会自动产生数据,并且用户可选择是否提供初始值. 不同之处在于:

SERIAL类型的数据占用4个字节的存储空间;

SERIAL8类型的数据一般情况下占用10个字节的存储空间(在Extended Parallel Server中占用8个字节的存储空间);

BIGSERIAL类型的数据占用8个字节的存储空间。

eg1. 创建一个表route_rule,它的主键rule_id是属于SERIAL自增类型的,参考建表语句如下:

create table route_rule (

rule_id serial not null,

rule varchar(128) not null, action varchar(32) not null, route_arg varchar(32),

primary key (rule_id) constraint PK_ROUTE_RULE );

eg2. 如何查询serial型字段的当前值? 5)DECIMAL(p,s)

其中p是整个数据的有效位,s是小数点后位数,1

eg1:在如下实例中,创建了human_task_exp表,其中probability为双精度类型:

create table human_task_exp( serviceid VARCHAR(30) not null, seconds INTEGER default 0 not null, probability DECIMAL(16,14) default 0) )

6)FLOAT、SMALLFLOAT

这两种类型的数据使用于不要求精度而要求量值的场合,如科学计算,FLOAT双精度数,通常占8个字节,有16位十进制有效位,而smallint为单精度数,占4字节,8位十进制有效位。但数值超出精度范围,则都看作0处理

7)MONEY(p, s)

同decimal完全相同,但显示money类型时候会自动显示现金符号,默认是$。

2. 时间相关

1)DATE

日期型,随数据库不同而不同.

eg1. test_date表中包含一个birthday的日期字段,可以通过如下语句插入: 创建表的语句参考如下:

CREATE TABLE test_date(birthday date);

插入记录(一条生日为1982年11月21日的数据)的语句参考如下:

insert into test_date values('11/21/1982');

也可通过如下语句执行如上语句相同的结果:

insert into test_date values(date('11/21/1982'));

eg2. 将DATE类型的数据转换为指定的字符类型

例如将上面的11/21/1982变成1982-11-21的类型.语句如下:

select TO_CHAR(birthday, '%Y-%m-%d') from test_date;

eg3. 获得当前日期

select today from test_date;

eg4. 日期相加减,得到天数,例如将test_date中的当前日期-birthday字段,可得到出生天数,语句如下:

select to_date(to_char(today,'%Y-%m-%d'),'%Y-%m-%d') - to_date(to_char(birthday,'%Y-%m-%d'),'%Y-%m-%d') from test_date;

对于1982-11-21,可得到如下的返回结果(oh,my god,我已经出生那么多天咯

10211 00:00:00.00000

):

2)DATETIME

用于记录时间点,表示的精度可以任意指定,可以包含年份、月份、日。

eg1. 将表test_datetime的字段birthtime定义为DATETIME类型,建表语句参考如下:

create table test_datetime(birthtime datetime year to fraction(2));

eg2. 若要在该表中插入一条1982-11-21 12:20:00的数据:

insert into test_datetime values('1982-11-21 12:20:00');

eg3. 插入eg2中同样的记录,还可以使用如下语句:

insert into test_datetime values(datetime(1982-11-21 12:20:00.79) year to fraction(2));

eg4. 将DATE类型的数据转换为指定的字符类型:

select TO_CHAR(birthtime, '%Y-%m-%d %H:%M:%S') from test_datetime;

上面的出生时间的如上语句的结果如下:

1982-11-21 12:20:00

3)INTERVAL

interval类型的数值用于表示两个时间点之间的间隔.

eg1. 将表test_interval的字段interval_filed字段定义为INTERVAL类型,并且只包含“时:分:秒”,建表语句参考如下:

create table test_interval(interval_filed interval hour to second);

eg2. 在上面创建的表中插入一条记录,时间是12:20:05,语句参考如下:

insert into test_interval values ('12:20:05');

eg3. 达到如上语句相同的结果也可以使用到interval函数,语句参考如下:

insert into test_interval values(interval(12:20:05) hour to second);

eg4. 将INTERVAL类型转换为指定的字符类型(HH:MM:SS格式,直接查询就是这个格式,嘻嘻),语句参考如下:

select * from test_interval;

运行结果就是:12:20:05。

3. 字符相关

1)VARCHAR(n, r)

存储变长字符型,最长255字节。 2)CHAR(n)

定义宽度为n的字符字段,最长255。 3)NCHAR(n)

同char,但允许GLS应用程序的不同排序顺序。 4)NVARCHAR(m, r)

同varchar,但允许GLS应用程序的不同排序顺序。 5)LVARCHAR(m)

存储变长字符串,最大32739个字节. 6)CHARACTER VARYING(n, r)

存储用户定义的数据类型,其内部结构对于数据库服务器不透明,即不可存取。

4. 大对象相关

1)BYTE

二进制数据,最大2的31次方字节。byte用于存储任意数据,一般用来存储图片和声音文件等。 2)TEXT

文本型,最大2的31次方字节。 3)BLOB

以随机存取块的形式存储二进制数据。 4)CLOB

以随机存取块的形式存储文本数据。 5. MISC

1)BOOLEAN

存储布尔值true和false。

二. 复杂对象类型(complex data type)

1、复杂数据类型

由一个或多个数据类型组合而成。复杂数据类型有row数据类型、集合数据类型。

本文来源:https://www.bwwdw.com/article/uu4f.html

Top