1. 字段(列)定义
字段名:每个列都有唯一的名称,用于标识该列的数据。例如:
id、
name、
age。
数据类型:指定该列可以存储的数据种类,常见的有:
整数类型:INT、
TINYINT、
BIGINT浮点数:
FLOAT、
DOUBLE、
DECIMAL字符串:
VARCHAR(n)、
CHAR(n)、
TEXT日期时间:
DATETIME、
DATE、
TIMESTAMP二进制:
BLOB、
BINARY
例如:
name VARCHAR(50)表示最大长度为50的可变字符串。
2. 约束条件
约束用于保证数据的完整性和一致性,常见约束包括:
主键约束(PRIMARY KEY):唯一标识每一行记录,不允许重复且不能为NULL。常用于id字段。 非空约束(NOT NULL):该字段必须有值,不能插入NULL。 唯一约束(UNIQUE):确保该字段的值在表中唯一,但允许NULL(视具体实现而定)。 默认值(DEFAULT):当未提供值时,自动填充默认值,如
status TINYINT DEFAULT 1。 外键约束(FOREIGN KEY):建立表与表之间的关联,确保引用的数据存在于另一张表的主键中。
3. 索引(Index)
索引用于加快查询速度,尤其是对频繁查询的字段。常见的索引类型有:
普通索引(INDEX):最基本的索引,无限制。 唯一索引(UNIQUE INDEX):索引列的值必须唯一。 主键索引:主键自动创建的唯一索引。 全文索引(FULLTEXT):适用于文本内容的关键词搜索。例如:
CREATE INDEX idx_name ON users(name);
4. 存储引擎
MySQL支持多种存储引擎,最常用的是:
InnoDB:支持事务、外键、行级锁,适合高并发场景。 MyISAM:不支持事务,但查询速度快,适合读多写少的应用。建表时可通过
ENGINE=InnoDB指定。
5. 字符集与排序规则
字符集(CHARACTER SET):决定字段支持哪些字符,如
utf8mb4支持中文和emoji。
排序规则(COLLATE):定义字符比较和排序方式,如
utf8mb4_unicode_ci表示不区分大小写的排序。
可在表或字段级别设置,例如:
name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci。
6. 自动增长(AUTO_INCREMENT)
通常用于主键,使数值型字段在插入新记录时自动递增。例如:
id INT PRIMARY KEY AUTO_INCREMENT
基本上就这些。设计良好的表结构能提升性能、减少冗余,并保障数据准确。实际建表时建议结合业务需求合理选择字段类型、添加必要索引和约束。不复杂但容易忽略细节。
