事情是这样的,作为一个小白,我刚学完java又来学数据库,发现两种的数据类型很相似但是又不完全一样。他们有什么区别呢?所以我今天就专门来搞一搞这个数据类型这一块。俗话说得好不怕不识货,就怕货比货,咱就来比一比这两种的数据类型。
首先,在java中我们知道数据类型有(byte,short ,int ,long ,double, float,char,boolean)这八大基本数据类型,另外还有其他的引用数据类型。而数据库中为了满足存储各种数据需求,同时又能够最大限度的节省存储空间,所以制定了更加精细的数据类型,这就好比比较会做生意的商人,会把自己的钱分成好几份,每一份有自己的专门用途,从而或得更大的利益,而java中的数据类型就没这么多讲究。学完数据库(本文主要是指mysql数据库)你会发现其实就是把java的基本数据类型划分的更加细致一些,我们来举几个例子说明一下:
一、java中的(byte,short ,int ,long ,double, float)用途都不用我多说了吧。
我们发现mysql中将整形分成了(TINYINT, SAMLLINT, MEDIUMINT, INT, BIGINT)五种,相比java中的(byte,short,int,long)要更加细致,mysql每个数据类型的取值范围不同,故分别可以表示不同的数值范围。在定义整型列时,可以指定可选的显示尺寸M(见上表),M是从1到255的值,它表示显示列中值的字符数,这样一来我们使用数据库时候就可以随意设置我们需要的数据类型以及它的大小了,这样会更加方便一些。
例如:INT(4) 意思是指定了一个具有4个字符显示宽度的INT列。如果定义了一个没有明确宽度的整数列,则会分配缺省的宽度,缺省值为每种类型的最长值的长度
对于每种浮点型,可指定一个最大的显示尺寸M和小数位数D,M的取值应该是0-30,但小于M-2。M和D对于DECIMAL是必须的。(可参照表2-7)
二、java中有char和string等
对应的mysql中有:
说明:
对于可变长的字符串类型,其长度取决于实际存放在列中的值的长度。此长度在上表中用L来表示。附加若干额外字节,用来记录字符串长度,也就是说总长度等于L+n(n=1、2、3、4、8)
CHAR和VARCHAR类型
CHAR类型和VARCHAR类型长度范围都是0~255之间的大小。他们之间的差别在于MySQL处理存储的方式:
CHAR把这个大小视为值的准确大小(用空格填补比较短的值)。
VARCHAR类型把它视为最大值并且只使用了存储字符串实际上需要的字节数(增加了一个额外的字节记录长度)。因而,较短的值当被插入一个语句为VARCHAR类型的字段时,将不会用空格填补(然而,较长的值仍然被截短 )。
总结:mysql中数据类型只有:
一、数值列类型
分为整型和浮点型
整型:
可以由十进制和十六进制表示
整数由数字序列组成,如:1,100。
由十六进制表示方法:0x且后面加1—9和 A—F 的任意数字或字母,并且0x中的X不 能大写。
浮点型:
浮点数由一个数字加一个小数点再加上一 个数字组成。两个数字序列不能同时为空。
二、字符串列类型
字符串:
由单引号或者双引号括起来的字符或者数字。
如:”abc”,‘abc10’
字符串中要用转义字符才能表示的特殊符号
日是存储如“2005 -1-1” 或者“12:00:00”这样的数值的值。在MySQL中日期是按”年-月-日”的顺序。
而java中引用数据类型千千万,所以没法与数据库一一对应比较。所以我感觉相对java来说还是mysql好学一点。这只是本人见解,有不当之处还请多多指正。