MySQL的数据类型(转)
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的数据类型(转)的更多相关文章
- MySQL数据库3 - MySQL常用数据类型
一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的 ---> 数 ...
- Mysql常用数据类型
Mysql常用数据类型 数字: 字符串: 时间:
- MySQL日期数据类型、时间类型使用总结
MySQL日期数据类型.时间类型使用总结 MySQL日期数据类型.MySQL时间类型使用总结,需要的朋友可以参考下. MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 ...
- MySQL日期数据类型、MySQL时间类型使用总结
MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ --- ...
- MySQL数据库数据类型之集合类型SET测试总结
MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...
- mysql 的数据类型
mysql 的数据类型(描述的是字段)三大类:一.整型:1.tinyint(M),其中M是显示宽度,需要配合zerofill,就是前面0填充,存储单位为1个字节(8位),无符文是最大能存储范围0000 ...
- mysql之数据类型
一.概述: 所谓建表,就是声明列的过程: 数据是以文件的形式放在硬盘中(也有放在内存里的) 列:不同的列类型占的空间不一样 选列的原则:够用又不浪费: 二.mysql的数据类型: 整形:Tinyin ...
- MySQL/MariaDB数据类型
1.为什么要定义MySQL数据类型 定义MySQL数据类型其实就是为了对数据进行分类,实现对不同的分类进行不同的处理 1.使系统能够根据数据类型来操作数据. 2.预防数据运算时出错.例如,通过强大的数 ...
- mysql的数据类型和字段属性
本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长度 字段属性 空\不为空值:NULL.NOT NULL 主键:primary ...
随机推荐
- 【原创】batch-GD, SGD, Mini-batch-GD, Stochastic GD, Online-GD -- 大数据背景下的梯度训练算法
机器学习中梯度下降(Gradient Descent, GD)算法只需要计算损失函数的一阶导数,计算代价小,非常适合训练数据非常大的应用. 梯度下降法的物理意义很好理解,就是沿着当前点的梯度方向进行线 ...
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.5
Show that the inner product $$\bex \sef{x_1\vee \cdots \vee x_k,y_1\vee \cdots\vee y_k} \eex$$ is eq ...
- Xcode中Info.plist文件各个键的作用说明【搜藏】
Localiztion native development region --- CFBundleDevelopmentRegion 本地化相关,如果⽤户所在地没有相应的语言资源,则用这个key的v ...
- jvm 漫谈 笔记
1.Jvm到底是什么呢? Jvm其实就是模拟一台计算机,每种cpu都有自己的指令集,jvm自己设置一套指令集,这就是我满看的的字节码,然后jvm需要执行这些字节码,其实这些字节码最终直接对应到cpu的 ...
- javscript面试题(一)
你如何理解HTML结构的语意化? 1.去掉或样式丢失的时候能让页面呈现清晰的结构:2.屏幕阅读器(如果访客有视障)会完全根据你的标记来“读”你的网页:3.PDA.手机等设备可能无法像普通电脑的浏览器一 ...
- 跨平台的游戏客户端Socket封装,调整
原文链接:http://www.cnblogs.com/lancidie/archive/2013/04/13/3019359.html 头文件: #pragma once #ifdef WIN32 ...
- 题解西电OJ (Problem 1003 -最喜欢的数字)--动态规划
Description zyf最喜欢的数字是1!所以他经常会使用一些手段,把一些非1的数字变 成1,并为此得意不已.他会且仅会的两种手段是: 1.把某个数m除以某个质数p——当然p必须能整除这个数,即 ...
- 【noip2009】靶形数独
题解: 又是搜索- - 加状态压缩剪枝 二进制记下每行 每列 每个九宫格用过的数是谁 枚举的时候可以O(1)判断冲突 还有个很重要的剪枝 把可能使用数字最少的格子先搜索 代码: #include &l ...
- EM算法原理简析——图解
一. 扯淡 转眼间毕业快一年了,这期间混了两份工作,从游戏开发到算法.感觉自己还是喜欢算法,可能是大学混了几年算法吧!所以不想浪费基础... 我是个懒得写博客的人,混了几年coding,写的博客不超过 ...
- [读书笔记]了不起的node.js(三)
这周的nodejs学习内容为几个依赖包的使用,把书上的例子都敲了一遍.这篇就以例程为线索,复习一下一周的工作. 1.connect 这个例程主要是使用connect依赖包,connect提供一个中间件 ...