MySQL数据类型详解

来源:互联网 发布:2017最新seo 编辑:程序博客网 时间:2024/06/09 17:08
1,整数类型

tinyint: 8bit


smallint: 16bit


mediumint: 24bit


int: 32bit


bigint: 64bit


  它们可以存储从-2^(n-1)到2^(n-1)-1的数,n是位数。

  整数类型有可选的unsigned属性,表示正整数,这可以使整数的上限提高一倍。


2,实数类型

decimal

相对应浮点型可以存储更加大的数,精确的小数,同时需要消耗更大的存储空间。别名:dec,fixed,numeric

 decimal(M,D),M为精度,1~65(MySQL5.1及更高版本,早期版本为1~254)D为小数点右边的位数0~30,不能大于M。


float


double

别名:real


3,字符串类型
varchar 

不定长,更节省空间,MySQL5.0或更高版本,在检索和存储时会保留末尾的空格。

char  
定长,根据定义时的长度分配足够的空间。存储时会删除末尾的空格。
比较适合存储长度接近或很短的字符串,如:密码的MD5值。
  varchar虽然是边长存储的,但是内存一般会分配固定内存块来存储临时表等内部值,利用磁盘临时表进行排序时也一样,所以尽量分配真正需要的空间。

binary和varbinary
和var及varchar类型,但存储的是二进制的字符串

blob和text
都是为存储很大数据的字符串类型,分别使用二进制和字符方式存储。
blob家族:tinyblob,smallblob,blob,mediumblob,longblob分别于text家族对应
text家族:tinytext,smalltext,text,mediumtext,longtext
  与其他类型不同,MySQL把blob和text当做独立对象处理,当存储数据太大,innoDB会使用专门的外部区域来存储,此时每个值在行内需要一个1~4字节的
  值来指向外部的存储区域。

enum
枚举,只能存入预定的一些字符串,实际列值是整数,通过在.frm文件做整数和string映射,
  当使用varchar进行两张表的关联时,如果列值为一些比较固定的值,可以将varchar列改成enum,然后进行关联会更快,因为enum列实际上存储的是整数类型
  值,进行检索会更快(无需字符检验等额外开销)。


4,日期和时间类型
MySQL提供多种存储日期和时间的类型,如:year,date,datetime,timestamp。
datetime和timestamp类似,但是也有区别:
datetime使用8字节存储,与时区无关,范围更大从1001到9999年,精度为秒
timestamp使用4字节存储,与时区有关,范围小从1970到2038年,精度为秒
MySQL提供unix_timestamp把日期转换为unix时间戳,from_unixtime把时间戳转换为日期。

5,位数据类型(极少用)
bit
bit(M),M为位数
        set


0 0
原创粉丝点击