Skip to content

MySQL - 简介

数据库是结构化信息或数据的有组织集合,通常以电子方式存储在计算机系统中。数据库通常由数据库管理系统(DBMS)控制。数据、DBMS 以及与之相关的应用程序一起被称为数据库系统,通常简称为数据库。

当今最常见的数据库类型是关系型数据库(Relational Database),它将数据组织成具有行和列的表,并强制执行严格的模式。MySQL 是关系型数据库管理系统(RDBMS)的一个典型示例。它们使用结构化查询语言(SQL)进行数据操作。

近年来,NoSQL(Not Only SQL,意为“不仅仅是 SQL”)数据库因处理大量非结构化或半结构化数据而受到欢迎,为特定用例(例如,大数据、实时 Web 应用程序)提供了更大的灵活性和可伸缩性。然而,对于需要强一致性和复杂结构化查询的应用程序,像 MySQL 这样的 RDBMS 仍然是行业标准。

要理解 MySQL,您必须熟悉以下这些基本的 RDBMS 术语:

  • 数据库(Database):所有相关数据对象(主要是表)的容器。
  • 表(Table):数据库中以结构化格式存储的相关数据集合,由列和行组成。
  • 列(Column)(或字段 Field):表中垂直的实体,包含与行中特定字段相关的所有信息。
  • 行(Row)(或记录 Record):表中水平的实体,代表一个单一的、隐式结构化的数据项。
  • 主键(Primary Key):唯一标识表中每条记录的约束。它必须包含唯一值,且不能包含 NULL 值。
  • 外键(Foreign Key):用于连接两个表的键。它是在一个表中的字段(或一组字段),引用另一个表中的主键。
  • 索引(Index):一种数据结构,它以额外的写入和存储空间为代价,提高了数据库表上的数据检索操作速度。
  • 引用完整性(Referential Integrity):数据的一种属性,表明其所有引用都是有效的。在 RDBMS 中,它确保外键值始终指向一个存在的、有效的行。

MySQL 是世界上最受欢迎的开源关系型数据库。它的流行得益于多种因素:

  • 开源且经济高效:社区版免费使用,使其适用于各种规模的项目。
  • 经验证的可靠性和性能:MySQL 以其稳定性、效率和速度而闻名,为大量高流量网站和应用程序提供支持。
  • 丰富的功能集:现代 MySQL(8.0+ 版本)支持高级功能,如 JSON 数据类型、公共表表达式(CTE)、窗口函数和强大的安全功能。
  • 跨平台和语言支持:它几乎可以在所有平台(包括 Linux、macOS 和 Windows)上运行,并为所有主流编程语言(如 Python、Java、Node.js、PHP、Go 和 C++)提供连接器。
  • 强大的社区和生态系统:庞大的全球社区和全面的文档意味着总能获得帮助和资源。它与现代工具和框架良好集成。
  • 可伸缩性:虽然以支持中小型应用程序而闻名,但 MySQL 可以通过集群和复制来扩展,以处理超大型数据集和高并发工作负载。

MySQL 由瑞典公司 MySQL AB 创建,该公司由 David Axmark、Allan Larsson 和 Michael “Monty” Widenius 共同创立。第一个版本于 1995 年发布。它作为 LAMP(Linux、Apache、MySQL、PHP/Perl/Python)Web 应用程序软件栈的核心组件迅速获得普及。

  • 2008 年:Sun Microsystems 收购了 MySQL AB。
  • 2009 年:作为对此次收购的回应,原创始人 Monty Widenius 分叉了 MySQL,创建了 MariaDB,这是一个社区开发、商业支持的分支,旨在保持自由和开源。
  • 2010 年:Oracle 公司收购了 Sun Microsystems,成为 MySQL 的新管理者。
  • 当前:Oracle 继续开发和支持 MySQL,发布了具有显著功能增强的主要版本。2018 年发布的 MySQL 8.0 在功能和性能方面取得了重大飞跃。目前 MySQL 和 MariaDB 都被广泛使用。

在开始之前,您应该对 SQL 概念有基本了解。为了获得一个现代化、隔离且可重现的开发设置,我们强烈建议使用 Docker。

安装 Docker 后,您可以通过单个命令启动 MySQL 服务器:

# 此命令启动一个名为 'mysql-dev' 的 MySQL 8 服务器
# 并设置 root 密码。数据将存储在 Docker 卷中。
docker run --name mysql-dev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_strong_password -d mysql:8.0

这种方法避免了在本地机器上安装过多软件,并确保您的开发环境与生产环境保持一致。

或者,您可以直接从 MySQL 官方网站下载并安装适用于您的操作系统的 MySQL Community Server。您还需要一个命令行客户端或像 DBeaver 或 MySQL Workbench 这样的 GUI 工具来与服务器交互。