深入MySQL(二):MySQL的数据类型

深入MySQL(二):MySQL的数据类型,第1张

深入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)范围格式样例year11901~2155YYYY2021date31000-01-01~9999-12-31YYYY-MM-DD2021-05-30time3‘-838:59:59’/‘838:59:59’MM-DD:SS23:30:00timestamp41970-01-01 00:00:00UTC~2038……时间,根据时区不同而不同,结束时间为2147483647秒YYYYMMDDHHMMSS2021-05-30 12:30:12datetime81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS2040-05-20 13:14:00 日期类型注意点
    time类型小时部分如此大的原因是因为其不止可以表示一天的时间(小于24小时),还可以是某个事件过去的时间,或者两个事件之间的时间间隔。timestamp与datetime显示格式相同,但是其合法范围不同,timestamp插入的时候会先转为UTC(时间统一时间),取出的时候在转成当地时区时间。MySQL允许不严格语法,任何标点符号都可以作为日期部分之间的分隔符。
类型选择中的常见错误
    字段使用varchar,但是语句中使用整数类型;或者字段中使用整数类型,语句中使用字符串类型;这样执行的SQL语句不会走索引,而会走全表。在不同的表中,表示同一个含义的字段使用不同的数据类型连接,这样也会导致可能的性能问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5716727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存