之前为大家讲解了一些基础知识,其中也提到了一部分数据类型,今天详细讲解一下mysql中的常见的数据类型。
数值类型
整型
整数类型 | 字节 | 范围 |
Tinyint | 1 | 有符号:-128~127 无符号:0~255 |
Smallint | 2 | 有符号:-32768~32767 无符号:0~65535 |
Mediumint | 3 | 有符号:-8388608~8388607 无符号:0~1677215 |
Int、integer | 4 | 有符号:- 2147483648~2147483647 无符号:0~4294967295 |
Bigint | 8 | 有符号: -9223372036854775808 ~9223372036854775807 无符号:0~ 9223372036854775807*2+1 |
小数
浮点数类型 | 字节 | 范围 |
float | 4 | ±1.75494351E-38~±3.402823466E+38 |
double | 8 | ±2.2250738585072014E-308~ ±1.7976931348623157E+308 |
定点数类型 | 字节 | 范围 |
DEC(M,D) DECIMAL(M,D) | M+2 | 最大取值范围与double相同,给定decimal的有效取值范围由M和D决定 |
位类型
位类型 | 字节 | 范围 |
Bit(M) | 1~8 | Bit(1)~Bit(8) |
字符类型
char和vachar用来保存My SQL中较短的字符
字符串类型 | 最多字符数 | 描述及存储需求 |
char(M) | M | M为0~255之间的整数 |
vachar(M) | M | M为0~65535之间的整数 |
binary和varbinary类型
- 类似于char和varchar,不同的是它们包含二进制字符串而不包含非二 进制字符串。
Enum类型
- 又称为枚举类型,要求插入的值必须属于列表中指定的值之一。
- 如果列表成员为1~255,则需要1个字节存储
- 如果列表成员为255~65535,则需要2个字节存储
- 最多需要65535个成员
Set类型
和Enum类型类似,里面可以保存0~64个成员。和Enum类型最大的区 别是:SET类型一次可以选取多个成员,而Enum只能选一个 根据成员个数不同,存储所占的字节也不同
成员数 | 字节数 |
1~8 | 1 |
9~16 | 2 |
17~24 | 3 |
25~32 | 4 |
33~64 | 8 |
日期类型
日期和时间类型 | 字节 | 最小值 | 最大值 |
date | 4 | 1000-01-01 | 9999-12-31 |
datetime | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
timestamp | 4 | 19700101080001 | 2038年的某个时刻 |
time | 3 | -838:59:59 | 838:59:59 |
year | 1 | 1901 | 2155 |
datetime和timestamp的区别
- Timestamp支持的时间范围小,取值范围:19700101080001——2038年的某个时间
- Datetime的取值范围:1000-1-1 ——9999—12-31
- timestamp和实际时区有关,更能反映实际的日 期,而datetime则只能反映出插入时的当地时区
- timestamp的属性受Mysql版本和SQLMode的影响 很大
本届就介绍到这里,欢迎小伙伴指正补充!