且聊字符与整型类型
1、概述
大家好,我是欧阳方超。
今天介绍一下MySQL中的字符与整型类型。
2、字符类型
2.1、字符类型概览
MySQL中有三种字段类型可用于保存字符类型的数据,分别是char、varchar、text,在数据量非常大时,这三种类型的字段在处理数据的时长上可能会有所差异。
- char类型,固定长度,在存、取时速度是最快的,但是可能会造成存储空间的浪费。
- varchar,变长字符串,在存、取数据时比char稍慢,但是不会浪费存储空间,
- text是一种用于存储较长文本数据的数据类型,将数据存储在一个单独的区域中,并将指向该区域的指针存储在数据表中,因此与char和varchar类型相比会需要更多的存储空间及I/O,该类型字段通常用来存长文本,如产品详细描述、博客文章。
2.2、详解
当保存char值时,在它们的右边填充空格以达到指定的长度。当检索char值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。CHAR存储定长数据很方便,CHAR字段上的索引效率较高。比如定义char(5),当实际存储的字符不足5个时,将在右侧补以空格,并且这些空格在检索时会被删掉,当然如果字符长度超过定义时的长度时,会报错:Data too long for column xxx。
当保存varchar类型的值时,表示存储的是可变长的字符串,实际存储时如果不足定义的长度也不会补以空格,如果字符末尾本身就有空格则将原样保存,并且在检索时也会保留,比如varchar(5)的含义为可以存储的最大字符串长度为5个字符,并且字符是变长的,如果不满5个就根据实际存储的字节来确定,即存储空间为0~5个字符。
text 类型无须指定长度,不能有默认值,text 类型检索效率比 varchar 要低。
2.3、对比char、varchar与text
当我们不确定所存储的字符的长度,但是知道它的长度上限时,可以选择varchar类型进行存储,从节省空间的角度考虑使用varchar较合适,从效率的角度考虑使用char较合适,在实际使用过程中关键在于找到平衡点,text 类型检索效率比 varchar 要低,因此在检索效率上char > varchar > text。
3、整型类型
上面介绍了下字符类型,下面说下整型类型,MySQL中的整型类型可以细分为如下几类:
类型 | 存储时占用的字节数 | (有符号)最小值 | (有符号)最大值 | (无符号)最小值 | (无符号)最大值 |
---|---|---|---|---|---|
TINYINT | 1 | -128 | 127 | 0 | 255 |
SMALLINT | 2 | -32768 | 32767 | 0 | 65535 |
MEDIUMINT | 3 | -8388608 | 8388607 | 0 | 16777215 |
INT | 4 | -2147483648 | 2147483647 | 0 | 4294967295 |
BIGINT | 4 | -9223372036854775808 | 9223372036854775807 | 0 | 18446744073709551615 |
SQL的这些整型类型,是定长的,其存储数据的大小是不会随着后面的数字而变化的(注意,这与字符类型的可不一样),比如int(4)与int(8)都是占用四个字节,它们所能存储的数据最大值是一样的。
那整型后跟的数字有什么作用?
对于整型类型括号中的数字称为字段的显示宽度。其实当列设置为UNSIGNED ZEROFILL时,括号中的数字才有意义,其表示的意思是如果要存储的数字少于11个字符,则这些数字将在左侧补零。注意,ZEROFILL默认的列为无符号,因此不能存储负数。
4、总结
介绍了MySQL的字符与整型,需要注意的是字符类型括号中的长度与整型括号中的长度含义并不一样。
我是欧阳方超,把事情做好了自然就有兴趣了,如果你喜欢我的文章,欢迎点赞、转发、评论加关注。我们下次见。