美文网首页
mysql数据类型

mysql数据类型

作者: hk_faith | 来源:发表于2018-08-30 16:30 被阅读0次

整形

int , smallint ,mediumint , int ,bigint

浮点型

Float ,double , decimal

  • decimal 可以存储比 bigint 还大的整数也可以存储精确的小数。
  • Float 和 double 支持标准的浮点进行近似计算,但是decimal 不行,可以把他理解成把decimal 当成字符串处理的。所以存储的数据大。如果对其进行位数限制的时候,会四舍五入的计算

字符串

Char ,varchar ,text ,blob,enum

  • Varchar 用于存储可变长字符串,比定长类型(char)要节省空间,但varchar要额外用 1 或则 2 个字节存储长度。列长度小于255的时候用1个否则使用2个 ,varchar当超出指定的长度的时候会截掉,后者报错(有的版本)
  • char 是定长的,会根据指定的长度来分配空间,会根据需要采用空格进行填充以方便比较,适合存储很短的字符串或以知道的字符串都接近一个长度。如:md5 加密或的密码 char(32) ,超出长度会截断。
  • 对于经常变更的数据char 比 varchar 更好,char不容易产生碎片,只分配真正需要的空间,更长的列会消耗更多的内存。
  • 尽量避免使用blob 和text 类型 ,查询会使用临时表,导致性能的严重的开销。当进行大量的删除操作的时候,会在数据表中留下大量的空洞,建议定期使用 OPTIMIZE TABLE 功能对这类表进行碎片整理。
  • Enum 在数据库的内部是按 整形存的,所以不用整形来作为枚举的元素,,如果进行排序也会根据内部的整形进行的排序。

日期时间类型

Timestamp ,datetime
注意:尽量使用timestamp ,要比datetime空间效率高。如果存微秒用bigin
数据类型属性
Unsigned , zerofill , null ,not null , default , primary key , auto_increment
关系: 如果选择了zerofill 一定是 unsigned , 选择了unsigned 可以不选择 zerofill ,

问题

  • int(3) 和 int(11) 的区别 :int 无符号时,他的最大存储数值已经定了,只有在 zerofill的时候,差别会在前面补0

相关文章

网友评论

      本文标题:mysql数据类型

      本文链接:https://www.haomeiwen.com/subject/wacrwftx.html