mysql 列类型概述
1.数值类型
(1)整型
int系列的数值类型声明时的参数包括 unsigned 、(M)、zerofill
- unsigned 表示无符号,即只有正数
- (M)指定整数值的显示宽度。当和zerofill 配合使用时,表示零填充的位数
- zerofill 表示零填充,默认补充的空格用零代替。如果为一个数值列指定zerofill,MySQL自动为该列添加unsigned属性,因为负数一般不需要零填充。
(2)小数型
浮点型系列的数值类型声明时的参数包括 float(M,D)、decimal(M,D)
- M叫精度,代表总位数(包括小数点前后所有的位数)
- D叫标度,代表小数位(小数点后面的位数)
- 当M<24,M占4个字节,否则占8个字节
- decimal 同样用来表示小数,他叫定点,是把整数和小数分开存储的,比float更精确
2.字符串类型
这里主要分析 char varchar text blob
- char(M) 是定长字符串,其中M表示列长度,取值范围为0~255,对于定长M来说,无论它是否占满M,都会用空格补齐(取数据时再将空格删掉),因此存在数据丢失风险,即如果数据右侧有空格,则取出时不会将空格取出。同时,由于它是定长,查询记录时可以很快确定偏移量,因此效率较高。
- varchar(M) 是变长字符串,M表示最大列长度,取值范围为0~65535,它不存在用空格填充,字符串本身多大,它就占多大的长度。为了缩短查询的时间,它存储时用一个或两个字节的前缀,表示当前字符串的长度,当M>255时,字节前缀为2个字节,否则为一个字节,vachar速率不及char。
- text 是文本类型,存储较大的文本段,查询搜索速度较慢,声明text列时,不必给默认值。
- blob (Binary Large Object) 是二进制类型,它就是使用二进制保存数据,用来存储图像、音频等二进制信息。
3.日期和时间类型
类型 | 字节数 | 说明 | 标准格式 |
YEAR |
1 | 年份 | YYYY |
DATE |
3 | 日期 | YYYY-MM-DD |
TIME |
3 | 时间 | HH:MM:SS |
TIMESTAMP |
4 | 时间戳 |
00000000000000 |
DATETIME |
8 | 日期时间 | YYYY-MM-DD HH:MM:SS |
注:TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。
只有将其默认值定义为CURRENT_TIMESTAMP,该列才可以自动更新时间,
例: