用Java语言真正开发一个功能较大、齐全、性能较好的系统,必不可少的会用到数据库,现在的数据库类型较多,因此对于开发者来说选择较多。但是这一些数据库各有特点,开发者要做一个比较和权衡。对于各种数据库的比较在这里就不再列出来了,主要是想总结一下自己比较常用的两种数据库的数据类型,并加以比较。
+===========================================================================+
一、Mysql数据类型
数据类型 | 描述 | 字节 | 推荐使用 |
SMALLINT | 整数,从-32000到 +32000范围 | 2 | 存储相对比较小的整数。 比如: 年纪,数量 |
INT | 整数,从-2000000000 到 +2000000000 范围 | 4 | 存储中等整数 例如: 距离 |
BIGINT | 不能用SMALLINT 或 INT描述的超大整数。 | 8 | 存储超大的整数 例如: 科学/数学数据 |
FLOAT | 单精度浮点型数据 | 4 | 存储小数数据 例如:测量,温度 |
DOUBLE | 双精度浮点型数据 | 8 | 需要双精度存储的小数数据 例如:科学数据 |
DECIMAL | 用户自定义精度的浮点型数据 | 变量;取决于精度与长度 | 以特别高的精度存储小数数据。 例如:货币数额,科学数据 |
CHAR | 固定长度的字符串 | 特定字符串长度(高达255字符) | 存储通常包含预定义字符串的变量 例如: 定期航线,国家或邮编 |
VARCHAR | 具有最大限制的可变长度的字符串 | 变量; 1 + 实际字符串长度(高达 255 字符) | 存储不同长度的字符串值(高达一个特定的最大限度). 例如:名字,密码,短文标签 |
TEXT | 没有最大长度限制的可变长度的字符串 | Variable; 2 +聽 actual string length | 存储大型文本数据 例如: 新闻故事,产品描述 |
BLOB | 二进制字符串 | 变量;2 + 实际字符串长度 | 存储二进制数据 例如:图片,附件,二进制文档 |
DATE | 以 yyyy-mm-dd格式的日期 | 3 | 存储日期 例如:生日,产品满期 |
TIME | 以 hh:mm:ss格式的时间 | 3 | 存储时间或时间间隔 例如:报警声,两时间之间的间隔,任务开始/结束时间 |
DATETIME | 以yyyy-mm-ddhh:mm:ss格式结合日期和时间 | 8 | 存储包含日期和时间的数据 例如:提醒的人,事件 |
TIMESTAMP | 以yyyy-mm-ddhh:mm:ss格式结合日期和时间 | 4 | 记录即时时间 例如:事件提醒器,“最后进入”的时间标记 |
YEAR | 以 yyyy格式的年份 | 1 | 存储年份 例如:毕业年,出生年 |
ENUM | 一组数据,用户可从中选择其中一个 | 1或 2个字节 | 存储字符属性,只能从中选择之一 例如:布尔量选择,如性别 |
SET | 一组数据,用户可从中选择其中0,1或更多。 | 从1到8字节;取决于设置的大小 | 存储字符属性,可从中选择多个字符的联合。 例如:多选项选择,比如业余爱好和兴趣。 |
二、Sql2005数据类型
数值类型
数据类型 | 描述 | 存储大小 |
Bit | 值为1,0,null的整数数据,不包含索引 | 1字节 |
tinyInt | 0-255整数数据 | 1字节 |
smallInt | -2的15次方到2的15次方的整数数据 | 4字节 |
int | -2的31次方到2的31次方的整数数据 | 4字节 |
bigint | 8字节的整数数据 | 8字节 |
Binary[n] | N字节的固定长度的二进制数据,n是介于1-8000之间的一个值。当一列的数据输入差别很小时,请使用binary | N+2字节 |
Varbinary[n] | N字节的可变长度的二进制数据,n是介于1-8000之间的一个值。当一列的数据输入差别很大时,请使用Varbinary | N+2,可以为0 |
Varbinary(max) | 2005新类型,最大 2g,变长 | N+2,可以为0 |
Decimal[p,[s]] | 固定精度和刻度的数字。精度(p)指被保存数字的总位数,刻度(s)指定数字的小数点后面的位数。 | 5-17字节 |
Numeric[p,[s]] | Decimal的同义词 |
|
Real | 4字节的浮点精度数字数据 | 4字节 |
Float[(n)] | -1.79e+308至-2.23e-308.0以及2.23e-308至1.79e+308 | 取决于n的值 |
Money | 货币数据。8字节,精确到货币单位的万分之一。 | 8字节 |
Smallmoney | 货币数据。介于-213748.3648到213748.3647 | 4字节 |
|
|
|
字符类型
数据类型 | 描述 | 存储大小 |
Char[(n)] | 固定长度,非unicode字符数据,长度为n个字节。N的取值范围为1-8000 | n字节 |
Varchar[(n)] | 可变长度,非unicode字符数据。1-8000 | n字节 |
Varchar[(max)] | 可变长度,非Unicode字符数据。Max,指最大存储大小为2的31次方-1个字节。 | 输入的实际字节数。 |
Nchar[(n)] | N个字符固定长度unicode编码。N值必须指定在1-4000之间 | 2乘n字节+2字节 |
Nvarchar[(n)] | 可变长度unicode字符数据。N值在1-4000之间 | 2乘n字节+2字节 |
Nvarchar[(max)]] | 可变长度unicode字符数据。max值在2的31次方-1个字节 | 2乘n字节+2字节 |
Float[(n)] | -1.79e+308至-2.23e-308.0以及2.23e-308至1.79e+308 | 取决于n的值 |
Money | 货币数据。8字节,精确到货币单位的万分之一。 | 8字节 |
Smallmoney | 货币数据。介于-213748.3648到213748.3647 | 4字节 |
|
|
|
文本和图像类型
数据类型 | 描述 | 存储大小 |
text | 服务器代码页中长度可变的非Unicode数据,最大长度为2的31次方-1个字符。双字符和单字符都占1。 | 2的31次方-1 |
ntext | 可变长度, unicode字符数据。2的30次方-1 | 2的30次方-1 |
image | Unicode, 2的31次方-1 | 2的31次方-1 |
Nchar[(n)] | N个字符固定长度unicode编码。N值必须指定在1-4000之间 | 2乘n字节+2字节 |
|
|
|
日期和时间类型
数据类型 | 描述 | 存储大小 |
smalldatetime | 1900-1-1到2079-6-6,精度为分钟 | 两个2字节的整数 |
dateteime | 1753-1-1到9999-12-31,精度为1/300秒 | 两个4字节 |
timestamp | 公开数据库中自动生成的一个唯一一个二进制的数据类型。通常用作给表行加班本戳的机制。一个表只能由一个该类型字段。 | 8字节 |
|
|
|
其他特出数据类型
|
数据类型 | 描述 | 存储大小 |
sysname | 由特殊系统提供的,sqlserver用户定义的数据类型,sqlserver将sysname类型定义为nvarchar(128),可以存储128个unicode字符。 | 256字节 |
xml | 2005新增类型,存储xml文件 | Xml格式<2gb |
Uniqueidentifie | 全局唯一标识符(guid)。可以通过newid()函数产生。 | 16字节 |
Sql_variable | 用于存储sqlserver2005支持的各种数据类型。除text,ntext,image,timestamp,sql_variant | 最大长度可以使8016字节 |
Table | 类似于使用临时表,此类型包括列表和数据类型,可以用于定义本地变量或用于用户定义的函数的返回值。 | 随着表定义的变化而变化。 |
三、数据类型比较
可以看到,Sql2005数据库的数据类型比Mysql数据库的数据类型更加丰富,因此设计数据库的时候更加灵活。但是Mysql比较小,使用方便,挡在开发一个系统时,如果对数据类型要求不是很严格,并且数据库不大的时候,使用Mysql还是较为方便的。这两种数据库是我经常使用的,像Oracle这样的大型数据库虽然有着更加强大功能,但是对于一般的小项目来说是不必要的。
四、下载地址
Mysql下载链接:
http://xiazai.xiazaiba.com/Soft/M/MySQL_5.5.20_win32_XiaZaiBa.zip
Sql2005下载链接:
http://xiazai.zol.com.cn/down.php?softid=274721&subcatid=550&site=10&server=10c&rand=215956
Oraclette下载链接页面(这个页面给出了较多的下载版本,可以参考):
http://www.blogjava.net/wangdetian168/archive/2011/03/01/oracle10g.html