定长与变长
字符型
| 编码 | 单个字符(数字,字母,符号,汉字),占用字节数 |
|---|---|
| UTF8 | 3 |
| GBK | 2 |
| 类型名称 | 存储范围(字符编码只会影响数据用什么多少个字节存储) |
|---|---|
| char | 0-255个字符 |
| varchar | 理论上是65535字节,超过255字个符,建议使用text |
| text | 不可以指定存诸长度 |
- char与varchar的区别
- char是定长,varchar是变长
- char在存储数据长度小于指定存储范围的情况下,会在数据右边填充空格,读取数据时会自动删除,那就是说存char的情况下,字符串末尾空格会被删除掉
- VARCHAR比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’
整数型(没有小数点)
| 整数类型 | 无符号 | 有符号 | 列宽 | 字节 |
|---|---|---|---|---|
| int | 0~42亿 | -21亿~21亿 | 10 | 4 |
| mediumint | 0~1600万 | -800万~800万 | 8 or 7 | 3 |
| tinyint | 0~255 | -128~127 | 3 | 1 |
- 整数型的列宽作用
- 整型数据的列宽度主要是为了配合自动填充0使用,控制数据格式(0001)
浮点型和定点型
| 浮点类型 | 整数有效位 | 小数点有效位 | 字节 |
|---|---|---|---|
| decimal | 35 | 30 | 不固定,根据指定范围而变化 |
- 注意(不使用float和double)
- decimal 小数位超过30位会4舍5入,会丢失精度,并且会进位(会影响到整数部分)
- float 7个有效位 有效位(小数和整数相加),超过有效位数4舍5入
- double 15个有效位 有效位(小数和整数相加),超过有效位数4舍5入