一、整数型数据类型
| 名称 | 大小(字节数) | 范围(无符号) | 范围(有符号) | 
| TINYINT | 1 | 0-255 | -2^8~2^8-1 | 
| SMALLINT | 2 | 0-65535 | -2^16~2^16-1 | 
| MEDIUMINT | 3 | 0-2^24-1 | -2^24~2^24-1 | 
| INT | 4 | 0-2^32-1 | -2^32~2^32-1 | 
| BIGINT | 8 | 0-2^64-1 | -2^64~2^64-1 | 
二、浮点型数据类型
| 名称 | 大小(字节数) | 正数范围 | 负数范围 | 类型 | 适用场景 | 
| float | 4 | 1.17549435E-38到3.40282347E+38 | -3.40282347E+38到-1.17549435E-38 | 单精度 | 对精度要求不高,需要快速计算。 | 
| double | 8 | 2.22507386E-308到1.79769313E+308 | 
 | 双精度 | 需要更高精度(金融运算、科学运算) | 
| decimal | (M,D) | 取决于M和D | 取决于M和D | 金融型 | 需要精确运算(货币、金融) | 
注意:
在 MySQL 中,DECIMAL(M, D) 是一种定点数类型,用于存储精确的小数值。其中,M 和 D 的含义如下:
M(Precision,精度)
-  含义: M表示数字的总长度,即整数部分和小数部分的总位数(不包括小数点)。
-  范围: M的取值范围是 1 到 65。
D(Scale,小数点后的位数)
-  含义: D表示小数部分的位数。
-  范围: D的取值范围是 0 到 30,且必须小于或等于M。
示例:DECIMAL(10, 2)
在 DECIMAL(10, 2) 中:
-  10是M:表示数字的总长度为 10 位。
-  2是D:表示小数部分有 2 位。
因此,DECIMAL(10, 2) 可以存储的最大值是 99999999.99(整数部分 8 位,小数部分 2 位)。
三、字符型数据类型
| 名称 | 范围(字节) | 类型 | 适用场景 | 
| char | 1-255 | 定长 | 存储固定长度的字符串(如电话、身份证) | 
| varchar | 1-65535 | 变长 | 存储长度不固定的字符串(如地址、用户名) | 
| text | 1-65535 | 变长 | 存储较长的文本数据(如文章、评论) | 
 注意:
 1)当数据为CHAR(M)类型时,不管插入值的长度是实际是多少它所占用的存储空间都是M个字节;而VARCHAR(M)所对应的数据所占用的字节数为实际长度加1。
| 插入值 | CHAR(3) | 存储需求 | VARCHAR(3) | 存储需求 | 
|---|---|---|---|---|
| ‘’ | ‘’ | 3个字节 | ‘’ | 1个字节 | 
| ‘a’ | ‘a’ | 3个字节 | ‘a’ | 2个字节 | 
| ‘ab’ | ‘ab’ | 3个字节 | ‘ab’ | 3个字节 | 
| ‘abc’ | ‘ab’ | 3个字节 | ‘abc’ | 4个字节 | 
| ‘abcd’ | ‘ab’ | 3个字节 | ‘abc’ | 4字节 | 
如char(20),若只存储了10个字符,则在数据库文件有效字符后有10个空白位,若要存储超过20个字符的数据,则会抛出异常。
char比varchar的性能要好一点,因为char类型在获取数据时不需要关心存储字符的个数,而varchar要先计算存储字符的个数。
2)varchar的最大长度受多方影响。varchar最大可存储65535个字节,首位不存储数据,还需要两个字节存储字符的个数,故真实个数为65535-3;varchar还受编码集的影响,如utfmb3=65532/3,utfmb8=65532/4;还受行长度的影响,表中所有列的总长度不能超过65535。
3)不同地区的字符所占字节数
| 地区 | 字节数 | 
| 欧洲、拉丁语 | 1 | 
| 中东国家 | 2 | 
| 东南亚、部分南美洲国家 | 3 | 
| 网络表情文字 | 4 | 
四、日期型数据类型

注意:0时间是1970年1月1日 0:0:0