深入MySQL(二):MySQL的数据类型
前言
对于MySQL中的数据类型的选择,不同的数据类型看起来可能是相同的效果,但是其实很多时候天差地别。
本章从MySQL中的常用类型出发,结合类型选择的常见错误,贯彻MySQL的常用类型选择。
常用类型
MySQL的常用类型并不多,总的来说分为以下几种:
- 整数类型
- 实数类型
- 字符串类型
- 日期和时间类型
整数类型
存储整数的话,可以用以下几种数据类型进行表示:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,分别使用8,16,24,32,64位进行存储。
同时还可以设置UNSIGEND,将大小扩大一倍。
很多有些基础的同学可能会疑惑,比如我们要进行数值之间的计算,如果进行类型转换函数进行转换,那么我们就用不了索引了,性能会极其低下。
其实MySQL中的整数类型,它只代表其硬盘和内存中是如何存储数据的,整数计算中,通常都是使用64位的BIGINT进行运行,包括32位环境亦是如此。
实数类型
实数类型我认为一般来说有三种:float,double,decimal,其中有C语言经验或者Java语言经验的同学应该知道,float和double在很多类型的编程语言中属于基本数据类型中的浮点型。由于操作系统的限制,计算机表示浮点型存在极大的缺陷,会有很大的精度误差。所以在《阿里巴巴Java开发手册》的MySQL部分以及MySQL的官方推荐中,都是强烈建议如果需要完全精确的小数的话,使用decimal进行存储。
所以我认为的话,如果是正常的开发中,所有的小数都使用decimal为好。
字符串类型
无论是哪一种基础设施或者语言,字符串都是其中避不开的一讲,MySQL中关于字符串的类型有:VARCHAR,CHAR,BLOB,TEXT,我在写项目的过程中使用的最多的便是VARCHAR,VARCHAR相当于是没有限制字符串长度的,而CHAR限制了字符串的长度,会丢弃多余的字符。CHAR适合存储定长或者或者很短的数据,比如MD5值和是非(Y,N)。
而BLOB和TEXT我就不是特别的熟悉了,按照《高性能MySQL》来说的话,这两种都是用来存储很大的数据而设计的,其中BLOB以二进制存储,TEXT以字符存储,在存储的时候,作为对象来存储。
日期类型
主要的日期类型:date,datetime,timestamp,time
类型 | 大小(byte) | 范围 | 格式 | 样例 |
---|---|---|---|---|
year | 1 | 1901~2155 | YYYY | 2021 |
date | 3 | 1000-01-01~9999-12-31 | YYYY-MM-DD | 2021-05-30 |
time | 3 | '-838:59:59'/'838:59:59' | MM-DD:SS | 23:30:00 |
timestamp | 4 | 1970-01-01 00:00:00UTC~2038……时间,根据时区不同而不同,结束时间为2147483647秒 | YYYYMMDDHHMMSS | 2021-05-30 12:30:12 |
datetime | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 2040-05-20 13:14:00 |
日期类型注意点
- time类型小时部分如此大的原因是因为其不止可以表示一天的时间(小于24小时),还可以是某个事件过去的时间,或者两个事件之间的时间间隔。
- timestamp与datetime显示格式相同,但是其合法范围不同,timestamp插入的时候会先转为UTC(时间统一时间),取出的时候在转成当地时区时间。
- MySQL允许不严格语法,任何标点符号都可以作为日期部分之间的分隔符。
类型选择中的常见错误
- 字段使用varchar,但是语句中使用整数类型;或者字段中使用整数类型,语句中使用字符串类型;这样执行的SQL语句不会走索引,而会走全表。
- 在不同的表中,表示同一个含义的字段使用不同的数据类型连接,这样也会导致可能的性能问题。
深入MySQL(二):MySQL的数据类型的更多相关文章
- MySQL(二)MySQL的启动或链接失败
有时候用命令mysql -u root -p 或者服务器启动mysql数据库的时候,会出现抛出异常并失败. 以下是遇过的异常. 1.1)抛出的异常:出现ERROR 2002 (HY000): Can' ...
- MySQL(二) MySQL基本操作
数据库的基本操作 启动关闭 MySQL 服务 MySQL 安装好后,默认是当 Windows 启动.停止时,MySQL 也自动.停止.不过,用户可以使用 Windows 下的服务管理器或从命令行使用 ...
- (2.5)Mysql之SQL基础——数据类型
(2.5)Mysql之SQL基础——数据类型 关键词:mysql数据类型 目录: 一.整数型 二.小数型(以下均不能使用无符号) 三.日期时间型 四.字符串型 一.整数型 额外参数示例: int [( ...
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识
前言: 在具体回顾每一个功能的实现前,还是有必要先温习一些项目涉及到的PHP.MySQL[语法基础].项目github地址:https://github.com/66Web/php_book_stor ...
- Python学习日记(四十二) Mysql数据库篇 十
前言 当我们自己去写SQL代码的时候有时候会因为不熟练会导致效率低,再之后要进行许多的优化,并且操作也较为繁琐.因此ORM框架就能够解决上面的问题,它能根据自身的一些规则来帮助开发者去生成SQL代码. ...
- MySQL:MySQL日期数据类型、MySQL时间类型使用总结
MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围------------ -------- ...
- Java面试题(二)--MySQL
1 存储引擎 1.简单描述一个Mysql的内部结构? MySQL的基本架构示意图: 大体来说,MySQL可以分为server层和存储引擎层两部分. ① server层包括连接器.查询缓存.分析器.优化 ...
- 转载:Centos7 从零编译Nginx+PHP+MySql 二
序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...
- 阿里云实战之二(mysql+phpmyadmin)
前文安装好了空间的基本环境,本来运行在线代码编辑器不需要php+mysql的环境,不过我还是想在后续建设里面引入会员制度,这样php+mysql的环境就必不可少了. 一.Linux下MySQL忘记ro ...
- mysql基础之基本数据类型
原文:mysql基础之基本数据类型 列类型学习 mysql三大列类型 整型 Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill ...
随机推荐
- Spark本地环境实现wordCount单词计数
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6814778610788860424/ 编写类似MapReduce的案例-单词统计WordCount 要统计的文件为 ...
- CentOS6.5-Hadoop2.7.3安装hive-2.1.1
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6627723801960382979/ 系统版本,Hadoop已安装完成 Mysql安装完成 准备的解压包 安装zi ...
- 深入理解Java虚拟机之自己编译JDK
题外话 最近在阅读<深入理解Java虚拟机>,其中有一小节实战是自己编译JDK,实际操作下来后遇到问题不少,为此特地记录,也希望可以给大家带来一些参考! 前置准备 平台及工具:Window ...
- 网络协议学习笔记(七)流媒体协议和P2P协议
概述 上一篇讲解了http和https的协议的相关的知识,现在我们谈一下流媒体协议和P2P协议. 流媒体协议:如何在直播里看到美女帅哥 最近直播比较火,很多人都喜欢看直播,那一个直播系统里面都有哪些组 ...
- 记一次线上SpringCloud-Feign请求服务超时异常排查
由于近期线上单量暴涨,第三方反馈部分工单业务存在查询处理失败现象,经排查是当前系统通过FeignClient调用下游系统出现部分超时失败(异常代码贴在下方). Caused by: feign.Ret ...
- 机器学习&恶意代码静态检测
目录 分析工具 方法概述 二进制灰度图 字节(熵)直方图 字符串信息 ELF结构信息 源码分析与OPcode FCG references: 分析工具 readelf elfparser ninja ...
- 动态代理及java演示
代理模式的理解 首先代理二字的含义,程序中代理与字面意思的代理并无区别.比如现实生活中办理车辆审车,我们经常会听说花钱找代理(又称黄牛)办手续,即办手续这个事,不是我们亲自执行,而是通过代理( ...
- Scratch 3 矢量编辑器——“临摹”一只哆啦A梦
利用Scratch来制作一些小作品,常常需要到网上去找图片,而网上下载的图片一般都是位图,往往存在两个问题: 图片不够清晰,当图片放大后会出现"马赛克"现象: 图片中存在不必要的背 ...
- 微服务架构 | *3.5 Nacos 服务注册与发现的源码分析
目录 前言 1. 客户端注册进 Nacos 注册中心(客户端视角) 1.1 Spring Cloud 提供的规范标准 1.2 Nacos 的自动配置类 1.3 监听服务初始化事件 AbstractAu ...
- office 下载(免费使用
https://otp.landian.vip/zh-cn/download.html