整数类型

类型名 占用字节 有符号范围 无符号范围(UNSIGNED)
TINYINT 1 -128~127 0~255
SMALLINT 2 -32768~32767 0~65535
MEDIUMINT 3 -8388608~8388607 0~16777215
INT、INTEGER 4 -2147483648~2147483647 0~4294967295
BIGINT 8 -9223372036854775808~9223372036854775807 0~18446744073709551615

浮点类型

类型名 占用字节 有符号范围 无符号范围(UNSIGNED)
FLOAT 4 (-3.4E+38,-1.17E-38),0,(1.17E-38,3.4E+38) 0,(1.17E-38,3.4E+38)
DOUBLE 8 (-1.7E+308,-2.2E-308),0,(2.2E-308,1.7E+308) 0,(2.2E-308,1.7E+308)

ps:

  • mysql存储浮点数的格式为:符号(S)、尾数(M)和阶码(E)。有无符号,正数的范围是一样的

  • 尾数是二进制存储的,除了以5结尾的小数,其他的都会有精度上的缺失。所以浮点数不要用“=”来判断两个数是否相等

  • 不建议定义精度M和标度D

  • 整数部分超出范围会直接报错,小数部分超出范围会四舍五入

定点数类型

DECIMAL

使用DECIMAL(M,D)方式方式表示高精度小数。0<=M<=65,0<=D<=30,D<M。DECIMAL的存储空间为M+2。

底层是以字符串的形式存储的,这就决定了它是精确的。

不指定MD,默认是DECIMAL(10, 0)。

定点数和浮点数

定点数精确但是通常情况占用空间相对较大(M大于2/6的时候就大于float/double的占用大小了)。

相反,浮点数通常情况下相对于定点数来说占用空间小,范围大但是不精确。

位类型

类型名 长度 长度范围 占用字节
BIT(M) M,默认1 1<=M<=64 约为(M + 7) / 8 个字节

### 日期与时间类型

类型名 介绍 占用字节 格式 最小值 最大值
YEAR 1 YYYY或YY 1901 2155
TIME 时间 3 HH:MM:SS -838:59:59 838:59:59
DATE 日期 3 YYYY-MM-DD 1000-01-01 9999-12-03
DATETIME 日期时间 8 YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP 日期时间 4 YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:00 UTC 2038-01-19 03:14:07UTC

ps:

  • TIMESTAMP存储数据的时候会转换成距离1970-01-01 00:00:01 UTC的毫秒值,查询的时候会根据查询时候所在的时区将毫秒值转换成时间,因此不同时区查看看一个数据会得到不同的结果。
  • TIMESTAMP类型的日期比较相对于DATATIME来说较快。

文本字符串类型

类型 字符长度 长度范围(存储字节范围) 占用存储空间
CHAR(M) M 0<=M<=255 M字符所占用的字节
VARCHAR(M) M 0<=M<=65535 M字符所占用的字节+1个字节
TINYTEXT L 0<=L<=255 L字符所占用的字节+2个字节
TEXT L 0<=L<=65535 L字符所占用的字节+2个字节
MEDIUMTEXT L 0<=L<=16777215 L字符所占用的字节+3个字节
LONGTEXT L 0<=L<=4294967295 L字符所占用的字节+4个字节
ENUM L 1<=L<=65535 1或2个字节
SET L 0<=L<=64 1,2,3,4或8个字节

CHAR和VARCHAR

类型 特点 空间上 时间上 试用场景
CHAR(M) 固定长度 浪费存储空间 效率高 存储不大,速度要求高
VARCHAR(M) 可变长度 节省存储空间 效率低 非CHAR的情况

具体存储引擎的情况:

  • MyISAM:最好用CHAR,这样使得整个表静态化,以空间换时间
  • MEMORY:底层都是用固定长度去存储数据,用啥都一样
  • InnoDB:建议使用varchar类型,因为InnoDB内部行存储的格式并没有区分固定长度和可变长度(所有数据行都是用指向数据列值得头指针),而且主要影响性能因素是数据行使用的存储总量,所以一般情况除了简短并且固定长度的使用char,其他都使用varchar。

二级制字符串

类型 特点 值的长度 占用空间
BINARY(M) 固定长度 M (0 <= M <= 255) M个字节
VARBINARY(M) 可变长度 M (0 <= M <= 65535) M+1个字节

和char、varchar很像

二进制大对象

类型 长度 长度范围 占用空间
TINYBLOB L 0 <= L <= 255 L + 1 个字节
BLOB L 0 <= L <= 65535(相当于64KB) L + 2 个字节
MEDIUMBLOB L 0 <= L <= 16777215 (相当于16MB) L + 3 个字节
LONGBLOB L 0 <= L <= 4294967295(相当于4GB) L + 4 个字节

TEXT和BLOB的使用注意事项

  • BLOB和TEXT值也会引起自己的一些问题,特别是执行了大量的删除或更新操作的时候。删除这种值会在数据表中留下很大的" 空洞 ",以后填入这些"空洞"的记录可能长度不同。为了提高性能,建议定期使用 OPTIMIZE TABLE 功能对这类表进行碎片整理

  • 把BLOB或TEXT列 分离到单独的表 中。在某些环境中,如果把这些数据列移动到第二张数据表中,可以让你把原数据表中的数据列转换为固定长度的数据行格式,那么它就是有意义的。这会 减少主表中的碎片 ,使你得到固定长度数据行的性能优势。它还使你在主数据表上运行 SELECT * 查询的时候不会通过网络传输大量的BLOB或TEXT值。

