MySQL中常见数据类型及其用途
发布时间: 2024-04-30 15:45:02 阅读量: 94 订阅数: 97
![MySQL中常见数据类型及其用途](https://img-blog.csdnimg.cn/direct/cfc1debb841b41b3ba9f7950b9158022.png)
# 1. MySQL数据类型概述
MySQL数据库提供了丰富的数据类型,以满足不同数据的存储和处理需求。这些数据类型可以分为以下几大类:
- 数值类型:用于存储数字数据,包括整数和浮点数。
- 字符串类型:用于存储文本数据,包括定长字符串和变长字符串。
- 时间和日期类型:用于存储时间和日期信息。
- 特殊类型:用于存储特定类型的数据,如枚举类型和集合类型。
# 2. 数值类型
### 2.1 整数类型
#### 2.1.1 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
MySQL 提供了多种整数类型,包括 TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT。这些类型主要用于存储整数数据,其主要区别在于取值范围和存储空间。
| 数据类型 | 取值范围 | 存储空间 |
|---|---|---|
| TINYINT | -128 ~ 127 | 1 字节 |
| SMALLINT | -32768 ~ 32767 | 2 字节 |
| MEDIUMINT | -8388608 ~ 8388607 | 3 字节 |
| INT | -2147483648 ~ 2147483647 | 4 字节 |
| BIGINT | -9223372036854775808 ~ 9223372036854775807 | 8 字节 |
#### 2.1.2 无符号整数类型
MySQL 还提供了无符号整数类型,包括 UNSIGNED TINYINT、UNSIGNED SMALLINT、UNSIGNED MEDIUMINT、UNSIGNED INT 和 UNSIGNED BIGINT。这些类型与有符号整数类型类似,但只允许存储非负整数,从而扩大了取值范围。
| 数据类型 | 取值范围 | 存储空间 |
|---|---|---|
| UNSIGNED TINYINT | 0 ~ 255 | 1 字节 |
| UNSIGNED SMALLINT | 0 ~ 65535 | 2 字节 |
| UNSIGNED MEDIUMINT | 0 ~ 16777215 | 3 字节 |
| UNSIGNED INT | 0 ~ 4294967295 | 4 字节 |
| UNSIGNED BIGINT | 0 ~ 18446744073709551615 | 8 字节 |
### 2.2 浮点数类型
#### 2.2.1 FLOAT、DOUBLE、DECIMAL
MySQL 提供了三种浮点数类型:FLOAT、DOUBLE 和 DECIMAL。这些类型用于存储小数或实数。
| 数据类型 | 精度 | 存储空间 |
|---|---|---|
| FLOAT | 23 位有效数字 | 4 字节 |
| DOUBLE | 52 位有效数字 | 8 字节 |
| DECIMAL | 可指定精度和范围 | 可变 |
DECIMAL 类型允许用户指定精度(小数位数)和范围(最大值和最小值),从而提供更高的精度和控制。
#### 2.2.2 精度和范围
浮点数类型的精度和范围是重要的考虑因素。精度是指小数点后有效数字的位数,而范围是指该类型所能表示的最小值和最大值。
FLOAT 和 DOUBLE 类型的精度是固定的,分别为 23 位和 52 位。DECIMAL 类型的精度和范围可以由用户指定,这提供了更大的灵活性。
```sql
CREATE TABLE test_table (
salary DECIMAL(10, 2)
);
```
在上面的示例中,salary 列的类型为 DECIMAL(10, 2),这意味着它可以存储最多 10 位数字,其中 2 位是小数位。
# 3. 字符串类型
字符串类型用于存储文本数据,是 MySQL 中最常用的数据类型之一。MySQL 提供了多种字符串类型,包括定长字符串类型和变长字符串类型。
### 3.1 定长字符串类型
定长字符串类型在创建时指定固定长度,并且始终占用该长度的存储空间,即使实际存储的数据少于指定长度。定长字符串类型包括 CHAR 和 VARCHAR。
#### 3.1.1 CHAR 和 VARCHAR
**CHAR**:CHAR 类型用于存储固定长度的字符串,其长度在创建表时指定。CHAR 值始终使用指定长度的空格填充,以确保所有 CHAR 值具有相同的长度。
**VARCHAR**:VARCHAR 类型用于存储可变长度的字符串,其长度也在创建表时指定。VARCHAR 值仅使用实际存储数据的长度,因
0
0