Mysql - 2数据类型与约束
约 712 字大约 2 分钟
数据类型
数值类型
常见:
- smallint用于存储小的整数,范围在 (-32768,32767)
- int用于存储一般的整数,范围在 (-2147483648,2147483647)
- bigint用于存储大型整数,范围在 (-9,223,372,036,854,775,808,9,223,372,036,854,775,807)
- float用于存储单精度小数
- double用于存储双精度的小数
| 类型 | 字节 | 范围 | 说明 |
|---|---|---|---|
TINYINT | 1 | -128 ~ 127 / 0 ~ 255 | 微小整数 |
SMALLINT | 2 | -32768 ~ 32767 | 小整数 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 中整数 |
INT / INTEGER | 4 | -2147483648 ~ 2147483647 | 整数 |
BIGINT | 8 | -2^63 ~ 2^63-1 | 大整数 |
FLOAT | 4 | 单精度浮点数 | 近似值 |
DOUBLE | 8 | 双精度浮点数 | 近似值 |
DECIMAL(M,D) | 变长 | 精确小数 | M总位数,D小数位数 |
字符串类型
常见:
- char(n)可以存储任意字符串,但是是固定长度为n,如果插入的长度小于定义长度时,则用空格填充。
- varchar(n)也可以存储任意数量字符串,长度不固定,但不能超过n,不会用空格填充。
| 类型 | 最大长度 | 说明 | 使用场景 |
|---|---|---|---|
CHAR(n) | 255 字符 | 定长字符串 | 固定长度数据(如性别、状态码) |
VARCHAR(n) | 65535 字节 | 变长字符串 | 常用字符串(如姓名、邮箱) |
TINYTEXT | 255 字节 | 短文本 | 短文本 |
TEXT | 65535 字节 | 文本 | 文章、评论 |
MEDIUMTEXT | 16MB | 中长文本 | 长文章 |
LONGTEXT | 4GB | 长文本 | 超长文本 |
BLOB | 65535 字节 | 二进制数据 | 图片、文件 |
日期时间类型
| 类型 | 格式 | 范围 | 说明 |
|---|---|---|---|
DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 | 日期 |
TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 时间 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 日期时间 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 | 时间戳(自动更新) |
YEAR | YYYY | 1901 ~ 2155 | 年份 |
约束
用在创建数据表的属性字段定义上以及数据表
列级约束
列级约束有六种:主键Primary key、外键foreign key 、唯一 unique、检查 check (MySQL不支持)、默认default 、非空/空值 not null/ null
| 约束类型 | 关键字 | 说明 | 示例 |
|---|---|---|---|
| 主键约束 | PRIMARY KEY | 唯一标识,不能为空,一个表只能有一个主键 | id INT PRIMARY KEY |
| 非空约束 | NOT NULL | 字段值不能为空 | username VARCHAR(50) NOT NULL |
| 唯一约束 | UNIQUE | 字段值唯一,可以为空 | email VARCHAR(100) UNIQUE |
| 默认约束 | DEFAULT | 字段默认值 | status INT DEFAULT 1 |
| 自动增长 | AUTO_INCREMENT | 自动递增,通常用于主键 | id INT AUTO_INCREMENT |
| 外键约束 | FOREIGN KEY | 引用另一个表的主键 | FOREIGN KEY (user_id) REFERENCES users(id) |
| 检查约束 | CHECK | 限制字段值范围(MySQL 8.0.16+) | age INT CHECK (age >= 0 AND age <= 150) |
表级约束
表级约束有四种:主键、外键、唯一、检查
