目录

1、整数类型

2、小数类型

3、日期和时间类型

4、字符串类型

5、二进制类型


1、整数类型

整数类型对比总结
类型名称 解释说明 存储需求 取值范围(有符号)
tinyint 很小的整数 1 bit -128〜127
smallint 小的整数 2 bit  -32768〜32767
mediumint 中等大小的整数 3 bit -8388608〜8388607
int(integer) 普通大小的整数 4 bit -2147483648〜2147483647
bigint 大整数 8 bit -9223372036854775808〜9223372036854775807

2、小数类型

浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);定点类型只有一种,就是 DECIMAL

浮点类型和定点类型都可以用(M, D)来表示,其中M称为精度,表示总共的位数;D称为标度,表示小数的位数。

浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10。

小数类型对比总结
类型名称 解释说明 存储需求 取值范围(有符号)
float 单精度浮点数 4 bit -3.402823466E+38~-1.175494351E-38
double 双精度浮点数 8 bit -1.7976931348623157E+308~-2.2250738585072014E-308
decimal(m,d), dec 压缩的“严格”定点数 m+2 bit

在 MySQL 中,定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据),使用 DECIMAL 的类型比较好,另外两个浮点数进行减法和比较运算时也容易出问题,所以在使用浮点数时需要注意,并尽量避免做浮点数比较。

货币数据,在sql sever中有 money(8bit) 、smallmoney(4bit)数据类型,可以理解为decimal类型,只不过在同等长度和精度情况下,所占空间比decimal小。

参考:(38条消息) sql server 的 money类型_挨踢笔记-CSDN博客_money类型

数据类型对应的取值范围的详细计算,参考:参考:(38条消息) float的精度和取值范围_AlbertS Home of Technology-CSDN博客_float的取值范围

3、日期和时间类型

日期和时间类型对比总结
类型名称 日期格式 日期范围 存储需求
YEAR YYYY 1901 ~ 2155 1 bit
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3 bit
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3 bit
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8 bit
TIMESTAMP YYYY-MM-DD HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4 bit

注意:

1、每一个类型都有合法的取值范围,当指定确定不合法的值时,系统将“零”值插入数据库中。

2、为 TIME 列分配简写值时应注意:如果没有冒号,MySQL 解释值时,假定最右边的两位表示秒。(MySQL 解释 TIME 值为过去的时间而不是当前的时间)。例如,读者可能认为 '1112' 和 1112 表示 11:12:00(即 11 点过 12 分钟),但MySQL 将它们解释为 00:11:12(即 11 分 12 秒)。同样 '12' 和 12 被解释为00:00:12。相反,TIME 值中如果使用冒号则肯定被看作当天的时间,也就是说,'11:12' 表示 11:12:00,而不是 00:11:12。

3、MySQL 允许“不严格”语法:任何标点符号都可以用作日期部分之间的间隔符。例如,'98-11-31'、'98.11.31'、'98/11/31'和'98@11@31' 是等价的,这些值也可以正确地插入数据库。

4、TIMESTAMP 与 DATETIME 除了存储字节和支持的范围不同外,还有一个最大的区别是:

  • DATETIME 在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关;
  • 而 TIMESTAMP 值的存储是以 UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的。

4、字符串类型

类型名称 说明 存储需求
CHAR(M) 固定长度非二进制字符串 M 字节,1<=M<=255
VARCHAR(M) 变长非二进制字符串 L+1字节,在此,L< = M和 1<=M<=255
TINYTEXT 非常小的非二进制字符串 L+1字节,在此,L<2^8
TEXT 小的非二进制字符串 L+2字节,在此,L<2^16
MEDIUMTEXT 中等大小的非二进制字符串 L+3字节,在此,L<2^24
LONGTEXT 大的非二进制字符串 L+4字节,在此,L<2^32
ENUM 枚举类型,只能有一个枚举字符串值 1或2个字节,取决于枚举值的数目 (最大值为65535)
SET 一个设置,字符串对象可以有零个或 多个SET成员 1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)

注意:

1、CHAR 和 VARCHAR 类型区别

CHAR(M) 为固定长度字符串,在定义时指定字符串列长。当保存时,在右侧填充空格以达到指定的长度。M 表示列的长度,范围是 0~255 个字符。当检索到 CHAR 值时,尾部的空格将被删除。

VARCHAR(M) 是长度可变的字符串,M 表示最大列的长度,M 的范围是 0~65535。VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定,而实际占用的空间为字符串的实际长度加 1。VARCHAR 在值保存和检索时尾部的空格仍保留。

2、VARCHAR 和 TEXT 类型比较

VARCHAR 和 TEXT 类型是变长类型,其存储需求取决于列值的实际长度(在前面的表格中用 L 表示),而不是取决于类型的最大可能尺寸。

当保存或查询 TEXT 列的值时,不删除尾部空格。

5、二进制类型

