MySQL(07)—常见的数据类型
常见的数据类型
1. 数值类型
1.1 整型
| 整数类型 | 字节 | 范围 |
|---|---|---|
| Tinyint | 1 | 有符号:-128 |
| Smallint | 2 | 有符号:-32768 |
| Mediumint | 3 | 有符号:-8388608 |
| Int、integer | 4 | 有符号:- 2147483648 |
| Bigint | 8 | 有符号: -9223372036854775808 无符号:0 |
1.2 小数
| 浮点数类型 | 字节 | 范围 |
|---|---|---|
| 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 决定 |
1.3 位类型
| 位类型 | 字节 | 范围 |
|---|---|---|
| Bit(M) | 1~8 | Bit(1)~bit(8) |
2. 字符类型
2.1 char和varchar类型
说明:用来保存MySQL中比较短的字符串
| 字符串类型 | 最多字符数 | 描述以及存储需求 |
|---|---|---|
| char(M) | M | M为0-255之间的整数 |
| varchar(M) | M | M为0-65535之间的整数 |
2.2 binary和varbinary类型
说明:类似于char和varvchar,不同的是他们包含二进制字符串而不包括非二进制字符串
2.3 Enum类型
说明:又称为枚举类型,要求插入的值必须属于列表中指定的值之一
如果列表成员为1-255,则需要1字节存储
如果列表成员为25-65535,则需要2字节存储,最多需要65535个成员!
2.4 Set类型
说明:和Enum类型相似,里面可以保存0-64个成员。和Enum类型最大的区别是:SET类型一次可以选取多个成员,而Enum只能选一个,根据成员个数不同,存储所占字节也不相同
| 成员数 | 字节数 |
|---|---|
| 1-8 | 1 |
| 9-16 | 2 |
| 17-24 | 3 |
| 25-32 | 4 |
| 33-64 | 8 |
3. 日期类型
| 日期和时间类型 | 字节 | 最小值 | 最大值 |
|---|---|---|---|
| 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 |
- Timestamp支持的时间范围较小,取值范围: 19700101080001——2038年的某个时间 Datetime的取值范围:1000-1-1 ——9999—12-31
- timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
- timestamp的属性受Mysql版本和SQLMode的影响很大