一、考点
1、MySQL数据类型
① 整型类型
TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
- 属性:UNSIGNED(以上的类型,都可以配合 UNSIGNED 来使用,变成非负数。)
- 长度:可以为整数类型指定宽度,例如:INT(11)、对大多数应用是没有意义的,它不会限制值得合法范围,只会影响 显示字符的个数。
int(3) : 代表如果存入的是 12,则会补个0,即012,
int(5) : 代表如果存入的是 12,则会补3个0,即00012,
注:此处的数字代表的是宽度。
② 实数类型
FLOAT、DOUBLE、DECIMAL
- DECIMAL 可存储比 BIGINT还大的整数;可以用于存储精确的小数;
- FLOAT 和 DOUBLE 类型支持使用标准的浮点进行近似计算。
③ 字符串类型
- VARCHAR
- VARCHAR 类型用于存储可变长字符串,它比定长类型更节省空间;
- VARCHAR 使用1或2个额外字节记录字符串的长度,列长度小于255字节,使用1个字节表示,否则用2个;
- VARCHAR 长度,如果存储内容超出指定长度,会被截断;
- CHAR
- CHAR 是定长的,根据定义的字符串长度分配足够的空间;
- CHAR 会根据需要采用空格进行填充以方便比较;
- CHAR 适合存储很短的字符串,或者所有值都接近同一个长度;
- CHAR 长度,超出设定的长度,会被截断;
- 对于经常变更的数据来说,CHAR 比 VARCHAR更好,CHAR不容易产生碎片;
- 对于非常短的列,CHAR 比 VARCHAR 在存储空间上更有效率;
- 只分配真正需要的空间,更长的列会消耗更多的内容;
- 尽量避免使用BLOB/TEXT类型,查询会使用临时表,导致严重的性能开销。
④ 枚举
- 有时可以使用枚举代替常用的字符串类型;
- 把不重复的集合存储成一个预定义的集合(如:定义性别,用 enum,enum(‘男’,‘女’));
- 非常紧凑,把列表值压缩到一个或两个字节;
- 内部存储的是整数(如:enum