类型名称 说明 存储需求
BIT(M) 位字段类型 大约 (M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY (M) 可变长度二进制字符串 M+1 字节
TINYBLOB (M) 非常小的BLOB L+1 字节,在此,L<2^8;最大长度为255 (28-1)字节
BLOB (M) 小 BLOB L+2 字节,在此,L<2^16;最大长度为65535 (216-1)字节
MEDIUMBLOB (M) 中等大小的BLOB L+3 字节,在此,L<2^24;最大长度为16777215 (224-1)字节
LONGBLOB (M) 非常大的BLOB L+4 字节,在此,L<2^32;最大长度为4294967295或4GB (231-1)字节

注意:

1、BINARY 和 VARBINARY 类型区别(类似于 CHAR 和 VARCHAR)

BINARY 类型的长度是固定的,指定长度后,不足最大长度的,将在它们右边填充 “\0” 补齐,以达到指定长度。例如,指定列数据类型为 BINARY(3),当插入 a 时,存储的内容实际为 “\a0\0”,当插入 ab 时,实际存储的内容为“ab\0”,无论存储的内容是否达到指定的长度,存储空间均为指定的值 M。

VARBINARY 类型的长度是可变的,指定好长度之后,长度可以在 0 到最大值之间。例如,指定列数据类型为 VARBINARY(20),如果插入的值长度只有 10,则实际存储空间为 10 加 1,实际占用的空间为字符串的实际长度加 1。

2、BLOB 和 TEXT类型的区别

BLOB 列存储的是二进制字符串(字节字符串),TEXT 列存储的是非进制字符串(字符字符串)。

BLOB 列是字符集,并且排序和比较基于列值字节的数值;TEXT 列有一个字符集,并且根据字符集对值进行排序和比较。

MySQL-数据类型 整理总结相关推荐

  1. mysql课程id数据类型_数据库学习之六:mysql数据类型

    六.mysql数据类型 1.课程大纲 • 数据类型介绍 • 数据类型设置 • 列属性 • 数据类型的字符集用法 • 选择适当的数据类型 2.数据类型介绍 • 四种主要类别: 数值类型 字符类型 时间类 ...

  2. 面试题:mysql 数据类型

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 mysql 数据类型 MySQL数据类型 含义(有符号) tiny ...

  3. MySQL数据类型以及元数据的使用

    第1章 Mysql数据类型 1.1 四中主要类别: 1.      数值类型 2.      字符类型 3.      时间类型 4.      二进制类型 1.2 数据类型三要素: 简介-完整-适当 ...

  4. jfinal mysql date,jfinal与mysql数据类型拾掇大全

    前言:今天在做jfinal和mysql的数据转换时出现了java.lang.Boolean cannot be cast to java.lang.Integer错误,而之前我就遇到过这样的问题mys ...

  5. 9、MySQL数据类型约束 -mysql

    目录 一.MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2.2.2 UNSIGNED 2.2.3 ZEROFILL 2.3 适用场景 2.4 如何选择? 3. 浮点类型 4. ...

  6. Day462.MySQL数据类型约束 -mysql

    MySQL数据类型精讲 1. MySQL中的数据类型 类型 类型举例 整数类型 TINYINT.SMALLINT.MEDIUMINT.INT(或INTEGER).BIGINT 浮点类型 FLOAT.D ...

  7. MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解

    MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...

  8. [转]mysql 数据类型

    原文地址:https://github.com/jaywcjlove/handbook/blob/master/MySQL/MySQL%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E ...

  9. MySQL 语句整理 2019-5-3

    MySQL 语句整理 在整理完Oracle的一些常见用语句后,由于MySQL的语法跟Oracle略有不同,随跟PN的MySQL视频进行了间接整理. 查询薪水大于1800, 并且部门编号为20或30的员 ...

  10. MySQL数据类型之数字类型详细解析

    MySQL数据类型之数字类型 数字类型按照我的分类方法分为三类:整数类.小数类和数字类. 我所谓的"数字类",就是指DECIMAL和NUMERIC,它们是同一种类型.它严格的说不是 ...

最新文章

  1. HDU 1253 胜利大逃亡
  2. 软件测试——系统测试总结报告模板
  3. 一步步编写操作系统 46 用c语言编写内核3
  4. 【Python CheckiO 题解】Absolute Sorting
  5. 澳国立计算机录取分数,澳洲出国:2018年澳洲国立大学对高考成绩的本科录取分数线(多图)...
  6. input内强制保留小数点后两位 位数不足时自动补0
  7. Hadoop单机和伪分布式环境搭建
  8. Kubernetes 1.4安装后查看记录
  9. OpenDaylight你不可不知的十大问题——OpenDaylight是什么?
  10. 4款超好用的时间轴制作软件
  11. 如何在线修改图片大小?图片在线改大小方法推荐给你
  12. ipad如何与手机微信连接服务器地址,如何设置微信在手机和ipad同步 - 卡饭网
  13. Opencv 学习笔记(二)
  14. 季冠携“闪星服务”受邀参加2021连锁企业轻资产论坛
  15. echarts4.8.0最新版本下载,亲测可用
  16. 补码一位乘--布斯公式
  17. PJzhang:关闭wps小广告和快速关闭445端口
  18. UVM基础-TLM通信机制(二)
  19. 达梦redo log损坏的处理办法
  20. 内外网隔离-Traffic Policy

热门文章

  1. input输入框提示从数据库查出来的一堆数据
  2. 爬虫之requests库的使用
  3. @Transactional之Spring事务深入理解
  4. HDU 1546 Idiomatic Phrases Game
  5. 【Codeforces Round #519 by Botan Investments D】Mysterious Crime
  6. WebStorm连接Github教程
  7. 51Nod 1067:Bash游戏 V2(巴什博弈)
  8. 常用C/C++预处理指令详解
  9. Android ViewPager 里有子ViewPager的事件冲突
  10. [转载] python 字符串(string)