MySQL中定义数据字段的类型对你数据库的优化是非常重要的;

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型;

整数类型

Int(N)中N的涵义

定义了 init(5)zerofill 当和int(10)join时显示宽度对不上有可能出现临时表

N表示显示宽度为N,但仍占4字节存储,存储范围不变;

>create table int_test(a int zerofill NOT NULL auto_increment, PRIMARY KEY(a));>createtable int_test_4(a int(4) zerofill NOT NULL auto_increment, PRIMARY KEY(a));>select * fromint_test_4;+------------+

|a |

+------------+

| 0001 |

| 0002 |

|2147483648 |

+------------+

>select * fromint_test;+------------+

|a |

+------------+

|0000000001 |

|0000000002 |

|2147483648 |

+------------+

关于浮点数类型:1)能不用到尽量不要用,2)浮点数不能用在等号比较的场景

建议TINYINT替换enum

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

MySQL5.6不支持year(2)

日期类型注意事项

Timestamp,datatime从MySQL5.6.5支持自动更新为当前的时间:current timestamp

日期转换:cast(datatime_col as DATE)

>select now()+0;

5.6的us支持

>select now(4),MICROSECOND(now(4));

+--------------------------+---------------------+

|now(4)                   |MICROSECOND(now(4)) |

+--------------------------+---------------------+

|2016-04-16 08:50:01.6589 |             658900 |

+--------------------------+---------------------+

timestamp5.6.6之后支持 null

建议datetime 来替换timestamp

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型;

字符型

varchar与char的区别

char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是: char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)varchar存储可变长字符串,小于255字节时需要1个额外字节(大于255需要2个额外字节)存储长度,最大长度为65532字节(所有列总和);

char存储定长,读取时会截断末尾空格,长度最大为255字符;

1)CHAR(M)的涵义:

实际分配的长度是:M*字符编码长度=存储空间

例如:存储了255个字符 中文汉字是占用3个字节

255*3 = 765  一共是765字节

2)varchar(N)中N的涵义

最大存储N个字符;varchar(5)和varchar(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)

例如:

varchar(200)utf8下面占用多少字节

200*3+ 2

varchar(64)  utf8

64*3=192<255

192+1=193

建议:

通常使用MySQL是innodb引擎 innodb引擎本来就是变长存储

行存储着:

trx_id, row-id,rollback, filed_pointer, null-flag, filed1,....

innodb存储引擎推荐varchar

char更快是针对MyISAM这种堆表 char 定长分配会更快一点

计算例子

举两个例说明一下实际长度的计算。

a)若一个表只有一个varchar类型,如定义为

createtable t4(c varchar(N)) charset=gbk;

则此处N的最大值为(65535-1-2)/2= 32766。

减1的原因是实际行存储从第二个字节开始’;

减2的原因是varchar头部的2个字节表示长度;

除2的原因是字符编码是gbk。

b)若一个表定义为

createtable t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;

则此处N的最大值为 (65535-1-2-4-30*3)/3=21812

减1和减2与上例相同;

减4的原因是int类型的c占4个字节;

减30*3的原因是char(30)占用90个字节,编码是utf8。

mysql time类型数据_MySQL数据类型相关推荐

  1. mysql的double类型数据_mysql数据类型double和decimal区别详解

    实数是带有小数部分的数字.然而,它们不只是为了存储小数部分,也可以使用 DEClMAL 存储比 BIGINT还大的整数. MySQL 既支持精确类型,也支持不精确类型. FLOAT 和  DOUBLE ...

  2. mysql 体重 类型 身高_MySQL 数据类型

    介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 mysql常用数据类型概括: #1. 数字: 整型:tinyint int bigint 小 ...

  3. mysql字段类型原理_mysql数据类型和字段属性原理与用法详解

    本文实例讲述了mysql数据类型和字段属性.分享给大家供大家参考,具体如下: 本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长 ...

  4. mysql time类型解析_mysql时间数据类型解析

    1.MySQL的五种日期和时间类型 MySQl中有多种表示日期和时间的数据类型.其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP表示日期和实践.它们的对比 ...

  5. mysql 字符串类型 分区_MySQL分区类型

    博文大纲: 1.RANGE分区 2.LIST分区 3.HASH分区 4.key分区 5.MySQL分表和分区的区别 6.附加:如何实现将分区放在不同的目录下进行存储 MySQL分区类型如下: RANF ...

  6. mysql索引类型 优劣_Mysql索引的类型和优缺点详解

    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 注: [1]索引不是万能的!索引可以加快数据检索操作,但会使数据修改操作变慢.每修改 ...

  7. mysql 索引类型案例_Mysql索引类型与基本用法实例分析

    本文实例讲述了Mysql索引类型与基本用法.分享给大家供大家参考,具体如下: 索引 MySQL目前主要有以下几种索引类型: 普通索引 唯一索引 主键索引 组合索引 全文索引 - 普通索引 是最基本的索 ...

  8. mysql frm恢复数据_MYSQL使用.frm恢复数据表结构的实现方法

    我们都知道当我们建立数据表(innodb或myisam)时,会生成相应的文件(如:MYD,MYI,frm) 在这里,我们探讨下使用frm文件恢复 innodb和myisam类型表的结构,不过由于他们存 ...

  9. sql判断数据库类型数据_SQL数据类型

    sql判断数据库类型数据 SQL | 资料类型 (SQL | Data Types) Just like other programming languages, facilities of defi ...

最新文章

  1. 如何从 Ubuntu 中彻底卸载 Google Chrome
  2. 关于libnmap 的一些应用
  3. ElasticSearch创建文档
  4. Linux bash总结(一) 基础部分(适合初学者学习和非初学者参考)
  5. 【今日CV 计算机视觉论文速览 第120期】Thu, 23 May 2019
  6. Python练习:整数加减和
  7. sap idoc生成文件传到别的服务器,IDOC 实例详解
  8. [OpenBMC] 快速上手OpenBMC的Redfish
  9. solidworks图纸模板添加_「solidworks工程图模板」solidworks怎么添加置工程图模板? - seo实验室...
  10. RGB565的计算颜色表
  11. c#写图像tif gdal_C#使用GDAL将tif图像转换为jpg、bmp、png和gif格式的图像
  12. 恶意软件清理助手V2.6.3 build 005 2007-07-05
  13. 自己封装特定的Windows系统镜像
  14. 学习andriod开发之 异步加载图片(二)--- 使用其他进度条
  15. 前端常见面试题 - JS篇
  16. 【论文翻译】SHINE 一个用于特定领域实体与异构信息网络链接的通用框架
  17. 音频算法工程师发展前景
  18. 一个mysql安装问题的解决
  19. Grafana 设置 Right Y
  20. PMP考试报名费用可以怎么支付?给你说明白

热门文章

  1. 小程序 / 当前开发者未绑定此AppID,请到小程序管理后台操作重试
  2. 小程序扫二维码功能及测试实现过程
  3. sklearn中TruncatedSVD降维的简单使用
  4. curl获取http返回的状态码
  5. 安卓学习日记——补间动画与帧动画
  6. mysql使用原则_mysql使用规范
  7. 你是王者荣耀里的哪类程序员?
  8. 微信公众号网页回调授权域名配置
  9. 无损音频wav音乐格式怎么转换成mp3格式 1
  10. 萌新卷妹带你从头复习JavaSE--认识Java