JSON类型

MYSQL5.7已经支持,MYSQL8.0加了自动验证的json文档和优化的存储结构。

空间类型

MySQL 空间类型扩展支持地理特征的生成、存储和分析。这里的地理特征表示世界上具有位置的任何东西,可以是一个实体,例如一座山;可以是空间,例如一座办公楼;也可以是一个可定义的位置,例如一个十字路口等等。MySQL中使用 Geometry(几何) 来表示所有地理特征。Geometry指一个点或点的集合,代表世界上任何具有位置的事物。

MySQL的空间数据类型(Spatial Data Type)对应于OpenGIS类,包括单值类型:GEOMETRY、POINT、LINESTRING、POLYGON以及集合类型:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION 。

Mysql基础篇(3)—— MySQL数据库类型相关推荐

  1. MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器

    第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...

  2. MySQL——基础篇

    MySQL--基础篇 一.数据库的相关概念 数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件). 表(table) 某种特定类型数据的结构化清单. 模式(schema) 关 ...

  3. 深入浅出Mysql - 基础篇(列类型/运算符/函数)

    深入浅出Mysql - 基础篇(列类型/运算符/函数) 每一个常量.变量和参数都有数据类型,它用来指定一定的存储格式.约束和有效范围.MySQL提供了多种数据类型,主要包括数值型.字符串类型.日期和时 ...

  4. Mysql基础篇(1)—— 基础概念、DML基本语法和表连接

    前言 Mysql基础篇相关的内容是看了康师傅的视频做的笔记吧 数据库相关概念 DB: 数据库(Database) ​ 存储数据的仓库,本质是一个文件系统.它保存了一系列有组织的数据. DBMS:数据库 ...

  5. 最全MySQL基础篇

    文章目录 导入表的问题 第三章_最基本的SELECT语句 1. SQL语言的规则和规范 1) 基本规则 2) SQL大小写规范(建议遵守) 3) 注释 4) 命名规则 2. 基本的SELECT语句 1 ...

  6. MySQL基础篇——第11章 DML(数据操作):增删改

    MySQL基础篇--第11章 DML(数据操作):增删改 1. 插入数据(增) INSERT INTO ... 使用 INSERT INTO 语句向表中插入数据(记录) 1.1 方式1:VALUES ...

  7. MySQL基础篇:子查询

    文章目录 概述 where型子查询 from型子查询 EXISTS型子查询 复制表子查询 概述 在某些情况下,当进行一个查询时,需要的条件或数据要用另一个select语句的结果,这个时候,就要用到** ...

  8. mysql 基础篇(二) 账号、权限管理

    mysql 基础篇(二) 账号.权限管理.备份与还原 建立账号密码: Grant all on test.* to "cj"@"localhost" ident ...

  9. 【MySQL基础篇】数据导出导入权限与local_infile参数

    [MySQL基础篇]数据导出导入权限与local_infile参数 问题背景 数据导出测试 创建测试库(在主库进行) 测试数据导出(在从库进行) 测试数据导入(在主库进行) 问题背景 MySQL高可用 ...

  10. MySql基础篇---001 数据库概述与MySQL安装篇:概述,表和类对应关系,表关系、数据库卸载,下载,安装,配置,启动,登录,演示,图形化工具,目录结构,常见问题

    第01章_数据库概述 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储 ...

最新文章

  1. Linux Kernel TCP/IP Stack — 协议栈发包处理流程
  2. 同一网段还是跨VLAN的取舍
  3. Windows XP安装Python,最高支持到3.4.4,后续版本不支持
  4. 数据结构-----AVL树的插入删除操作
  5. PHP的pm、pm.max_requests、memory_limit
  6. java web中出现莫名错误,出现错误标识和红线但不影响运行。
  7. java项目整合mybatis_JavaWeb项目整合Spring,SpringMVC,Mybatis框架
  8. 几种常见的模式识别算法整理和总结
  9. 试卷分析计算机基础,计算机基础试卷分析.doc
  10. Thor 1.3.4免费安装
  11. 微信朋友圈设计方案简述
  12. 【工科数学分析】2021-10-07-工科数学分析叒复习(三)
  13. Aspose.Words导出word导出pdf
  14. JS函数传参是传值还是传引用
  15. 受贿千万,字节前餐饮主管二审被判6年
  16. 中序线索化二叉树的遍历
  17. php stripslashes和addslashes的区别
  18. 服务器虚拟化实施方案可研报告,服务器虚拟化实施方案可研可行报告报告(2017word资料).doc...
  19. MNF最小噪声分离变换
  20. wavplay控件应用之SigmaStudio

热门文章

  1. AI面临产业大考:落地虽难,但产业化路径已日渐清晰
  2. node 脚手架项目,快速删除 node_modules 包的 rimraf 命令
  3. matlab产生一个稀疏向量,Matlab中的稀疏矩阵向量乘法比Python快吗?
  4. 文学类的小说,言情类的,没有排行榜上的
  5. python3 chm文档下载_python3.7.0官方参考文档 最新api文档 chm_Python教程_源雷技术空间...
  6. CDN流量是什么,怎么计算?
  7. Xubuntu之lightdm开机无密码进入界面
  8. 2020年软件测试工程师需要具备什么技能--需要学哪些
  9. Go项目配置管理神器之viper使用详解
  10. VPLS和MPLS 的区别