FORMA

MySQL 基础概念

MySQL 是目前最流行的开源关系型数据库管理系统之一。学习路径见 数据存储导读。广泛应用于 Web 应用、企业系统和大数据领域。理解其基础概念是掌握数据库开发的第一步。

一、什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。简单来说,就像电子化的文件柜,专门用于保存大量结构化信息,并支持高效的增、删、改、查操作。

与 Excel 等文件不同,数据库具有以下特点:

  • 持久化存储:数据长期保存在磁盘中,不因程序关闭而丢失。
  • 并发访问:允许多个用户或应用同时读写数据,并提供事务隔离保证。
  • 安全性:提供用户权限控制、备份恢复等机制。
  • 减少冗余:通过规范化的设计,避免数据重复存储。

二、关系型数据库

关系型数据库(Relational Database)是目前应用最广泛的数据库类型,其核心思想由 IBM 的 E.F. Codd 于 1970 年提出。

基本特征

  • 数据以**二维表(Table)**的形式组织,每个表由行和列构成。
  • 表与表之间通过**关联键(外键)**建立联系,反映现实世界实体间的关联。
  • 支持结构化查询语言(SQL),使用统一的标准操作数据。

为何称为“关系型”? “关系”指的是数学上的集合关系。一张表可以看作一个关系,表中的每一行是关系的一个元组(tuple),列是属性(attribute)。通过关系代数运算(如选择、投影、连接)来操作数据。

常见的关系型数据库

  • 商业:Oracle、SQL Server、DB2
  • 开源:MySQL、PostgreSQL、SQLite

三、MySQL 特点

MySQL 最初由瑞典 MySQL AB 公司开发,后被 Sun 公司收购,现属于 Oracle 旗下。其流行原因包括:

特点说明
开源免费社区版基于 GPL 协议,可自由使用、修改和分发
跨平台支持 Windows、Linux、macOS、FreeBSD 等多种操作系统
高性能通过索引、缓冲池、存储引擎优化(如 InnoDB)实现高吞吐量;MySQL 8.0 已移除查询缓存(Query Cache)
易用性提供命令行工具、图形化管理工具(如 MySQL Workbench),学习曲线平缓
安全性支持 SSL 传输、用户权限分级、加密插件等
扩展性支持主从复制、分库分表、集群方案(如 NDB Cluster)
存储引擎可插拔默认 InnoDB(事务、行锁、外键);其他引擎(如 MEMORY)按场景选用,新项目一般以 InnoDB 为主

四、常用术语详解

1. 数据库(Database)

数据库是表的集合,也是最高级别的存储容器。一个 MySQL 服务器可以管理多个数据库,每个数据库之间相互隔离。
例如:一个电商系统可能包含 user_db(用户库)、order_db(订单库)、product_db(商品库)。

2. 表(Table)

表是数据库中存储数据的核心结构,由**行(记录)列(字段)**组成的二维网格。
例如:用户表 users 可能包含 idnameemailage 等列。

3. 行(Row / Record)

行表示表中的一条具体数据记录。例如用户表里的一行代表一个实际用户:(1, '张三', 'zhangsan@example.com', 25)

4. 列(Column / Field)

列定义了表的一个属性,每个列都有特定的数据类型(如 INTVARCHARDATE),并可以设置约束(如 NOT NULLDEFAULT)。例如 age 列的类型为 INT,表示存储整数年龄。

5. 主键(Primary Key)

主键是表中唯一标识每一行的一列或列的组合。主键的值必须唯一且不能为 NULL。一张表只能有一个主键。
例如用户表的 id 列就是主键,确保每个用户有唯一的编号。

6. 外键(Foreign Key)

外键用于建立表与表之间的关联,它指向另一张表的主键。外键可以保证数据的参照完整性,即外键值必须在被引用表中存在(或为 NULL)。
例如:订单表 orders 中的 user_id 列作为外键,引用用户表的 id,表示每个订单属于某个已存在的用户。

7. 索引(Index)

索引是一种用于加速数据检索的数据库对象,类似于书籍的目录。它基于一列或多列创建,能够大幅提高 SELECT 查询的速度,但会略微降低 INSERTUPDATEDELETE 的性能(因为需要更新索引)。
常见的索引类型:普通索引、唯一索引(UNIQUE)、全文索引(FULLTEXT)、组合索引(多列)。

8. 视图(View)

视图是一个虚拟表,它不实际存储数据,而是保存了一条 SELECT 查询语句。用户可以将复杂的多表关联查询定义为视图,之后像操作普通表一样查询视图,简化代码并隐藏底层表结构。视图也可以实现数据安全(例如只展示某些列)。

sql
CREATE VIEW active_users AS
SELECT id, name FROM users WHERE status = 'active';

9. 存储过程(Stored Procedure)

存储过程是一组预编译的 SQL 语句,存储在数据库中,可以接受参数并返回结果。它类似于编程语言中的函数,能够封装复杂的业务逻辑,减少网络传输,提高执行效率。

sql
DELIMITER //
CREATE PROCEDURE GetUser(IN userId INT)
BEGIN
  SELECT * FROM users WHERE id = userId;
END //
DELIMITER ;

-- 调用
CALL GetUser(100);

存储过程常用于数据校验、批量处理、报表生成等场景。

五、图示:数据库结构层次

text
MySQL Server
├── Database1 (e.g., shop)
│   ├── Table: users
│   │   ├── Columns: id (PK), name, email, ...
│   │   ├── Rows: (1, 'Alice', ...), (2, 'Bob', ...)
│   │   └── Indexes: idx_email
│   ├── Table: orders
│   │   ├── Columns: id (PK), user_id (FK), amount, ...
│   │   └── Rows: (101, 1, 99.9), ...
│   └── Views: v_user_orders
├── Database2 (e.g., blog)
└── ...

六、总结

术语作用
数据库表的集合
数据的二维结构
一条具体记录
一个字段,描述属性
主键唯一标识一行
外键关联其他表
索引加速查询
视图虚拟表,简化查询
存储过程预编译的 SQL 代码块

理解这些基础概念,是学习 SQL 语句、数据库设计以及进一步掌握 MySQL 高级特性(事务、锁、优化等)的前提。建议结合实际建表、查询操作加深印象。

参考文献

Series

mysql

3 / 11