informix的数据类型列表

前言

在informix11.7上准备了一些数据.
informix有些数据类型的操作用SQL语句执行时,有特定的写法。

实验

实验环境

informix 11.70 + DbVisualizer v10.0.1 64位 + informix Server Studio 10.0 x86

参考

https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/sqls.htm
https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_0228.htm
https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.esqlc.doc/ids_esqlc_0168.htm

操作数据类型的备注

  • 一个表中只能有一个serial字段(bigserial or serial)
  • SERIAL类型一定是非空的
  • blob类型无法用update语句来更新
    byte,blob, clob, text 数据类型都是blob数据类型.
    ref : http://www-01.ibm.com/support/docview.wss?uid=swg21652966
    如果是insert blob类型的数据,是用LOAD本地文件来引入blob数据的,没实验。
  • DATETIME和INTERVAL有好多小类型,为什么要这么弄? 这些类型自己实验,实验不出来,对应的类型填什么数据能过, 官方的例子也不多. informix Server Studio完整版是可以通过导出数据的备份SQL来看插入,更新这些数据时,SQL怎么写。可是手头这个informix Server Studio的授权不全,很多功能都没有.
  • 如果sql写错了,可以在Server Studio和DbVisualizer分别执行,总能看到sql执行错误的原因.

实验通过的SQL语句

建表

create table 'informix'.tbl_full_data_type (
    col_serial SERIAL not null,
    col_boolean boolean,
    col_byte BYTE,
    col_char CHAR(1),

    col_character VARCHAR(1,1),
    col_varchar VARCHAR(1,1),
    col_nchar NCHAR(1),
    col_nvarchar NVARCHAR(1,1),
    col_lvarchar lvarchar,

    col_smallint SMALLINT,
    col_integer INT,
    col_int8 INT8,
    col_bigint BIGINT,
    col_decimal DECIMAL(16),
    col_numeric DECIMAL(16),
    col_smallfloat SMALLFLOAT,
    col_float FLOAT,
    col_double FLOAT,

    col_blob blob,
    col_clob clob,
    col_text TEXT,
    col_money MONEY(16,2),
    col_date DATE,
    col_datetime_01 DATETIME FRACTION TO FRACTION,
    col_datetime_02 DATETIME SECOND TO FRACTION,
    col_datetime_03 DATETIME SECOND TO SECOND,
    col_datetime_04 DATETIME MINUTE TO FRACTION,
    col_datetime_05 DATETIME MINUTE TO SECOND,
    col_datetime_06 DATETIME MINUTE TO MINUTE,
    col_datetime_07 DATETIME HOUR TO FRACTION,
    col_datetime_08 DATETIME HOUR TO SECOND,
    col_datetime_09 DATETIME HOUR TO MINUTE,
    col_datetime_10 DATETIME HOUR TO HOUR,
    col_datetime_11 DATETIME DAY TO FRACTION,
    col_datetime_12 DATETIME DAY TO SECOND,
    col_datetime_13 DATETIME DAY TO MINUTE,
    col_datetime_14 DATETIME DAY TO HOUR,
    col_datetime_15 DATETIME DAY TO DAY,
    col_datetime_16 DATETIME MONTH TO FRACTION,
    col_datetime_17 DATETIME MONTH TO SECOND,
    col_datetime_18 DATETIME MONTH TO MINUTE,
    col_datetime_19 DATETIME MONTH TO HOUR,
    col_datetime_20 DATETIME MONTH TO DAY,
    col_datetime_21 DATETIME MONTH TO MONTH,
    col_datetime_22 DATETIME YEAR TO FRACTION,
    col_datetime_23 DATETIME YEAR TO SECOND,
    col_datetime_24 DATETIME YEAR TO MINUTE,
    col_datetime_25 DATETIME YEAR TO HOUR,
    col_datetime_26 DATETIME YEAR TO DAY,
    col_datetime_27 DATETIME YEAR TO MONTH,
    col_datetime_28 DATETIME YEAR TO YEAR,
    col_interval_01 INTERVAL FRACTION TO FRACTION,
    col_interval_02 INTERVAL SECOND TO FRACTION,
    col_interval_03 INTERVAL SECOND TO SECOND,
    col_interval_04 INTERVAL MINUTE TO FRACTION,
    col_interval_05 INTERVAL MINUTE TO SECOND,
    col_interval_06 INTERVAL MINUTE TO MINUTE,
    col_interval_07 INTERVAL HOUR TO FRACTION,
    col_interval_08 INTERVAL HOUR TO SECOND,
    col_interval_09 INTERVAL HOUR TO MINUTE,
    col_interval_10 INTERVAL HOUR TO HOUR,
    col_interval_11 INTERVAL DAY TO FRACTION,
    col_interval_12 INTERVAL DAY TO SECOND,
    col_interval_13 INTERVAL DAY TO MINUTE,
    col_interval_14 INTERVAL DAY TO HOUR,
    col_interval_15 INTERVAL DAY TO DAY,
    col_interval_16 INTERVAL MONTH TO MONTH,
    col_interval_17 INTERVAL YEAR TO MONTH,
    col_interval_18 INTERVAL YEAR TO YEAR
)

增加表字段

alter table tbl_full_data_type add (col_BOOLEAN BOOLEAN);

alter table tbl_full_data_type add (
        col_CHARACTER CHARACTER VARYING,
        col_VARCHAR VARCHAR,
        col_nchar nchar,
        col_nvarchar nvarchar,
        col_lvarchar lvarchar
);

插入记录

INSERT INTO tbl_full_data_type 
(
col_serial, col_boolean, col_char, 
col_character, col_varchar, col_nchar, col_nvarchar, col_lvarchar,
col_smallint, col_integer, col_int8, col_bigint, col_decimal, col_numeric, col_smallfloat, col_float, col_double,
col_datetime_03, col_datetime_28
) VALUES (
2000, 't', '2', 
'3', '4', '5', '6', '7',
8, 9, 10, 11, 12, 13, 14.5, 15.6, 16.7,
'58', '1974'
);

选择语句

可以抓单个字段的小包

select col_serial from tbl_full_data_type where col_serial = 2000;
select col_boolean from tbl_full_data_type where col_serial = 2000;
select col_datetime_28 from tbl_full_data_type where col_serial = 2000;
select col_nvarchar from  tbl_full_data_type where col_serial = 2000;

select col_nvarchar, col_serial from  tbl_full_data_type where col_serial = 2000;

更新语句

boolean 的SQL值为’f’ or ‘t’
‘t’ is true
‘f’ is false

update tbl_full_data_type
set
     col_BOOLEAN = 'f'
where col_serial = 1000

update tbl_full_data_type
set
        col_DATETIME_01 = '3.5'
where col_serial = 1000

猜你喜欢

转载自blog.csdn.net/lostspeed/article/details/80499598