一、整型
1. 有符号整型
类型 字节 范围
TINYINT 1 -27 ~ 27-1
SMALLINT 2
MEDIUMINT 3
INT 4
BIGINT 5
2. 无符号整型:unsigned
3. 支持显示宽度 int(5), 必须结合zerofill使用
二、浮点型
1. 类型
float(单精度) 4字节
double(双精度) 8字节
2. 浮点数声明:float(M, D), double(M, D), 总位数是M,小数位数是D,整数位数为M-D,如果精度超出了小数范围,会四舍五入
3. 浮点数存的是近似数,精度可能丢失。
三、定点数
1. 类型
decimal(M, D), 总位数是M,小数位数是D,整数位数是M-D
2. 定点数是变长的
3. 浮点数和定点数都支持显示宽度和无符号数。
四、字符型
1. 类型
char(长度) 定长 最大255
varchar(长度) 变长 最大65535
tinytext 大段文本 255
text 大段文本 65535
mediumtext 大段文本 224 - 1
longtext 大段文本 232 - 1
2. char和varchar的区别
相同点:它们最多能保留10个字符
不同点:char不回收富余字节,varchar会回收富余字节。char效率高,浪费内存,varchar节省空间,效率比char低。
3. char的最大长度为255,varchar最大长度为65535,实际根本达不到,具体长度和字符编码有关。
4. 一个记录总长度不能超过65535个字节
5. 大块文本不计算在总长度中,一个大块文本只占用10个字节来保存文本的地址。
五、枚举(enum)
1. 从集合中选择一个数据(单选)
2. mysql的枚举类型是通过整数来管理的,第一个值是1,第二个值是2,以此类推。既然枚举类型是数字,那么可以直接插入数字。
3. 枚举的优点:
a. 运行速度快(数字比字符串运行速度快)
b. 限制数据,保证数据完整性
c. 节省空间
六、集合(set)
1. 从集合中选择一些数据(多选)
2. 插入的顺序不一样,但显示的顺序是一样的
3. 插入集合中没有的选项会报错
4. 每个集合的元素都分配一个固定的值,分配的方式从左往右按2的0、1、2 ...次方
5. 如果是多选,它们的关系是按位或
七、日期类型
1. 类型
datetime 日期时间,占用8个字节
date 日期,占用3个字节
time 时间,占用3个字节
timestamp 时间戳,占用4个字节
year 年份,占用一个字节
2. datetime格式:年 - 月 - 日 小时:分钟:秒
八、boolean类型
1. mysql不支持bool类型,true和false在数据库中对应1和0