MySQL数据类型
1.整数类型
整数类型 | 字节数 | 无符合数的取值范围 | 有符合数的取值范围 |
---|
tinyint | 1 | 0~255 | -128~127 |
smallint | 2 | 0~65535 | -32768~32767 |
mediumint | 3 | 0~16777215 | -8388608~8838607 |
int | 4 | 0~4294967295 | -2147483648~2147483647 |
integer | 4 | 0~4294967295 | -2147483648~2147483647 |
bigint | 8 | 0~18446744073709551615 | -9223372036854775808~ 9223372036854775807 |
整数类型的默认显示宽度
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020022920072946.png)
如何选择数据类型
- TINYINT类型的取值范围为0~255,如果字段最大值不超过255,那选择TINYINT类型就够了。BIGINT类型的取值范围最大。
- 最常用的整数类型是INT类型。
2.浮点数类型和定点数类型
类型 | 字节数 | 负数的取值范围 | 非负数的取值范围 |
---|
float | 4 | -3.402823466E~-1.175494351E-38 | 0和1.175494351E-38~3.402823466E+38 |
double | 8 | -1.7976931348623157E+308~-2.2250738585072014E-308 | 0和2.2250738585072014E-308~1.7976931348623157E+308 |
decimal(M,D)或DEC(M,D) | M+2 | 同double型 | 同double型 |
DECIMAL的有效取值范围由M和D决定,字节数是M+2,定点数的存储空间是根据其精度决定的。
如何选择数据类型
- 对于浮点数与定点数,当插入值的精度高于实际定义的精度时,系统会自动进行四舍五入处理。
- FLOAT型和DOUBLE型默认会保存实际精度。
- DECIMAL型默认整数位为10,小数位为0,即默认为整数。
- MySQL中,定点数精度比浮点数要高。如果要求对数据的精度要求比较高时,应该选择定点数。
3.日期与时间类型
类型 | 字节数 | 取值范围 | 零值 |
---|
year | 1 | 1901~2155 | 0000 |
date | 4 | 1000-01-01~9999-12-31 | 0000:00:00 |
time | 3 | -838:59:59~838:59:59 | 00:00:00 |
datetime | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 | 0000-00-00 00:00:00 |
timestamp | 4 | 19700101080001~20380119111407 | 00000000000000 |
- 使用year类型中,要区分0和‘0’,插入0,存入该字段的年份是0000,插入‘0’,存入的年份是2000。
- time类型以HH:MM:SS 【时:分:秒】的形式显示。
- date类型以YYYY-MM-DD【年-月-日】的形式显示。
- datetime类型以‘YYYY-MM-DD HH:MM:SS’的形式显示。
- timestamp类型与datetime的类型显示的格式是一样的。timestamp类型范围比较小,没有datetime类型的范围大。
如何选择数据类型
- TIME 类型专门用来存储时间数据,而且只占3个字节,如果只需记录时间,选择TIME 类型最合适。
- DATE类型只表示日期,如果只记录日期,选择DATE类型最合适。
- DATETIME类型用于记录日期和时间,如果需要同时记录日期和时间,选择DATETIME类型。
- TIMESTAMP类型的时间是根据时区来显示,如果需要显示的时间与时区对应,那就应该选择TIMESTAMP类型。
4.字符串类型
- CHAR类型与VARCHAR类型
CHAR类型的长度是固定的,在创建表示就指定了。其长度可以是0~255的任意值。
VARCHAR类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取0~
如何选择数据类型
- CHAR类型与VARCHAR类型
- CHAR类型的长度是固定的,VARCHAR类型的长度是在范围内可变的。VARCHAR类型占用的空间比CHAR类型小。
- 对于长度变化比较大的字符串类型,最好选择VARCHAR。
- CHAR类型的处理速度比VARCHAR 快,对于长度变化不大和查询速度要求较高的字符串类型,最好选择CHAR类型。
- 例:varchar(10) ----->1~10之间变化,根据存储数据计算所占字符大小–>开辟空间–>存放数据;
char(10):指定表时就会给属性开辟10个字符的空间。
5.二进制类型
类型 | 取值范围 |
---|
binary(M) | 字节数为M,允许长度为0~M的定长二进制字符串 |
varbinary(M) | 允许长度为0~M的变长二进制字符串,字节数为值的长度加1 |
bit(M) | M位二进制数据,M最大值为64 |
tinyblob | 可变长二进制数据,最多255个字节 |
blob | 可变长二进制数据,最多(2^16-1)个字节 |
mediumblob | 可变长二进制数据,最多(2^24-1)个字节 |
longblob | 可变长二进制数据,最多(2^32-1)个字节 |
如何选择数据类型
- 如果主要用来存储图片、PDF文档等二进制的数据,选择 BLOB类型。