好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

mysql与oracle表字段定义比较

mysql与oracle 表字段定义比较 说明 mysql oracle VARCHAR 变长字符串 VARCHAR[0-65535] 定义长度默认按字符长度计算,如果是 GBK 编码的汉字将占用 2 个字节 VARCHAR2[1-4000] VARCHAR 是 VARCHAR2 的同义词 定义默认按字节长度计算 TINYINT SMALLINT MEDIU

mysql与oracle 表字段定义比较

说明

mysql

oracle

VARCHAR

变长字符串

VARCHAR[0-65535]

定义长度默认按字符长度计算,如果是 GBK 编码的汉字将占用 2 个字节

VARCHAR2[1-4000]
VARCHAR 是 VARCHAR2 的同义词

定义默认按字节长度计算

TINYINT

SMALLINT

MEDIUMINT

INT
BIGINT

整数

TINYINT(-128-127)

SMALLINT(-32768-32767)

MEDIUMINT(-8388608-8388607)

INT(-2147483648-2147483647)
BIGINT(-9223372036854775808-9223372036854775807)

无专用类型,

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
NUMERIC

数值类型

DECIMAL[1-65[,0-30]]
NUMERIC 是 DECIMAL 的同义词

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]
TIME , 3 字节存储,只存储时间,没有日期,支持范围是 [-838:59:59] 至 [838:59:59]
DATETIME ,占 8 字节存储,可表示日期和时间,支持范围是 [1000-01-01 0] 至 [9999-12-31 23:59:59]
TIMESTAMP ,占 4 字节存储,可表示日期和时间,范围是 [1970-01-01 0] 至 [2038-01-19 03:14:07]

DATE 类型
7 字节存储,可表示日期和时间,支持范围是 [-4712-01-01 0] 至 [9999-12-31 23:59:59]

TIMESTAMP

高精度日期

5.6.4 以前不支持小数秒精度
5.6.4 开始 TIME,DATETIME,TIMESTAMP 支持,最多可以 6 位小数秒,也就是微秒级别

TIMESTAMP[0-9]
占用空间 7-11 个字节,当小数秒精度为 0 时与 DATE 类型相同,小数秒最高精度可达 9 位,也就是纳精度

YEAR

年份

YEAR , 1 字节存储,只存储年份,支持范围是 [1901] 至 [2155]

无对应类型,可以用 NUMBER(3,0) 代替

CHAR

定长字符串

CHAR[0-255] ,定义长度默认按字符长度计算,最大保存 255 字符

CHAR[1-2000]

定义默认按字节长度计算

UNSIGNED

无符号说明

支持,用于数值类型

不支持

CLOB

大字符串,一般用于存储文本文件或超大描述及备注类信息

TINYTEXT 最大支持 255 个字节
TEXT 最大支持 65535 个字节
MEDIUMTEXT 最大支持 16MB 个字节
LONGTEXT 最大支持 4GB 字节

字段不支持默认值

支持 (CLOB)
oracle10g 以前最大支持 4GB 个字节

oracle10g 开始最大支持 4GB 个数据块,数据块大小为 2KB-32KB

oracle 还有一个 LONG 类型,是早期的存储大字符串类型,最大支持 2GB 字节 , 现已不推荐使用

BLOB

大二进制对象,一般用于存储文件或图片数据

TINYBLOB 最大支持 255 个字节
BLOB 最大支持 65535 个字节
MEDIUMBLOB 最大支持 16MB 个字节

LONGBLOB 最大支持 4GB 字节

字段不支持默认值

支持 (BLOB)

oracle10g 以前最大支持 4GB 个字节

oracle10g 开始最大支持 4G 个数据块,数据块大小为 2KB-32KB

oracle 还有一个 LONG RAW 类型,是早期的存储二进制类型,最大支持 2GB 字节 , 现已不推荐使用

BINARY

二进制信息

BINARY(0-255) ,定长
VARBINARY(0-65535) ,变长

RAW(1-2000)

ENUM

枚举类型

ENUM(v1,v2,v3,...), 最多 65535 个元素

不支持

SET

集合类型

SET(v1,v2,v3,...) ,最多 64 个元素

不支持

NATIONAL CHAR

国际化字符集类型,较少使用

无, MYSQL 可以对每个字段指定字符编码

支持
NCHAR(1-2000)
NVARCHAR(1-4000)
NCLOB

BFILE

外部文件指针类型

不支持

支持
文件大小最大 4GB
文件名称最长 255 字符

自定义数据类型

不支持

支持

XML 类型

不支持

支持

自增类型

自动增长类型

支持
使用简单

不支持
一般使用 SEQUENCE 解决,用法与自增类型差别较大,使用较复杂,但能实现非常灵活的应用,包括字符自增主键、全局主键等等

字段默认值表达式

不支持函数和表达式
TEXT 和 BLOB 字段类型不支持默认值

支持函数和表达式

字段顺序修改

支持,例如,把 emp 表的 id 字段顺序放在 name 字段后面:
alter table emp modify column id varchar(20) after name;

不支持,只能重建表或字段

虚拟字段

虚拟字段是一个逻辑字段定义,其结果值通常是一个表达式,并在表中存储物理值,不占用空间,主要用于简化查询逻辑。比如有一个商品销售表有单价和数量两个字段,那可以建一个虚拟字段金额,其表达式 = 单价 * 数量

不支持

11g 支持,例:
create table sales
(
id number,
quantity number,
price number,
amount GENERATED always as (quantity*price) virtual
);

表字段数限制

INNODB 最大 1000 个字段
所有字段总定义长度不能超过 65535 字节
所有固定长度字段的总长度不超过半个数据块大小 ( 数据块大小一般为 16K)

最大 1000 个字段

我的新浪微博: http://weibo.com/yzsind

查看更多关于mysql与oracle表字段定义比较的详细内容...

  阅读:38次