分类
数值类型
分类 | 类型 | 大小 | 有符号 (SIGNED) 范围 | 无符号 (UNSIGNED) 范围 | 描述 |
---|
数值类型 | TINYINT | 1 byte | (-128, 127) | (0, 255) | 小整数值 |
| SMALLINT | 2 bytes | (-32768, 32767) | (0, 65535) | 大整数值 |
| MEDIUMINT | 3 bytes | (-8388608, 8388607) | (0, 16777215) | 大整数值 |
| INT或INTEGER | 4 bytes | (-2147483648, 2147483647) | (0, 4294967295) | 大整数值 |
| BIGINT | 8 bytes | (-2^63, 2^63-1) | (0, 2^64-1) | 极大整数值 |
| FLOAT | 4 bytes | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和 (1.175494351 E-38, 3.402823466 E+38) | 单精度浮点数值 |
| DOUBLE | 8 bytes | (-1.7976931348623157 E+308, 1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308) | 双精度浮点数值 |
| DECIMAL | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值 (精确定点数) | 常用于金额 |
字符串类型
分类 | 类型 | 大小 | 描述 |
---|
字符串类型 | CHAR | 0-255 bytes | 定长字符串 (如: char(10)) 性能好,适用于用户名 |
| VARCHAR | 0-65535 bytes | 变长字符串 (如: varchar(10)) 性能较差,适用于性别 |
| TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
| TEXT | 0-65 535 bytes | 长文本数据 |
| MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
| MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
| LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
| LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
日期类型
分类 | 类型 | 大小 | 范围 | 格式 | 描述 |
---|
日期类型 | DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
| TIME | 3 | -838:59:59 至 838:59:59 | HH:MM | 时间值或持续时间 |
| YEAR | 1 | 1901 至 2155 | YYYY | 年份值 |
| DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM | 混合日期和时间值 |
| TIMESTAMP | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM | 混合日期和时间值,时间戳 |
位字段类型
分类 | 类型 | 大小 | 描述 |
---|
位字段类型 | BIT | 1-8 bytes | 位字段类型 |
JSON类型
分类 | 类型 | 大小 | 描述 |
---|
JSON类型 | JSON | 可变 | JSON类型 |
空间数据类型
分类 | 类型 | 大小 | 描述 |
---|
空间数据类型 | GEOMETRY | 可变 | 几何类型 |
| POINT | 16 bytes | 点类型 |
| LINESTRING | 可变 | 线类型 |
| POLYGON | 可变 | 多边形类型 |
集合类型
分类 | 类型 | 描述 |
---|
集合类型 | ENUM | 枚举类型 |
| SET | 集合类型,字符串对象可以有0个或多个值 |
布尔类型
分类 | 类型 | 描述 |
---|
布尔类型 | BOOLEAN | 布尔类型(TINYINT(1)) |
举例说明
CREATE TABLE example_table (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增,无符号整数',
name VARCHAR(50) NOT NULL COMMENT '变长字符串,最大长度50',
age TINYINT SIGNED COMMENT '小整数值,有符号类型',
height FLOAT COMMENT '单精度浮点数值',
salary DECIMAL(10, 2) COMMENT '小数值,精度为10,小数点后有2位',
birth_date DATE COMMENT '日期值',
appointment_time TIME COMMENT '时间值',
created_at DATETIME COMMENT '混合日期和时间值',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '时间戳,默认当前时间,更新时自动更新',
is_active BOOLEAN COMMENT '布尔类型',
profile TEXT COMMENT '长文本数据',
avatar BLOB COMMENT '二进制形式的长文本数据',
preferences JSON COMMENT 'JSON类型',
location POINT COMMENT '空间数据类型的点类型',
status ENUM('active', 'inactive', 'pending') COMMENT '枚举类型,有三种可能值',
roles SET('admin', 'editor', 'viewer') COMMENT '集合类型,可包含多个角色'
);
- id: 主键,自增,无符号整数。
- name: 变长字符串,最大长度50。
- age: 小整数值,有符号类型。
- height: 单精度浮点数值。
- salary: 小数值,精度为10,小数点后有2位。
- birth_date: 日期值。
- appointment_time: 时间值。
- created_at: 混合日期和时间值。
- updated_at: 时间戳,默认当前时间,更新时自动更新。
- is_active: 布尔类型。
- profile: 长文本数据。
- avatar: 二进制形式的长文本数据。
- preferences: JSON类型。
- location: 空间数据类型的点类型。
- status: 枚举类型,有'active', 'inactive', 'pending'三种可能的值。
- roles: 集合类型,可以包含'admin', 'editor', 'viewer'中的一个或多个值。