MySQL表数据存储大小说明

MySQL中规定,任何一条记录(数据表中每行数据)理论上的最大存储容量为 2^16 - 1 (Bytes) = 65535字节。

MySQL数据类型思维导图

MySQL数据类介绍

1.数值型

数值型数:都是数值,DBMS将数值型分为整数型和小数型。
(DBMS默认使用有符号数值型整数类型,SQL语句 ......数值型 unsigned...... 表示使用无符号整数类型。)

整数型

tinyint:使用1个字节进行存储数据,小整数;
smallint:使用2个字节进行存储数据
mediumint:使用3个字节进行存储
int/intege:标准整型,使用4个字节存储数据(常用数据类型)
bigint:使用8个字节存储数据,大整数。

小数型(浮点型)

float:使用4个字节进行存储数据
float表示沒有小数部分
float(M,D) M表示数据总长度,D表示小数部分长度,M-D表示整数部分长度
double:使用8个字节进行存储数据
double表示沒有小数部分
double(M,D) M表示数据总长度,D表示小数部分长度,M-D表示整数部分长度

小数型(定点型)

decimal:
double表示沒有小数部分
double(M,D) M表示数据总长度,D表示小数部分长度,M-D表示整数部分长度

2.时间日期类型

datetime:时间日期,格式是YYYY-mm-dd HH:mm:ss, 表示范围从1000到9999年,有0值:0000-00-00 00:00:00
date:日期,就是datatime中data部分
time:时间,指定某个时间,可以是负数
year:格式YYYY表示某年,可以使用2位数,也可以使用4位数
timestamp:时间戳,只要所在记录被更新,时间戳会被更新成现在的时间。

3.字符串类型

定长字符串
char(L):L代表length,可以存储的长度,单位为字符,最大长度255。
char(4):在UTF8环境下,需要4 * 3 = 12字节

变长字符串:根据具体数据大小分配存储空间
varchar(L):L代表length,可以存储的长度,理论长度是65536个字符

文本字符串
文本字符串根据存储的数据格式可以分为text和blob
text:存储长文本字符
blob:存储二进制数据(通常不使用)

枚举字符串
枚举:enum,将日后所有可能出现的数据结果在数据库建表时的字段声明中设计完成,实际业务中存储的数据必须是规定好的数据。
枚举的使用方式
定义:enum(可能出现的元素列表); -- 如 gender enum('男','女','保密');
create table gender_tables(
gender enum('男', '女', '保密');
) charset utf8;

使用:只能存储预定义数据。insert into tablename value(......, '男', ......);枚举实际存储的是数值,可以直接向表中枚举字段插入数字,也可以插入字符串。
或insert into gender value(....., 0, ......);

枚举字符串类型的原理
枚举数据类型使用1-2个字节进行存储数据。若DBMS使用2个字节进行存储数据。那么该DBMS中任一个枚举数据类型最大枚举选项量为65536个。实际业务数据中,枚举数据类型都只有较小的数据量。原理:枚举实际存储的是数值,可以直接向表中枚举字段插入数字。建表时,枚举数据类型在数据规范的时候(定义时),系统会自动建立一个数字与枚举元素的对应关系存放到日志中。在进行数据插入的时候,系统自动将字符转换成对应的数字进行存储;在数据提取的时候,DBMS自动将数据转换为对应的字符串进行显示或者传值。如果数据库信息量巨大,记录条数(数据表的行数)繁多,可以省很多存储空间,规范了数据。但是系统存储效率会有所降低。

集合字符串
集合数据类型跟枚举数据类型似:实际存储的是数值,不是字符串(集合可存储多个数字)
枚举的使用方式
定义:set(元素列表); -- 如 hobby set('网球','乒乓球','游泳','跑步');
-- 结合中每一个元素都对应一个二进制位。
create table set_tables(
hobby set('网球','乒乓球','游泳','跑步');
) charset utf8;

使用:只能存储预定义数据。insert into tablename value(......, '男', ......);枚举实际存储的是数值,可以直接向表中枚举字段插入数字,也可以插入字符串。
insert into set_tables value('乒乓球','游泳','跑步'); insert into set_tables value(2^n); 参见B站 mysql精通视频。

【MySQL】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的数据类型 1.整数 TINYINT: 8 bit 存储空间 SMALLINT: 16 bit 存储空间 MEDIUMINT: 24 bit 存储空间 INT: 32 bit 存储空间 BI ...

  8. mysql之数据类型

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

  9. MySQL/MariaDB数据类型

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

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

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

随机推荐

  1. 链表常见的题型(java实现)

    链表是面试中最常见的一种题型,因为他的每个题的代码短,短短的几行代码就可以体现出应聘者的编码能力,所以它也就成为了面试的重点. 链表常见的操作有1.打印链表的公共部分,2.删除链表的倒数第K个节点,3 ...

  2. Jquery 动态添加元素 添加点击事件

    给动态添加的元素添加js事件,不能直接添加js事件,需要借助on( )方法,给选择器指定的子元素添加事件处理函数,并非选择器本身: 1. 语法 $(selector).on(event,childSe ...

  3. Ubuntu下安装并使用sublime text 3(建议:先安装Package controls 后在看本教程,否则可能会安装不了)

    首先从Sublime Text官网下载合适的包 然后使用 tar -xvvf sublime_text_3_build_3207_x64.tar.bz2 解压: 再使用 mv sublime_text ...

  4. 【元学习】Meta Learning 介绍

    目录 元学习(Meta-learning) 元学习被用在了哪些地方? Few-Shot Learning(小样本学习) 最近的元学习方法如何工作 Model-Agnostic Meta-Learnin ...

  5. MySQL基础(四)常用函数

    转载自 http://blog.csdn.net/evankaka MySQL数据库中提供了很丰富的函数.MySQL函数包括数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数.加密函数. ...

  6. 超级好用的c#解析JSON

    分享c# 一款非常好用的操作Json的dll,litjson VS2017 NuGet 搜索litjson,如下图: 例子: 在项目中新建一个txt文本文件,内容如下: [ { , "use ...

  7. Java编程思想——第17章 容器深入研究 读书笔记(三)

    七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...

  8. socat的介绍与使用

    Socat 是 Linux 下的一个多功能的网络工具,名字来由是 「Socket CAT」.其功能与有瑞士军刀之称的 Netcat 类似,可以看做是 Netcat 的加强版. Socat 的主要特点就 ...

  9. css 块元素超出文字省略表示

    .text-omit{ white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } 只对块元素的设置有效 . 块元素和行内元素见 ...

  10. Redis 3.0中文版学习(一)

    网址:http://wiki.jikexueyuan.com/project/redis-guide/entry-to-master-a.html http://www.yiibai.com/redi ...