MySQL 和ORACLE的数据类型及长度

MySQL 数据类型

数值类型

MySQL 支持所有标准 SQL 数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。

作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度
浮点数值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度
浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型大小
( bytes)
范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP4

1970-01-01 00:00:00/2038

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS混合日期和时间值,时间戳

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

mysql 4.0版本以下,varchar(50), 指的是50字节,如果存放utf8汉字只能存放16个;
mysql 5.0版本以上,varchar(50), 指的是50字符,无论存放数字、字母、汉字都可以存放50个

CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

ORACLE的数据类型

常用的数据库字段类型如下:

字段类型                 中文说明                         限制条件                                 其它说明

CHAR                 固定长度字符串             最大长度2000 bytes

VARCHAR2       可变长度的字符串(英文字符)     最大长度4000 bytes    可做索引的最大长度749

VARCHAR2(100 char)   可变长度的字符串(任意字符)   最大长度4000 bytes   可以存100个汉字

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)                精度更高

数据类型 参数 描述

char(n) n=1 to 2000字节 定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)

OracleTeradata备注
char(n)char(n)定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)
varchar2(n)varchar(n)可变长的字符串,具体定义时指明最大长度n
number(m)Decimal(m,0)可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
number(m,n)Decimal(m,n)可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
dateTimestamp(6)从公元前4712年1月1日到公元4712年12月31日的所有合法日期,
CLOB即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。
  • varchar2(n)
    可变长的字符串,具体定义时指明最大长度n,
    这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。
    如果数据长度没有达到最大值n,Oracle 8i会根据数据大小自动调节字段长度,
    如果你的数据前后有空格,Oracle 8i会自动将其删去。VARCHAR2是最常用的数据类型。
    可做索引的最大长度3209。

  • number(m) / number(m,n)
    可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
    如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。
    如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。
    如:number(3,0),输入575.316,真正保存的数据是575。

  • date
    从公元前4712年1月1日到公元4712年12月31日的所有合法日期,
    Oracle 8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。
    缺省格式为DD-MON-YY,如07-11月-00 表示2000年11月7日。

  • CLOB
    即字符型大型对象(Character Large Object),则与字符集相关,适于存贮文本型的数据(如历史档案、大部头著作等)。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值