引言

作为一个做Java后端的开发者,无论是在自己平时项目学习实战还是工作中的真实项目,都离不开和数据库打交道。而MySQL作为当今最流行的关系型数据库之一,也成为了我们必须掌握的一门技术。最近在工作项目中碰到过好几次MySQL数据类型相关问题,比如字段类型大小越界啦,字段类型长度不够啦pilipala......,所以今天抽空好好做个笔记总结一下。在这里呢只总结MySQL的数据类型的基本知识,不会牵扯到索引或存储引擎之类的知识(因为索引和存储引擎的知识足够写一本很厚很厚的书了)。


数值类型

其中对应于java中的类型都是基于mybatis生成对应的,实际上有符号和无符号对应于java中类型可能是不一样的。

  • TINYINT:大小(1byte),范围(有符号为-128到127,无符号为0到255),用于小整数值,对应于java中的Byte类型;
  • SMALLINT:大小(2byte),范围(有符号为-32768到32767,无符号为0到65535),用于大整数值,对应于java中的Short类型;
  • MEDIUMINT:大小(3byte),范围(有符号为-8388608到8388607,无符号为0到65535),用于大整数值,对应于java中的Integer类型
  • INT或INTEGER:大小(4byte),范围(有符号为-2147483648到2147483647,无符号为0到4294967295),用于大整数值,也对应于java中的Integer类型
  • BIGINT:大小(8字节),范围(有符号为-9223372036854775808到9223372036854775807,无符号为0到18446744073709551615),用于极大整数值,对应于java中的Long类型
  • FLOAT:大小(4字节),范围(有符号为-3.402 823 466 E+38到-1.175 494 351 E-38),0,(1.175 494 351 E-38到3.402 823 466 351 E+38,无符号为0~18446744073709551615),用于单精度浮点值,对应于java中的Float类型
  • DOUBLE:大小(8字节),范围((-1.797 693 134 862 315 7 E+308 到-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308 到 1.797 693 134 862 315 7 E+308)),用于双精度浮点值,对应于java中的Double类型;
  • DECIMAL:大小(对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2),范围(依赖于M和D的值),用于小数值,尤其用于金融相关,对应于java中的Long类型;

日期和时间类型

mybatis生成时都对应到java中的Date类型

  • DATE:大小(3byte),范围(1000-01-01到9999-12-31),格式(YYYY-MM-DD),用于日期值;
  • TIME:大小(3byte),范围(-838:59:59到838:59:59),格式(HH:MM:SS),用于连续时间;
  • TIMESTAMP:大小(4byte),范围(1970-01-01 00:00:00/2038,结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07),格式(YYYY-MM-DD HH:MM:SS),用于混合日期和时间值
  • DATETIME:大小(8byte),范围(1000-01-01 00:00:00到9999-12-31 23:59:59),格式(YYYY-MM-DD HH:MM:SS),也用于混合日期+时间值

字符串类型

  • CHAR(n):大小(0~255 byte,注意定义时指定的n为字符数,而不是字节数),用于定长字符串;
  • VARCHAR(n):大小(0~65535 byte,n也是指的字符数),用于变长字符串;
  • TINYBLOB:大小(0~255 byte),用于不超过 255 个字符的二进制字符串;
  • BLOB:大小(0~65535 bytes),用于二进制形式的长文本数据;
  • MEDIUMBLOB:大小(0~16777215 bytes),用于二进制形式的中等长度文本数据;
  • LONGBLOB:大小(0~4294967295 bytes),用于二进制形式的极大文本数据;
  • TINYTEXT:大小(0~255 bytes),用于短文本字符串;
  • TEXT:大小(0-65 535 bytes),用于长文本数据
  • MEDIUMTEXT:大小(0~16777215 bytes),用于中等长度文本字数据;
  • LONGTEXT:(0~4294967295 bytes),用于极大文本数据(足够足够大了,再长的文本数据也基本上够你用了);

  • 对了,还有一个BIT布尔类型,对应于java中的Boolean类型

