目录
一,各类型特点
1.1.整数
1.2.实数(带有小数点)
1.3.TEXT、BLOB
时间1.4.日期
1.5.选择标识符
一,各类型特点
1.1.整数
- TINYINT 8位 (-128 - 127)
- SMALLINT 16位 (-32768 - 32767)
- MEDIUMINT 24位 (-8388608 - 8388607)
- INT 32位 大约正负21亿
- BIGINT 64位
- 可以用UNSIGNED修饰,表示无符号型整数,不允许出现负值,大致可以使正数的上限提高一倍
1.2.实数(带有小数点)
- FLOAT 4个字节
- DOUBLE 8个字节
- DECIMAL最多允许65个数字
- 示例:decimal(5,2),说明:5位长度,2位小数精度,如果整数部分+2位小数超长,则报错,如果只是小数部分超出2两位,则四舍五入到两位小数
1.3.字符串
- CHAR
- ·定长,msql根据定义字符串的长度一次分配足够的空间
- 适用场景:较短的字符串,且所有值接近同一长度
- VARCHAR 变长字符串
- 比定长类型节约空间
- 但是ROW_FOMAT=FIXED每行使用定长
- 适用场景:字符串的最大长度比评估长度大很多,列的更新较少
- 缺点:频繁修改,且字符串的长度变化大时,可能出现页分裂
- 不要盲目的给过大的长度
- 在临时表或排序时可能遭遇最大长度分配内存问题
1.3.TEXT、BLOB
- TEXT存储字符数据
- TINYTEXT
- SMALLTEXT
- TEXT
- MEDIUMTEXT
- LONGTEXT
- BLOB存储二进制数据
- TINYBLOB
- SMALLBLOB
- BLOB
- MEDIUMBLOB
时间1.4.日期
- datetime
- 精度:秒
- 与时区无关,8个字节存储空间
- 范围:1001 至 9999 年
- timestamp
- 保存1970年1月1日午夜以来的秒数
- 占用4个字节存储空间
- 范围:1970年 至 2038年
- 与时区有关
- 默认为NOT NULL
- 通常尽量使用timestamp
- 精度:秒
- date
- yyyy-MM-dd
- time
- HH:mm:ss
1.5.选择标识符
- 用来进行关联操作
- 在其他表中作为外键
- 整型通常是标识列的最好选择
- 相关的表中使用相同的数据类型
- 尽量避免字符串作为标识列,尤其是随机生成的字符串,(如:uuid)导致insert与select都很慢
- 插入值被随机写到索引的不同位置,insert慢,容易导致页分裂,磁盘随机读取
- 逻辑上相邻的行被分布在磁盘和内存的不同地方,select慢
- 使mysql查询缓存失效
- 如果需要存储uuid,则应将“-”去除