第三章 MySQL 核心基础
11040
画布
|大纲
内容详情
一、数据类型
数值类型
- 整数
- TINYINT(1字节)
- SMALLINT(2字节)
- INT(4字节)
- BIGINT(8字节)
- 浮点
- FLOAT(单精度,存在精度丢失)
- DOUBLE(双精度,存在精度丢失)
- 定点
- DECIMAL(精确小数,适用于金额等场景)
- 位类型
- BIT(存储0或1的位值)
日期时间类型
- 基础类型
- DATE(仅日期)
- TIME(仅时间)
- YEAR(年份)
- 复合类型
- DATETIME(无时区支持,范围:1000-9999年)
- TIMESTAMP(带有时区转换,受2038年问题限制)
字符串类型
- 定长与变长
- CHAR(定长字符串,查询速度快)
- VARCHAR(变长字符串,节省存储空间)
- 大对象类型
- TEXT系列(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT,用于大文本)
- BLOB系列(用于存储二进制数据如图片、文件)
- 枚举与集合
- ENUM(枚举类型,仅允许预定义单值)
- SET(集合类型,允许多个预定义值组合)
二、表约束
DEFAULT 默认值
- 未显式赋值时自动填充指定值
NOT NULL 非空
- 禁止字段值为NULL
UNIQUE 唯一
- 字段值不可重复,允许多个NULL值(因NULL不参与比较)
PRIMARY KEY 主键
- 同时具备非空与唯一性,每表仅可定义一个
三、自动增长
关键字
- AUTO_INCREMENT(用于自动生成递增值)
条件
- 必须为整数类型,且为主键或唯一键
特点
- 起始值默认为1,删除记录后ID不回退
用途
- 自动生成ID、订单编号等唯一标识
四、字符集与校对集
字符集
- 常见类型
- latin1(仅支持西欧字符,不支持中文)
- gbk(支持中文,但非国际标准)
- utf8mb4(完整UTF-8实现,支持emoji,推荐使用)
校对集
- 比较规则
- _ci(case-insensitive,不区分大小写)
- _bin(binary comparison,按字节比较,区分大小写)
优先级
- 字段 > 表 > 数据库 > 服务器(逐级覆盖)
乱码解决
- 全链路统一采用utf8mb4字符集
五、综合应用
设计原则
- 规范化与反规范化平衡
类型选择
- 根据业务需求选择最合适的字段类型
约束搭配
- 结合DEFAULT、NOT NULL、UNIQUE等提升数据完整性
建表示例
- 包含字段定义、约束、字符集及AUTO_INCREMENT的完整CREATE TABLE语句
