mysql与oracle 表字段定义比较

来源:互联网 发布:万网域名转出 编辑:程序博客网 时间:2024/04/27 21:28

在oracle和mysql中定义表时,有时会遇到字段类型选择上的差异,今天就区分一下这些差异。

varchar     mysql的长度是0到65535,mysql中定义长度默认按字符长度计算,如果是GBK编码的话 汉字将占用2个字节,如果超过了65535,类型将会转换成                                 mediumtext

              例:oracle中定义:varchar2(10), name字段能存放:10个字符或3个汉字,注意:如果oracle安装时 utf-8的话:3个字节是一个汉字,如果是gbk的                                 话两个字节一个汉字   utf-8下  1汉字=3字节  ghk下 1汉字=2字节

                  mysql中定义:varchar(10),name字段能存放:10文化字符或10个汉字

number  mysql中的整数有:tinyint(-128,-127),smallint(-32768,32767),mediumint(-8388608,8388607),int(-2^31,2^31-1),bigint(-2^63,2^63-1)

              oracle中为number:number(3,0) , number(5,0),number(7,0),number(10,0),number(20,0)

decimalnumeric  数值类型

float         float(D,M)  oracle可以用number代替

double      双精度浮点型   double(D,M)  oracle 10g增加binary_double类

bit             位类型   bit(1到64)   oracle中没有此类型

datetime    日期类型   oracle中 date类型,7字节类型存储,表示日期和时间,  例:-4712-01-01 00:00:00 至 9999-12-31 23:59:59 ,mysql中 date,字节                   存储,只存储日期,没有时间 1000-01-01到9999-12-31,time,3字节存储,只存储时间,没有日期,datetime,占8字节存储,可以表示 日期                     和时间,timestamp,占4字节存储,可以表示日期和时间,1970-01-01 00:00:00到2038-01-19 03:14:07

timestamp  高精度时间最多可以支持6位小数秒,oracle中占用空间7-11个字节、

year           年份, 1字节存储,只存储年份,范围1901到2155   oracle中没有些类型

char           定长字符串 范围0到255, oracle中 范围1到2000

unsigned    用于数值类型  oracle中不支持

clob            tinytext最大支持255个字节,text最大支持65535个字节,mediumtext最大支持4GB字节,oracle中支持,10G以前版本支持4GB个字节,

                   10g后支持4GB个数据块,每个数据块大小为2kb-32kb 

blob           tinyblob最大支持255个字节,blob最大支持65535个字节,mediumblob最大支持16MB个字节,longblob最大支持4GB字节,oracle中和clob                     范围一样大.

binary         binary范围0-255,定长,varbinary范围0-65535,变长,oracle 中 raw范围 1-2000

enum          枚举类型,最多65535个元素,oracle 不支持

set             集合类型,最多64个元素 ,oracle 不支持

nationalchar     国际化字符集类型  ,oracle 中支持 nchar范围1-2000, nvarchar范围1-4000,nclob

bfile            外部文件指针类型   mysql 不支持,oracle 支持 文件大小最大4GB,文件名称最长255字符

自定义数据类型       mysql不支持   ,oracle支持自定义数据类型

xml类型          mysql不支持,oracle支持xml类型

自增类型         mysql支持,oracle不支持

字段默认表达式        mysql不支持函数和表达式,oracle支持函数和表达式

字段顺序修改功能,mysql中支持, alter table  表名  modify  column  id  varchar(20) after name; oracle不支持这种修改。

虚拟字段        mysql不支持,oracle 11g支持  例 : create table 表名 (  id number,   quantity number, price  number ,  amout  generated always as 

                                                                                  (quantity * price ) virtual );

表字段数限制       mysql 中innodb最大1000个字段 ,所有字段总定义彻底不能超过65535字节,让你有固定长度字段的总彻底不超过半个数据块大小                               (数据块大小一般为16k),oracle中最大 1000个字段 




VARCHAR[0-65535]

0 0
原创粉丝点击