类型 | char(n) | |
参数 | n=1 to 2000 | |
说明 | 1> 定长字符串,n字节长, 单位是字节,长度不够时往后面填充空格以补满 2> 如果不指定长度,缺省为1个字节长 3> 采用的是非Unicode编码,一个汉字为2字节 | |
举例 | SQL语句 | 执行结果 |
CREATE TABLE test1(charTest CHAR(1)); INSERT INTO TEST1 VALUES ('中'); | ORA-12899: 列 "SYS"."TEST1"."CHARTEST" 的值太大 (实际值: 2, 最大值: 1) | |
create table test2(charTest char(4)); insert into test2 values('a'); select charTest,dump(charTest) from test2; | CHARTEST DUMP(CHARTEST) -------- ---------------------------------- a Typ=96 Len=4: 97,32,32,32 |
类型 | nchar(n) | |
参数 | n=1 to 2000 | |
说明 | 1> 定长字符串,n字节长, 单位是字节,长度不够时往后面填充空格以补满 2> 最大长度2000字节 3> 采用Unicode编码,一个汉字为一个字符 | |
举例 | SQL语句 | 执行结果 |
create table test1(charTest nchar(1)) insert into test1 values('中') | Table created 1 row inserted | |
create table test2(charTest nchar(4)); insert into test2 values('a'); select charTest,dump(charTest) from test2; | CHARTEST DUMP(CHARTEST) ---------------------------------------- a Typ=96 Len=8: 0,97,0,32,0,32,0,32 |
类型 | varchar2(n) | |
参数 | n=1 to 4000 | |
说明 | 1> 最大长度为4000,单位为字节 2> 采用非unicode编码,汉字占两个字节,字母符号数字占一个自己 3> 变长,如果数据长度没有达到最大值n,会根据数据大小自动调节字段长度 4> 实际存储的数据的最大长度不能超过定义时的长度 5> 可做索引的最大长度3209。(不懂什么意思) | |
举例 | SQL语句 | 执行结果 |
create table VCTest(VChar varchar2(1)); insert into VCTest values('中'); | ORA-12899: 列 "RENJIE"."VCTEST"."VCHAR" 的值太大 (实际值: 2, 最大值: 1) | |
create table VCTest2(VChar varchar2(4001)); | ORA-00910: 指定的长度对于数据类型而言过长 | |
create table VCTest3(VChar varchar2(4)); insert into VCTest3 values(' a '); --空格a空格 select VChar,dump(VChar) from VCTest3; | Table created 1 row inserted VCHAR DUMP(VCHAR) ----- --------------------------- a Typ=1 Len=2: 32,97 a Typ=1 Len=3: 32,97,32 |
类型 | nvarchar2(n) | |
参数 | n=1 to 4000 | |
说明 | 1> 最大长度4000字节,单位为字节 2> 采用非Unicode编码,所有的字符都只占两个字节,汉字也是 3> 变长,如果数据长度没有达到最大值n,会根据数据大小自动调节字段长度 4> 实际存储的数据的最大长度不能超过定义时的长度 | |
举例 | SQL语句 | 执行结果 |
create table NVCTest(NVChar nvarchar2(1)); insert into NVCTest values('中'); | Table created 1 row inserted | |
create table VCTest2(VChar nvarchar2(4001)) | ORA-00910: 指定的长度对于数据类型而言过长 | |
create table NVCTest3(VChar nvarchar2(4)); insert into NVCTest3 values(' a '); --空格a空格 select VChar,dump(VChar) from NVCTest3; | VCHAR DUMP(VCHAR) -------- ------------------------------------ a Typ=1 Len=6: 0,32,0,97,0,32 |
类型 | number(m,n) | |
参数 | m=1 to 38 | |
说明 | 1> m是所有有效数字的位数,n是小数点以后的位数 2> 数字的进度按照mn做四舍五入操作,n为负数代表数值只取到小数点之前多少位 3> 变长存储,实际存储数据的长度是按参数四舍五入后的数据的实际长度,而不是定义时的长度 4> mn均可以省略,如果省略则取其默认值 | |
举例 | SQL语句 | 执行结果 |
create table numTest(numT number(3,2)); insert into numTest values(1.234); insert into numTest values(1.235); insert into numTest values(11.11); | Table created 1 row inserted 1 row inserted ORA-01438: 值大于为此列指定的允许精度 | |
select numT,length(numT) from numTest; | NUMT LENGTH(NUMT) ----- ------------------- 1.23 4 1.24 4 |
类型 | date | ||
参数 | 无 | ||
说明 | 1> 存储范围:公元前4712年1月1日——公元4712年12月31日 2> 其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒 3> 缺省格式为DD-MON-YY,如07-11月-00 表示2000年11月7日 4> 当日起参与计算的时候粒度为天 | ||
举例 | SQL语句 | 执行结果 | |
create table dateTest (dateT date); insert into dateTest values(sysdate); select to_char(dateT,'YYYY-MM-DD HH24:MI:SS') d from dateTest; select to_char(dateT-1,'YYYY-MM-DD HH24:MI:SS') d from dateTest; select to_char(dateT-1/24,'YYYY-MM-DD HH24:MI:SS') d from dateTest; | D ------------------- 2012-10-17 19:42:53 2012-10-16 19:42:53 2012-10-17 18:42:53 | ||
select length(dateT) from dateTest; | LENGTH(DATET) -------------------- 9 | ||
类型 | timestamp(p) | ||
参数 | p=0 to 9 | ||
说明 | 1> 保存的精度与date相比较更为精确,保存到小数秒 2> 小数位数可以指定为0-9,默认为6位,所以最高精度可以到ns(纳秒), 3> TIMESTAMP日期类型如果与数值进行加减运算会自动转换为DATE型,也就是说小数秒会自动去除。 4> 如果精度为0,则用7字节存储,否则用11个字节存储,格式为: 第1字节:世纪+100 第2字节:年 第3字节:月 第4字节:天 第5字节:小时+1 第6字节:分+1 第7字节:秒+1 第8-11字节:纳秒,采用4个字节存储,内部运算类型为整形 | ||
举例 | SQL语句 | 执行结果 | |
create table STTest(stt timestamp); insert into STTest values(sysdate); select stt,length(stt) from STTest; | STT LENGTH(STT) -------------------------------------- ----------- 17-10月-12 07.50.42.000000 下午 28 | ||
create table STTest2(stt timestamp(9)); insert into STTest2 values(sysdate); select stt,length(stt) from STTest2; | STT LENGTH(STT) ------------------------------------------ ----------- 17-10月-12 07.50.42.000000000 下午 31 | ||
类型 | long | |
参数 | 无 | |
说明 | 1> 可变长字符列,最大长度限制是2GB 2> 用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。 3> long是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。 | |
举例 | SQL语句 | 执行结果 |
|
| |
|
|
类型 | raw(n) | |
参数 | n=1 to 2000 | |
说明 | 1> 可变长二进制数据,在具体定义字段的时候必须指明最大长度n 2> raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。 | |
举例 | SQL语句 | 执行结果 |
|
| |
|
|
类型 | long raw | |
参数 |
| |
说明 | 1> 可变长二进制数据,最大长度是2GB 2> 在同一张表中不能同时有long类型和long raw类型 3> long raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。 | |
举例 | SQL语句 | 执行结果 |
|
|
类型 | blob -- 二进制,如果exe, zip clob -- 单字节码,比如一般的文本文件 nclob -- 多字节码,如UTF格式的文件 | |
参数 | 无 | |
说明 | 1> 变长,用来保存较大的图形文件或带格式的文本文件,最大长度是4GB。 2> LOB有几种类型,取决于你使用的字节的类型。 3> 可以执行读取、存储、写入等特殊操作。 | |
举例 | SQL语句 | 执行结果 |
|
| |
|
|
类型 | bfile | |
参数 | 无 | |
说明 | 1> 在数据库外部保存的大型二进制对象文件,最大长度是4GB。 2> 这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。 | |
举例 | SQL语句 | 执行结果 |
|
| |
|
|
附录一:
关于Unicode编码格式的介绍:http://baike.baidu.com/view/40801.htm