1.整数

TINYINT: 8 bit 存储空间

SMALLINT: 16 bit 存储空间

MEDIUMINT: 24 bit 存储空间

INT: 32 bit 存储空间

BIGINT: 64 bit 存储空间

分为

SIGNEN: 有符整数,可存储正数和负数,如 TINYINT SIGNED 表示的范围是 -127 ~ 128

UNSIGNED: 无符整数,只能存储正数,但是表示的值是有符整数的两倍, 如 TINYINT UNSIGNED 表示的范围是 0 ~ 255

有符整数和无符整数只有表示的值大小上的区别,存储空间和效率上都是一样的

2.实数

DECIMAL: 可表示比 BIGINT 还大的正数,保存时可以指定整数长度和小数位数,如 DECIMAL(18, 9) 表示总长18位,小数点后9位,一共占用9 Byte,小数点前4 Byte,小数点1 Byte, 小数点后4 Byte, 一般用于存储精确数据,如银行账目

DOUBLE: 32 bit

FLOAT: 64 bit

DOUBLE和FLOAT比起DECIMAL,占用的存储更少,但是精度没有DECIMAL高

3.字符串

3.1 CHAR和VARCHAR

CHAR:

定长字符串,最大长度为255,mysql会分配固定的存储空间来存储CHAR,一般来讲用在需要经常执行长度经变化的UPDATE,但最大长度和平均长度相近的列上

CHAR在获取值时,会将末尾空格删除,但是在比较值时,末尾的空格则会保存,效果参见下图

VARCHAR:

变长字符串,最大长度为65535,mysql会分配字符串实际长度的空间来存储VARCHAR,一般来讲用在不需要经常执行列值长度变化的UPDATE,但是最大长度又远大于平均长度的列上,因为当列值的长度变化时(例如某列从"Jack" => "I want to gank"),需要重新分配需要的存储空间,会造成额外的性能开销.

另外,VARCHAR会比原长度额外占用1~2个字节,用来表示字符串的长度,当字符串长度小于255时占用1 Byte, 否则占用 2 Byte

查询时,CHAR去除末尾空格

WHERE字句比较字符串时,CHAR保留末尾空格

关于二者的效率:

  • SELECT时,CHAR的效率会高于VARCHAR的效率,因为在查找时CHAR是定长的,查找数据可以很快的计算出数据的位置,如CHAR(10),第五个数据的地址就是5*10这样,而VARCHAR因为定长,所以计算数据地址需要耗费额外的时间
  • UPDATE时,CHAR的效率会高于VARCHAR的效率,因为VARCHAR是不定长的,当数据长度改变时,需要重新分配存储空间

3.2 BLOB和TEXT

BLOB和TEXT的唯一区别是BLOB保存二进制类型而且没有字符集好排序规则,而TEXT保存字符文本,且有字符集和排序规则

它们的排序规则按照 max_short_length 规定长度的前若干个字符进行排序

4.日期和时间类型

DATETIME: 将日期保存为YYYYMMDDHHMMSS格式,范围从1001 ~ 9999年,占用空间 8 Byte

TIMESTAMP: 将日期保存为Unix时间戳,范围从1970 ~ 2038年, 占用空间 4Byte,并且和时区相关,它的特性是当插入没有定义TIMESTAMP的列时,MySQL会自动将时间戳保存为当前时间,所以一般可用于记录最后登录时间等.

5.位集数据类型

BIT: 最大 64 bit,一般用于保存一个true/false值,如BIT(1),占用 1 bit,远小于使用字符表示

SET: 用于保存多个true/false值,可用于权限管理,效果见下图

6.枚举

ENUM: 类似于SET,但是只能插入1个值,一般可用来表示性别等唯一且范围固定的属性(男,女..)

MySQL的数据类型(转)的更多相关文章

  1. MySQL数据库3 - MySQL常用数据类型

    一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的       ---> 数 ...

  2. Mysql常用数据类型

    Mysql常用数据类型 数字: 字符串: 时间:

  3. MySQL日期数据类型、时间类型使用总结

    MySQL日期数据类型.时间类型使用总结 MySQL日期数据类型.MySQL时间类型使用总结,需要的朋友可以参考下.   MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型    ...

  4. MySQL日期数据类型、MySQL时间类型使用总结

    MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ --- ...

  5. MySQL数据库数据类型之集合类型SET测试总结

    MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...

  6. mysql 的数据类型

    mysql 的数据类型(描述的是字段)三大类:一.整型:1.tinyint(M),其中M是显示宽度,需要配合zerofill,就是前面0填充,存储单位为1个字节(8位),无符文是最大能存储范围0000 ...

  7. mysql之数据类型

    一.概述:  所谓建表,就是声明列的过程: 数据是以文件的形式放在硬盘中(也有放在内存里的) 列:不同的列类型占的空间不一样 选列的原则:够用又不浪费: 二.mysql的数据类型: 整形:Tinyin ...

  8. MySQL/MariaDB数据类型

    1.为什么要定义MySQL数据类型 定义MySQL数据类型其实就是为了对数据进行分类,实现对不同的分类进行不同的处理 1.使系统能够根据数据类型来操作数据. 2.预防数据运算时出错.例如,通过强大的数 ...

  9. mysql的数据类型和字段属性

    本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长度 字段属性 空\不为空值:NULL.NOT NULL 主键:primary ...

随机推荐

  1. 使用hibernate tools插件生成POJO

    很多时候我们已经设计好了数据库,需要使用hibernate来做数据持久化,因此需要根据数据库中的表结构生成相应的POJO. 本例使用hibernatetools来自动创建pojo. 测试环境:ecli ...

  2. Hibernate之QBC检索和本地SQL检索

    QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 本地SQL查询来完善HQL ...

  3. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调

    上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServ ...

  4. js中的new关键字都干了些什么?

    new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在javascript中,我们将这类方式成为Pseudoclassic ...

  5. 基于Ubuntu 15.04 LTS编译Android5.1.0源代码 (转)

    原文链接:http://blog.csdn.net/yuxiangyunei/article/details/45365235   环境: ubuntu:ubuntu-15.04-desktop-am ...

  6. 【hdu3065】病毒侵袭持续中

    题意: 求目标串中每个模式串出现几次 目标串长度<=2000000 模式串<=1000个 模式串长度<=50 题解: 这不就是AC自动机的模板题吗! 求fail树中模式串的子树中有几 ...

  7. Spark生态

  8. 28个你必须知道的HTML5的新特性,技巧以及技术

    原文地址:http://adamlu.com/?p=584#header 总结一下: 1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式 ...

  9. eclipse代码左虚线对齐设置

    前言 : 前阵子看到同事的eclipse左边有虚线对齐.有点好奇~刚开始以为是装了神马插件, 于是百度了下, 貌似没有找着. 一怒之下,逗比了半个小时,终于探索出来了~~ 设置如下 : 点击confi ...

  10. spring aop 的一个demo(未完,待完善)

    假设我们有这样的一个场景 : 对于一个类的众多方法,有些方法需要从缓存读取数据,有些则需要直接从数据库读取数据.怎样实现呢? 实现方案有多种.下面我说下常见的几种实现方案 : 1.直接采用spring ...