Oracle 常用的数据库字段类型如下:
字段类型 | 中文说明 | 限制条件 | 其它说明 |
---|---|---|---|
CHAR | 固定长度字符串 | 最大长度2000 bytes | |
VARCHAR2 | 可变长度的字符串 | 最大长度4000 bytes | 可做索引的最大长度749Byte/char,默认情况用的是Byte |
NCHAR | 根据字符集而定的固定长度字符串 | 最大长度2000 bytes | |
NVARCHAR2 | 根据字符集而定的可变长度字符串 | 最大长度4000 bytes | |
DATE | 日期(日-月-年) | DD-MM-YY(HH-MI-SS) | 经过严格测试,无千虫问题 |
LONG | 超长字符串 | 最大长度2G(231-1) | 足够存储大部头著作 |
RAW | 固定长度的二进制数据 | 最大长度2000 bytes | 可存放多媒体图象声音等 |
LONG RAW | 可变长度的二进制数据 | 最大长度2G | 同上 |
BLOB | 二进制数据 | 最大长度4G | |
CLOB | 字符数据 | 最大长度4G | |
NCLOB | 根据字符集而定的字符数据 | 最大长度4G | |
BFILE | 存放在数据库外的二进制数据 | 最大长度4G | |
ROWID | 数据表中记录的唯一行号 | 10 bytes ********.****.****格式,*为0或1 | |
NROWID | 二进制数据表中记录的唯一行号 | 最大长度4000 bytes | |
NUMBER(P,S) | 数字类型 | P为整数位,S为小数位 | |
DECIMAL(P,S) | 数字类型 | P为整数位,S为小数位 | |
INTEGER | 整数类型 | 小的整数 | |
FLOAT | 浮点数类型 | NUMBER(38),双精度 | |
REAL | 实数类型 | NUMBER(63),精度更高 |
- VARCHAR2 - Byte vs char
一个英文字母,一个数字,一个符号各占一个字节。一个汉字占两个字节。
CREATE TABLE TEST(
NAME VARCHAR2(2)
)
INSERT INTO TEST VALUES('测试');
- 在Windows环境下:
报错信息:实际值4, 最大值2
可见在Windows默认情况下,VARCHAR2(2) 就等于是 VARCHAR2(2 BYTE) 一个汉字占2个字节
- 在Linux环境下:
报错信息:实际值6,最大值2
可见在Linux默认情况下,VARCHAR2(2) 就等于是 VARCHAR2(2 BYTE) 一个汉字占3个字节
如果建表文改为:
CREATE TABLE TEST(
NAME VARCHAR2(2 CHAR)
)
INSERT INTO TEST VALUES('测试');
在Windows和Linux下都可以执行成功。
网友评论