MySQL中行代表一条完整记录,列定义数据属性和类型;表是行列构成的二维结构,行存储适合OLTP但分析场景效率低。

在 MySQL 中,行和列是构成表的最基本单位,直接对应现实世界中“一条记录”和“一个属性”的关系。
行(Row):代表一条完整记录
行也叫记录(Record),表示表中某个具体对象的全部信息。比如学生表里的一行,就对应一个真实的学生——包含他的学号、姓名、年龄、班级等所有字段的值。
- 每行数据是独立的,彼此之间不共享内容
- 插入、更新、删除操作通常以行为单位进行
- 主键的作用就是唯一标识某一行,避免重复或混淆
列(Column):定义数据的属性和类型
列也叫字段(Field),是表的结构设计部分,规定了每一类信息的名称、格式和约束。比如“姓名”列只允许存字符串,“出生日期”列必须是 DATE 类型,“成绩”列限定为 0–100 的整数。
- 同一列的所有值属于相同数据类型,便于校验和索引
- 列名在表内必须唯一,但不同表可以重名(如多个表都有 id 列)
- 建表时定义列,后续修改需用 ALTER TABLE,不能随意增删
行和列共同构成二维表结构
MySQL 表本质上是一个逻辑上的二维表格:横向是行(实例),纵向是列(定义)。这种结构让数据既容易理解,又方便用 SQL 精准操作。
- SELECT * FROM student 返回所有行和所有列
- SELECT name, age FROM student 只取指定列,减少传输和计算开销
- WHERE 条件过滤的是行,ORDER BY 和 GROUP BY 依赖列的值做排序或分组
注意:行存储是 MySQL 的默认方式
MySQL 按行把整条记录连续写入磁盘(如 id/name/age 存在一起)。这意味着查单条记录快,但只查几个字段时,仍要读整行——这是理解性能瓶颈的关键。
- 适合 OLTP 场景:频繁增删改、查整条业务记录(如用户登录、订单提交)
- 不适合纯分析场景:比如只统计百万行的“价格”平均值,行存储会多读大量无关字段
- 这类需求通常交给列式数据库(如 ClickHouse)或加索引、分区优化










