mysql数据类型总结

原创 2015年07月06日 17:03:44
数据类型优化
1、尽量使用能正常存储数据的最小数据类型(更快,占用更少的磁盘、内存和cpu)
2、尽量使用简单类型。(如整型比字符操作代价低)
3、尽量避免使用NULL(可以通过加默认值设置not null)

数据类型:支持别名,如integer,bool,numeric
1、时间
DATETIME和TIMESTAMP都精确到秒。通常应该尽量使用timestamp。
datetime
能保存大范围的值,从1001年到9999年把日期和时间封装到格式YYYYMMDDHHMMSS的整数中,与时区无关。使用8个字节的存储空间。
timestamp
存储秒数,只用4个字节,范围比datetime小:只能表示从1970到2038年。日期的显示依赖于时区。
默认为not null,如果插入时没有指定值,则默认值为当前时间。

2、整型
tinyint(8位),smallint(16位),mediumint(24位),int(32位),bigint(64位)
整型有可选的unsigned属性,表示正数
整数计算一般使用64位的bigint
可以为整数指定宽度(只是为用来规定mysql的交互工具显示字符的个数,不会限制值的合法范围

3、实数
精确类型:float,double(不适合用于货币的计算)
不精确类型:decimal,decimal只是一种存储格式,在计算中decimal会转换成double类型
可以指定精度,指定小数点前后所允许的最大位数
建议只使用数据类型,不要指定精度
4、字符串类型
char 
当存储为char类型时,mysql会删除所有的末尾空格(检索时),char值会根据需要采用空格进行填充以方便比较。
适合存储很短的字符串或者所有值接近同样的长度,经常变更的数据也更适合用char存储
varchar
仅使用必要的空间,但有一种情况例外,即若建表时使用row_format=fixed,则每一行都使用定长存储
需要1或2个额外字节记录字符串长度(若列最大长度小于等于255,只需要一个字节,依次类推)
适用情况:
  • 字符串列最大长度比平均长度大很多
  • 列更新少,不存在碎片问题
  • 使用了像utf-8这样复杂的字符集,每个字符都使用不同的字节数来存储
binary和varbinary存储二进制字符串(字节码),填充binary使用'\0'填充,检索时也会去掉填充值

5、BLOB和TEXT类型
二进制方式存储:tinyblob,smallblob(blob的同义词),mediumblob,longblob
字符方式存储:tinytext,smalltext(text的同义词),mediumtext,longtext

6、使用枚举(ENUM)代替字符串类型
存储时非常紧凑,会根据列表值的数量压缩到一个或两个字节中
create table enum_test(
     e enum('fish','apple','dog') not null
)
insert into enum_test(e) values('fish'),('dog'),('apple')
数据插入后存放在表中的数据实际上是整数而不是字符串。
7、位数据类型
bit
bit(1)定义一个包含单个位的字段,bit(2)存储两个位。bit列的最大长度是64位。
mysql把bit当作字符串类型,而不是数字类型。
最好避免使用这种类型,如果要用一个bit存储一个true/false值,替代方法是创建一个char(0),可以保存空值NULL或者长度为0的字符串。
set
保存很多true/false值的集合
例如
create table acl(
     perms set('can_read','can_write','can_delete') not null
)
insert into acl(perms) values('can_read,can_delete');
优点:有效利用存储空间,可以使用find_in_set()等函数
缺点:改变列定义的代价太高:需要alter table,对大表来说非常昂贵。而且无法在set列上通过索引查找

参考:《高性能Mysql》


版权声明:本文为博主原创文章,未经博主允许不得转载。

MySQL数据类型总结

理解MySQL数据类型  各行分别代表:  a.数据类型  b.描述      c.字节      d.推荐使用  SMALLINT  整数,从-32000到 +32000范围 ...
  • fjseryi
  • fjseryi
  • 2013年10月09日 16:53
  • 730

mysql数据类型总结

MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE P...
  • minwang593
  • minwang593
  • 2013年11月28日 10:06
  • 327

MySQL常见数据类型详解

数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则。 在MySQL中有如下几种数据类型:数值类型MySQL的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016年08月18日 21:45
  • 1052

mysql数据类型总结表

1、整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字...
  • blinking_star
  • blinking_star
  • 2017年05月24日 10:17
  • 98

mysql数据类型分析总结

MySQL数据类型 数值值 数值是诸如48或193.62这样的值。MySQL支持说明为整数(无小数部分)或浮点数 (有小数部分)的值。整数可按十进制形式或十六进制形式表示。 ...
  • djd1234567
  • djd1234567
  • 2015年05月04日 19:31
  • 1156

SQL及Oracle和MySQL的数据类型详解

SQL(Structured Query Language) 又称结构化查询语言,是一种在关系型数据库中定义和查询及操纵数据的标准语言,是用户和数据库之间进行交流的接口,正在像Oracle、MySQL...
  • luoweifu
  • luoweifu
  • 2013年04月20日 13:43
  • 6055

Oracle与MySQL数据类型对照表

MySQL Data Type                                                                Oracle Data Type ...
  • kingston001
  • kingston001
  • 2012年08月02日 16:01
  • 688

MySQL数据类型的使用总结

MySQL数据类型的使用
  • meetwaityou
  • meetwaityou
  • 2015年04月22日 13:25
  • 229

MySQL数据类型的总结

最近在学习MySQL,对MySQL数据类型做了些查阅资料,以下对最近的查阅情况进行总结~ 字符串类型 char和varchar char(n) 是固定长度,最多255个字符;varch...
  • u014229215
  • u014229215
  • 2017年11月08日 09:49
  • 56

mysql基本数据类型详解

MySQL与SQLServer的数据类型大同小异。因此,可以忽略与SQLServer相同的地方,在SQLServer的基础上学习。 一、整型的显示宽度   MySQL数据类型与SQLSer...
  • libo222
  • libo222
  • 2016年05月26日 16:25
  • 4056
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql数据类型总结
举报原因:
原因补充:

(最多只允许输入30个字)