跳至主要內容

Mysql - 2数据类型与约束

code中间件Mysql约 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用于存储双精度的小数
类型字节范围说明
TINYINT1-128 ~ 127 / 0 ~ 255微小整数
SMALLINT2-32768 ~ 32767小整数
MEDIUMINT3-8388608 ~ 8388607中整数
INT / INTEGER4-2147483648 ~ 2147483647整数
BIGINT8-2^63 ~ 2^63-1大整数
FLOAT4单精度浮点数近似值
DOUBLE8双精度浮点数近似值
DECIMAL(M,D)变长精确小数M总位数,D小数位数

字符串类型

常见:

  • char(n)可以存储任意字符串,但是是固定长度为n,如果插入的长度小于定义长度时,则用空格填充。
  • varchar(n)也可以存储任意数量字符串,长度不固定,但不能超过n,不会用空格填充。
类型最大长度说明使用场景
CHAR(n)255 字符定长字符串固定长度数据(如性别、状态码)
VARCHAR(n)65535 字节变长字符串常用字符串(如姓名、邮箱)
TINYTEXT255 字节短文本短文本
TEXT65535 字节文本文章、评论
MEDIUMTEXT16MB中长文本长文章
LONGTEXT4GB长文本超长文本
BLOB65535 字节二进制数据图片、文件

日期时间类型

类型格式范围说明
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-31日期
TIMEHH:MM:SS-838:59:59 ~ 838:59:59时间
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59日期时间
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 ~ 2038-01-19 03:14:07时间戳(自动更新)
YEARYYYY1901 ~ 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)

表级约束

表级约束有四种:主键、外键、唯一、检查

上次编辑于: