mysql数据类型
Posted _小溢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据类型相关的知识,希望对你有一定的参考价值。
1.mysql支持多种数据类型,大致可以分为四类:数值(int等等)、字符串类型(varchar、char)、日期/时间(date、time等等)和其他类型。
(1)二进制类型:
bit[ (m) ]
二进制位(101001),m表示二进制位的长度(1-64),默认m=1,则默认表示1个bit位,一个0或1。
(2)
整数类型(一般用来存储年龄、等级、id、各种号码等):
tinyint[ (m) ] [unsigned] [zerofill]
tinyint最小的整数类型
有符号存储数值范围为:-128 ~ 127
无符号存储数值范围为:255
特别的:MySQL中无布尔值,使用tinyint(1)构造
int[ (m) ] [unsigned] [zerofill]
整数
有符号存储数值范围为:-2147483648 ~ 2147483647
无符号存储数值范围为:4294967295
bigint[ (m) ] [unsigned] [zerofill]
大整数
有符号存储数值范围为:-9223372036854775808 ~ 9223372036854775807
无符号存储数值范围为:1867446744073709551615
(3)小数型:
decimal [(m[, d])] [unsigned] [zerofill]
准确的小数值,m是数字总个数(负号不算),d是小数点后个数。m最大值为65,d最大值为30。
特别的:对于精确数值计算时需要用此类型
decimal能够存储精确值的原因在于其内部按照字符串存储
FLOAT[(m[, d])] [unsigned] [zerofill]
单精度浮点数(非准确小数值),m是数字总个数,d是小数点后总个数
特表的:数值越大,越不准确
DOUBLE[(m[, d])] [unsigned] [zerofill]
双精度浮点数(非准确性小数值),m是数字总个数,d是小数点后总个数
特表的:数值越大,越不准确
(4)字符型
char(m)
char数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中m代表字符串的长度。
PS:即使数据小于m长度,也会占用m长度,但是在查询时,查出的结果会自动删除尾部的空格。
特定:定长、简单粗暴、浪费空间、存储速度快
varchar(m)
varchar数据类型用于变长的字符串,可以包含最多达65535个字符(理论上可以,但是实际上在超出21845长度后,mysql会自动帮您转换数据类型为文本类型)。
其中m代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。
PS:varchar类型存储数据的真实内容,例如:如果\'ab \',尾部的空格也会被存起来
强调:varchar类型会在真实数据前加1-2Byte的前缀,该前缀用来表示真实数据的byte字节数(1-2Byte最大表示65535个数字,正好符合mysql对row的最大字节限制,即已经足够用)
特点:变长、精准、节省空间、存储速度慢
sql优化:创建表时,定长的类型往前方,变长的往后放
PS:虽然varchar使用起来比较灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的百分之50。
因此,用户在设计数据库时应当综合考虑各方面因素,以求达到最佳的平衡。
text:
text数据类型用于保存变长的大字符串,可以最多到65535字符
(5)枚举类型(了解)与集合类型(了解)
枚举类型,存储的数据必须是规定的几个值
(6)日期时间
更详细的可参考菜鸟教程或mysql官网
以上是关于mysql数据类型的主要内容,如果未能解决你的问题,请参考以下文章