mysql数据类型

Posted _小溢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据类型相关的知识,希望对你有一定的参考价值。

1.mysql支持多种数据类型,大致可以分为四类:数值(int等等)、字符串类型(varchar、char)、日期/时间(date、time等等)和其他类型。

(1)二进制类型:

  bit[ (m) ]

  二进制位(101001),m表示二进制位的长度(1-64),默认m=1,则默认表示1个bit位,一个0或1。

(2)

  整数类型(一般用来存储年龄、等级、id、各种号码等):

  tinyint[ (m) ] [unsigned] [zerofill]

  tinyint最小的整数类型

  有符号存储数值范围为:-128 ~ 127

  无符号存储数值范围为:255

  特别的:MySQL中无布尔值,使用tinyint(1)构造

 

  int[ (m) ] [unsigned] [zerofill]

  整数

  有符号存储数值范围为:-2147483648 ~ 2147483647

  无符号存储数值范围为:4294967295

 

  bigint[ (m) ] [unsigned] [zerofill]

  大整数

  有符号存储数值范围为:-9223372036854775808 ~ 9223372036854775807

  无符号存储数值范围为:1867446744073709551615

 

(3)小数型:

  decimal [(m[, d])] [unsigned] [zerofill]

  准确的小数值,m是数字总个数(负号不算),d是小数点后个数。m最大值为65,d最大值为30。

  特别的:对于精确数值计算时需要用此类型

  decimal能够存储精确值的原因在于其内部按照字符串存储

 

  FLOAT[(m[, d])] [unsigned] [zerofill]  

  单精度浮点数(非准确小数值),m是数字总个数,d是小数点后总个数

  特表的:数值越大,越不准确

 

  DOUBLE[(m[, d])] [unsigned] [zerofill]

  双精度浮点数(非准确性小数值),m是数字总个数,d是小数点后总个数

  特表的:数值越大,越不准确

 

(4)字符型

  char(m)

  char数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中m代表字符串的长度。

  PS:即使数据小于m长度,也会占用m长度,但是在查询时,查出的结果会自动删除尾部的空格。

  特定:定长、简单粗暴、浪费空间、存储速度快

 

  varchar(m)

  varchar数据类型用于变长的字符串,可以包含最多达65535个字符(理论上可以,但是实际上在超出21845长度后,mysql会自动帮您转换数据类型为文本类型)。

  其中m代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。

  PS:varchar类型存储数据的真实内容,例如:如果\'ab \',尾部的空格也会被存起来

  强调:varchar类型会在真实数据前加1-2Byte的前缀,该前缀用来表示真实数据的byte字节数(1-2Byte最大表示65535个数字,正好符合mysql对row的最大字节限制,即已经足够用)

  特点:变长、精准、节省空间、存储速度慢

  sql优化:创建表时,定长的类型往前方,变长的往后放

  PS:虽然varchar使用起来比较灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的百分之50。

  因此,用户在设计数据库时应当综合考虑各方面因素,以求达到最佳的平衡。

 

  text:

  text数据类型用于保存变长的大字符串,可以最多到65535字符

 

 

 (5)枚举类型(了解)与集合类型(了解)

枚举类型,存储的数据必须是规定的几个值

  (6)日期时间

 

  更详细的可参考菜鸟教程或mysql官网

以上是关于mysql数据类型的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库的数据类型

mysql 数据类型TIMESTAMP

mysql数据类型中blob和binary的区别?

MYSQL 的数据类型

MySQL数据类型

mysql基础数据类型118-124