总之吧,好记性不如烂笔头嘛,做个笔记和总结,让自己以后创建数据表的时候或者添加字段的时候能够正确的选择MySQL的字段数据类型。如果还是记不住,那就来这里翻一下就好了,也不用这里搜那里查了,看自己的这篇笔记基本就够了。

Reference

[1] https://www.runoob.com/mysql/mysql-data-types.html

[2] https://blog.csdn.net/qq_30046617/article/details/93380630

MySQL数据类型笔记的更多相关文章

  1. mysql 数据类型笔记

    一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...

  2. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  3. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  4. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  5. mysql基本数据类型(mysql学习笔记三)

    Mysql数据类型 小数: 浮点:小数位可以变化 Float单精度默认精度6位左右 Double 双精度默认精度16位左右 支持,控制数值范围 Type(M,D) M表示所有数值位数(不包括小数点和符 ...

  6. Mysql学习笔记(一)

    技术的王国太过迷人,我刚从事IT就被各种技术所引诱迷惑,什么都想学.我还算言而有信的那一类人,还好有一丁点毅力,于是各种东西都沾染了一点.但是这种遍地开花的情况实在和我的智商不匹配.我没有那么多的精力 ...

  7. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  8. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  9. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

随机推荐

  1. L15卷积神经网络基础

    卷积神经网络基础 本节我们介绍卷积神经网络的基础概念,主要是卷积层和池化层,并解释填充.步幅.输入通道和输出通道的含义. 二维卷积层 本节介绍的是最常见的二维卷积层,常用于处理图像数据. 二维互相关运 ...

  2. Java优秀教程

    1.java中局部变量是在栈上分配的: 2.数组是储存在堆上的对象,可以保存多个同类型变量: 3.在Java语言中,所有的变量在使用前必须声明. 4.局部变量没有默认值,所以局部变量被声明后,必须经过 ...

  3. Django文档阅读-Day1

    Django文档阅读-Day1 Django at a glance Design your model from djano.db import models #数据库操作API位置 class R ...

  4. 2020.4面试分享(7面收5个offer)

    都说金三银四是找工作的最佳时节,由于本人的个人职业规划跟目前工作内容不太相符(具体原因就不透露了,领导平时也要来这里逛,哈哈),四月份挑选了10多家公司投递简历(公司规模从几十人到上万人都有),参加了 ...

  5. RESTFul 设计规范

    REST这个词,是Roy Thomas Fielding博士在他2000年提出的,有兴趣的可以阅读一下他的论文, 论文地址为:http://www.ics.uci.edu/~fielding/pubs ...

  6. 关于join on 和单表查询的实时效果

    当数据量大(10W单位级)的时候,join的优势,会被单表查询超过. 以下是两张表单查和两张表联查的时间对比,同时,这样的记录有局限性的. 一.数据量少时: 单表查: 表一:显示行 0 - 2 ( 3 ...

  7. Idea上tomcat部署细节

    ​ 一.On Update action: (1)Update resources:更新项目变更的.jsp,.xml文件等资源文件,而不会更新源码文件:(仅修改项目的JS文件.JSP文件.CSS文件推 ...

  8. 不是广告--如何学Java,我说点不太一样的学习方式

    首先声明,这篇文章不是卖课程.介绍培训班的广告. 最近有不少读者通过微信问我:小白应该怎么学好 Java? 提问的人里有在校大学生.有刚参加工作的.有想转行做程序员的,还有一部分是最近找工作不顺的. ...

  9. js html生成图片

    我自己分装好的方法,外链自己去下: /** * !!!使用前请导入jq文件!!! 海报生成, 二维码链接生成 */ document.write('<script src="/Publ ...

  10. .Net平台GC VS JVM垃圾回收

    前言 不知道你平时是否关注程序内存使用情况,我是关注的比较少,正好借着优化本地一个程序的空对比了一下.Net平台垃圾回收和jvm垃圾回收,顺便用dotMemory看了程序运行后的内存快照,生成内存快照 ...