mysql与oracle 表字段定义比较
说明 | mysql | oracle | |
VARCHAR | 变长字符串 | VARCHAR[0-65535] 定义长度默认按字符长度计算,如果是GBK编码的汉字将占用2个字节 | VARCHAR2[1-4000] 定义默认按字节长度计算 |
TINYINT SMALLINT MEDIUMINT INT | 整数 | TINYINT(-128-127) SMALLINT(-32768-32767) MEDIUMINT(-8388608-8388607) INT(-2147483648-2147483647) | 无专用类型, TINYINT可以用NUMBER(3,0)代替 SMALLINT可以用NUMBER(5,0)代替 MEDUIMINT可以用NUMBER(7,0)代替 INT可以用NUMBER(10,0)代替 BIGINT可以用NUMBER(20,0)代替 ORACLE中有SMALLINT,INT,INTEGER类型,不过这是NUMBER(38,0)的同义词 |
DECIMAL | 数值类型 | DECIMAL[1-65[,0-30]] | NUMBER 可表示数范围: 1*10^-130至1*10^126 NUMBER([1-38][,-84-127]) DECIMAL、NUMERIC、DEC是NUMBER的同义词 |
FLOAT | 浮点型 | FLOAT(D,M) | oracle10g开始增加BINARY_FLOAT类型 10g以前无专用类型,可以用NUMBER代替 ORACLE中有FLOAT和REAL类型,不过这是NUMBER的同义词 |
DOUBLE | 双精度浮点型 | DOUBLE(D,M) | oracle10g开始增加BINARY_DOUBLE类型 10g以前无专用类型,可以用NUMBER代替 ORACLE中有DOUBLE PRECISION类型,不过这是NUMBER的同义词 |
BIT | 位类型 | BIT(1-64) | 无 |
DATETIME | 日期类型 | DATE,3字节存储,只存储日期,没有时间,支持范围是[1000-01-01]至[9999-12-31] | DATE类型 |
TIMESTAMP | 高精度日期 | 5.6.4以前不支持小数秒精度 | TIMESTAMP[0-9] |
YEAR | 年份 | YEAR,1字节存储,只存储年份,支持范围是[1901]至[2155] | 无对应类型,可以用NUMBER(3,0)代替 |
CHAR | 定长字符串 | CHAR[0-255],定义长度默认按字符长度计算,最大保存255字符 | CHAR[1-2000] 定义默认按字节长度计算 |
UNSIGNED | 无符号说明 | 支持,用于数值类型 | 不支持 |
CLOB | 大字符串,一般用于存储文本文件或超大描述及备注类信息 | TINYTEXT 最大支持255个字节 | 支持(CLOB) oracle10g开始最大支持4GB个数据块,数据块大小为2KB-32KB oracle还有一个LONG类型,是早期的存储大字符串类型,最大支持2GB字节,现已不推荐使用 |
BLOB | 大二进制对象,一般用于存储文件或图片数据 | TINYBLOB 最大支持255个字节 LONGBLOB最大支持4GB字节 字段不支持默认值 | 支持(BLOB) oracle10g以前最大支持4GB个字节 oracle10g开始最大支持4G个数据块,数据块大小为2KB-32KB oracle还有一个LONG RAW类型,是早期的存储二进制类型,最大支持2GB字节,现已不推荐使用 |
BINARY | 二进制信息 | BINARY(0-255),定长 | RAW(1-2000) |
ENUM | 枚举类型 | ENUM(v1,v2,v3,...),最多65535个元素 | 不支持 |
SET | 集合类型 | SET(v1,v2,v3,...),最多64个元素 | 不支持 |
NATIONAL CHAR | 国际化字符集类型,较少使用 | 无,MYSQL可以对每个字段指定字符编码 | 支持 |
BFILE | 外部文件指针类型 | 不支持 | 支持 |
自定义数据类型 | 不支持 | 支持 | |
XML类型 | 不支持 | 支持 | |
自增类型 | 自动增长类型 | 支持 | 不支持 |
字段默认值表达式 | 不支持函数和表达式 | 支持函数和表达式 | |
字段顺序修改 | 支持,例如,把emp表的id字段顺序放在name字段后面: | 不支持,只能重建表或字段 | |
虚拟字段 | 虚拟字段是一个逻辑字段定义,其结果值通常是一个表达式,并在表中存储物理值,不占用空间,主要用于简化查询逻辑。比如有一个商品销售表有单价和数量两个字段,那可以建一个虚拟字段金额,其表达式=单价*数量 | 不支持 | 11g支持,例: |
表字段数限制 | INNODB 最大1000个字段 | 最大1000个字段 |