实习总结(十三)---Mysql、Sql2005中的数据类型详解及比较
用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