MySQL的数据类型还是较为简单的,总共有四种:整数类型、浮点数类型、字符串类型、时间和日期类型。

整数类型从小到大有tinyint、smallint、mediumint、int、bigint五种,区别所占空间的大小,对应为存储数据的数值大小。

拿tinyint来举例子,一个tinyint字段占一个字节Byte,即8位,8位二进制所能存储的十进制数值即2^8=256,也就是能够存储范围为-128~127(有符号),或0~255(无符号)的数。

浮点数类型有float、double和decimal,float和double都很熟悉了,主要的区别是支持的小数位和存储数值的大小。如果需要精确到小数点后10位以上,就需要选择DOUBLE类型。

不过因为十进制的小数部分化为二进制时,常常是不能化尽的,所以float和double类型都做不到精确,他们只能做到非常近似。

所以当我们对数据的精确度要求特别高时,我们就需要用到decimal类型了,因为decimal类型是将浮点数转换为字符串进行存储,所以能够解决精度问题。

字符串类型中经常使用的有char、varchar、text这三种,若需要存储少量字符串,则选择char或varchar;再根据字符串长度是否经常变化进行选择,若经常变化,则选择varchar,否则选择char。他们俩的区别是,varchar是动态分配空间,即输入多少就占多少。而char是定义多少,就占多少空间。

还有一点需要注意的是,char(n)和varchar(n)中的n表示的是字符的个数,而不是字节个数。比如说,在gbk编码的表中,一个汉字需要占2个字节;而在utf-8编码中,一个汉字需要占3个字节,而一个英文或者数字只占一个字节。但是如果一个字段的类型为char(20),则能存储20个字符,即20个中文字或英文字,或20个中英混合字。

日期和时间类型也是我们经常需要使用到的,可以用date类型表示单纯的日期,也可以用time类型表示单纯的时间(时分秒),或者用year类型只表示年份。

不过用的最多的还是datetime和timestamp,他们俩都是混合日期和时间值,区别是datetime的形式是日期字符串,而timestamp虽然表现形式是日期字符串,但是实际存储的值是时间戳;另外datetime的存储时间范围更长。

还有一点需要注意的是,就是null和空值的区别。

在MySQL中,null就是在字段中存储null值,而空值是在字段中存储空字符(")。两者是不相等的。

区别为空值是不占用空间的,而null需要占用空间。且在官方文档中有说明:

NULL columns require additional space in the row to record whether their values are NULL.

NULL列需要行中的额外空间来记录它们的值是否为NULL。

还有,当使用count统计记录数时,为null的字段会被忽略,而为空字符的字段会被统计进去。

所以我们一般会把字段加上约束-NOT NULL,或者给字段默认值、赋空字符等,避免空间的浪费。

常用的基本数据类型差不多就这些了,可以说是非常地精简,每一种数据类型都有其存在的道理,且不可被替代。不过除了以上的数据类型,MySQL中还有许多数据类型,比如 binary 二进制、blob 布尔类型、json 类型、空间数据类型(point、linestring、geometry、polygon)、enum 枚举类型、set 集合类型等等,可以满足我们的各种需要。

我们在实际地设计表结构前,需要分析数据,需要选择合适的数据类型,尽量做到不要浪费空间。

另外,如果你有兴趣,或者是有问题想要与我探讨,欢迎来访问我的博客:https:mu-mu.cn/blog

mysql 浮点数定义2_MySQL学习笔记(二):数据类型相关推荐

  1. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  2. (C/C++学习笔记) 二. 数据类型

    二. 数据类型 ● 数据类型和sizeof关键字(也是一个操作符) ※ 在现代半导体存储器中, 例如在随机存取存储器或闪存中, 位(bit)的两个值可以由存储电容器的两个层级的电荷表示(In mode ...

  3. Mysql 安装及实践(学习笔记二)

    安装并配置MySQL数据库 3.2.1 安装MySQL数据库 1.MySQL数据库的安装环境准备 如果读者没有物理服务器环境,则可以搭建vmware等虚拟机环境学习,相应地则需准备如下内容: 1)请提 ...

  4. c语言运算符 %3c%3c4,C语言学习笔记二---数据类型运算符与表达式

    一.C的基本语法单位 1.标识符:有效长度:31(DOS环境下) 2.关键字:main不是 3.分隔符:空格符,制表符,换行符,换页符 4.注释符:a./*.....*/   b.// 二.C的常用输 ...

  5. Mysql学习笔记(二)——表格及数据的插入

    Mysql学习笔记(二)--表格及数据的插入 文章目录 Mysql学习笔记(二)--表格及数据的插入 1.Mysql常用指令 2.创建表格 A.数据类型 B.完整性约束条件 3.查看表格 4.修改表格 ...

  6. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

  7. StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用

    StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 原文: StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 Connec ...

  8. MySQL实战45讲学习笔记

    文章目录 MySQL实战45讲-学习笔记 01 基础架构:一条SQL查询语句是如何执行的? mysql逻辑架构 连接器 查询缓存 分析器 优化器 执行器 02 日志系统:一条SQL更新语句如何执行 r ...

  9. 《姜承尧的MySQL实战宝典》学习笔记

    <姜承尧的MySQL实战宝典>学习笔记 1 表结构设计 1.1 数字类型 1.1.1 整形类型 1.1.2 浮点类型和高精度型 1.1.3 实战--整型类型与自增设计 1.1.4 实战-- ...

最新文章

  1. php找不到dns地址,dns异常是什么意思
  2. 证券 计算机系统,证券商电脑网络系统
  3. 1. K近邻算法(KNN)
  4. MySQL读写分离介绍及搭建
  5. 9.template -- basic concepts
  6. 爬虫应对银行安全控件
  7. 扩展欧几里得算法的实现
  8. 【玩转嵌入式屏幕显示】(六)ST7789 SPI LCD硬件垂直滚动功能的使用
  9. Android 通知(使用NotificationCompat.Builder )
  10. QuickChm 制作chm文档 chm文档脚本错误,乱码
  11. 【JZOJ6124】有限空间跳跃理论
  12. Mac安装redis并设置开机自启动
  13. data参数 layui_layui upload 额外参数上传
  14. 小米适配android o机型,小米公布部分机型安卓O/P适配进度及新适配计划
  15. 分析方法4---多维度拆解分析
  16. js禁用退格键(BackSpace)
  17. IBM最新洞察:我们所熟知的通信服务时代已经结束
  18. 通用的商城系统后台管理ui框架模板
  19. 深圳大学计算机专业评级,全球1355所大学学科评级结果:深圳大学13个学科获评A类...
  20. PyPI 推送自己的

热门文章

  1. shell-sort
  2. 将数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔
  3. 何杰月c语言课程,多线程 - 何杰leo的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. oracle hint禁用索引,【轉】Oracle索引HINT的使用
  5. 计算机系学生的职业生涯作文,医学生职业生涯规划的作文800字
  6. java解析字符串_用Java解析字符串有哪些不同的方法?
  7. 二、数据分析前,打下数据处理基础(上)
  8. 服务器运行jupyter notebook,解决办法
  9. 听说Attention与Softmax更配哦~
  10. 成为年薪50W+的NLP工程师,需要哪些技能?