当前位置: 首页 > news >正文

【MySQL从入门到精通】之基础概念详解

MySQL 基础概念详解

  • MySQL 基础概念详解
    • 什么是数据库?
      • 1. 客户端与服务端架构
      • 2. 数据存储位置
      • 3. 数据库 vs 文件存储
    • 主流数据库概览
      • 1. 关系型数据库
        • MySQL
        • PostgreSQL
        • Oracle Database
        • Microsoft SQL Server
      • 2. NoSQL 数据库
        • MongoDB
        • Redis
        • Cassandra
      • 3. 云原生数据库
        • Amazon Aurora
        • Google Cloud Spanner
      • 4. NewSQL 数据库
        • TiDB
        • CockroachDB
      • 5. 数据库选择建议
      • 总结
    • 数据库与表的创建本质
      • 1. 创建数据库
      • 2. 数据库初始文件
      • 3. 创建表
      • 关系图
    • MySQL 的逻辑存储
      • 示例:学生表
        • 1. 创建表
        • 2. 插入数据
        • 3. 查询数据
    • MySQL 架构概述
    • 存储引擎与查询处理
      • 查询处理器
      • 存储引擎
        • 概念
        • 常用存储引擎
          • InnoDB
          • MyISAM
        • 实验:对比存储引擎文件
    • 常用 SQL 语句
    • 总结

MySQL 基础概念详解

MySQL 是一个功能强大的开源关系型数据库,广泛应用于各种应用场景。本文从数据库的基本概念入手,逐步介绍 MySQL 的架构、存储引擎及常用 SQL 语句,适合初学者快速入门。

目录

  • MySQL 基础概念详解
    • 什么是数据库?
      • 1. 客户端与服务端架构
      • 2. 数据存储位置
      • 3. 数据库 vs 文件存储
    • 主流数据库概览
      • 1. 关系型数据库
        • MySQL
        • PostgreSQL
        • Oracle Database
        • Microsoft SQL Server
      • 2. NoSQL 数据库
        • MongoDB
        • Redis
        • Cassandra
      • 3. 云原生数据库
        • Amazon Aurora
        • Google Cloud Spanner
      • 4. NewSQL 数据库
        • TiDB
        • CockroachDB
      • 5. 数据库选择建议
      • 总结
    • 数据库与表的创建本质
      • 1. 创建数据库
      • 2. 数据库初始文件
      • 3. 创建表
      • 关系图
    • MySQL 的逻辑存储
      • 示例:学生表
        • 1. 创建表
        • 2. 插入数据
        • 3. 查询数据
    • MySQL 架构概述
    • 存储引擎与查询处理
      • 查询处理器
      • 存储引擎
        • 概念
        • 常用存储引擎
          • InnoDB
          • MyISAM
        • 实验:对比存储引擎文件
    • 常用 SQL 语句
    • 总结


什么是数据库?

数据库是按照特定结构组织、存储和管理数据的一套系统,通常存储在内存或磁盘中。以下是数据库的核心要点:

1. 客户端与服务端架构

MySQL 采用 C/S(客户端/服务端)架构

  • 服务端(mysqld):负责数据存储、查询处理、事务管理、并发控制等核心功能。
  • 客户端(mysql):提供用户交互接口,发送 SQL 查询到服务端并展示结果。

在 Linux 系统中,安装 MySQL 后会启动两个进程:

  • mysqld:服务端进程,管理数据存储和操作。
  • mysql:客户端进程,用户通过它与数据库交互。

image-20250313225951818

MySQL 的网络服务架构如下:

image-20250313230410153

2. 数据存储位置

MySQL 数据默认存储在磁盘的特定目录,通常为 /var/lib/mysql。你可以在 MySQL 配置文件(如 /etc/my.cnf)中查看或修改数据存储路径。

image-20250313231129086

3. 数据库 vs 文件存储

相比直接使用文件存储数据,MySQL 有以下优势:

  • 简化操作:无需手动编写查询逻辑,程序员只需通过 SQL 语句操作数据。
  • 高效管理:提供事务支持、索引优化和并发控制,远超文件系统。
  • 标准接口:SQL 语句作为统一接口,简化开发和维护。

提示
数据库通过结构化的存储和标准化的操作接口,大幅提升数据管理的效率和可靠性。


主流数据库概览

以下是常见数据库的分类和特点,涵盖关系型、NoSQL、云原生和 NewSQL 数据库。

1. 关系型数据库

MySQL
  • 类型:开源关系型数据库
  • 特点
    • 轻量级,易于部署,适合中小型应用。
    • 支持事务(ACID)、主从复制和分区表。
    • 默认存储引擎 InnoDB 支持行级锁和外键。
  • 适用场景:Web 应用、电商平台、内容管理系统(CMS)。
  • 代表用户:Facebook、Twitter、Airbnb。
  • 缺点:复杂查询性能较弱,集群扩展性有限。
PostgreSQL
  • 类型:开源关系型数据库
  • 特点
    • 支持高级功能,如 JSON 数据类型、全文搜索和 GIS 地理数据。
    • 事务一致性高,严格遵循 SQL 标准。
    • 支持自定义函数和存储过程(PL/pgSQL)。
  • 适用场景:复杂查询、GIS 应用、金融系统。
  • 代表用户:Apple、Reddit、Instagram。
  • 缺点:高并发写入性能略低于 MySQL。
Oracle Database
  • 类型:商业关系型数据库
  • 特点
    • 企业级功能:高可用性(RAC)、数据仓库、分区表。
    • 支持 PL/SQL 编程,适合复杂业务逻辑。
    • 强大的 OLTP(联机事务处理)性能。
  • 适用场景:大型企业 ERP、银行核心系统、电信计费。
  • 缺点:成本高,学习曲线陡峭。
Microsoft SQL Server
  • 类型:商业关系型数据库
  • 特点
    • 深度集成 Windows 生态,支持 C# 等开发语言。
    • 提供 BI 工具(SSIS、SSAS、SSRS)。
    • 支持内存优化表(In-Memory OLTP)。
  • 适用场景:企业级 Windows 应用、数据分析。
  • 缺点:仅支持 Windows/Linux 部署,扩展性受限。

2. NoSQL 数据库

MongoDB
  • 类型:文档型数据库
  • 特点
    • 数据以 BSON 格式(类似 JSON)存储,模式灵活。
    • 支持二级索引、聚合管道和地理空间查询。
    • 分片集群支持横向扩展。
  • 适用场景:日志存储、实时分析、内容管理。
  • 代表用户:eBay、Adobe、Forbes.
Redis
  • 类型:内存键值数据库
  • 特点
    • 数据存储在内存,读写性能极高(10 万+ QPS)。
    • 支持多种数据类型:字符串、哈希、列表、集合、有序集合。
    • 提供持久化(RDB/AOF)、发布/订阅和 Lua 脚本。
  • 适用场景:缓存、会话管理、排行榜、消息队列。
  • 代表用户:Twitter、GitHub、StackOverflow.
Cassandra
  • 类型:宽列存储数据库
  • 特点
    • 分布式架构,无单点故障,支持跨数据中心复制。
    • 高写入吞吐量(百万级/秒),适合时间序列数据。
    • 数据模型灵活,支持动态列。
  • 适用场景:物联网(IoT)、日志存储、实时推荐系统。
  • 代表用户:Netflix、Apple、Instagram.

3. 云原生数据库

Amazon Aurora
  • 类型:云原生关系型数据库(兼容 MySQL/PostgreSQL)
  • 特点
    • 存储与计算分离,自动扩展至 128TB。
    • 性能是 MySQL 的 5 倍,支持全球数据库(多区域复制)。
    • 按需付费,免硬件维护。
  • 适用场景:云上高可用 Web 应用、企业级 SaaS.
Google Cloud Spanner
  • 类型:全球分布式关系型数据库
  • 特点
    • 强一致性 + 水平扩展,支持全球级事务。
    • 无需分片,自动负载均衡。
    • 兼容 SQL 标准,支持 OLTP 和 OLAP.
  • 适用场景:跨国金融系统、实时库存管理。
  • 缺点:成本较高,适合大型企业。

4. NewSQL 数据库

TiDB
  • 类型:分布式 HTAP 数据库
  • 特点
    • 兼容 MySQL 协议,支持混合事务/分析处理(HTAP)。
    • 自动水平扩展,强一致性(Raft 协议)。
    • 内置 TiSpark 组件,对接 Hadoop 生态。
  • 适用场景:高并发 OLTP、实时数据分析。
CockroachDB
  • 类型:分布式关系型数据库
  • 特点
    • 兼容 PostgreSQL 协议,支持全球分布式部署。
    • 自动数据分片、多副本冗余,抗区域故障。
    • 提供 Serializable 隔离级别的事务。
  • 适用场景:全球化应用、多活架构。

5. 数据库选择建议

需求场景推荐数据库
传统 Web 应用MySQL、PostgreSQL
高并发缓存Redis
灵活文档存储MongoDB
企业级复杂事务Oracle、SQL Server
全球化分布式系统Google Cloud Spanner、CockroachDB
实时分析 + 事务混合负载TiDB、Amazon Aurora

总结

  • 关系型数据库:适合结构化数据和强一致性场景,如金融系统。
  • NoSQL 数据库:适合半结构化数据和高扩展性需求,如社交网络。
  • 云原生数据库:适合弹性扩展、免运维的云上应用。
  • NewSQL 数据库:结合 SQL 和 NoSQL 优势,适合分布式混合负载。

数据库与表的创建本质

1. 创建数据库

执行创建数据库的 SQL 语句(如 CREATE DATABASE dbname;)时,MySQL 会在数据目录(datadir,默认 /var/lib/mysql)下新建一个子目录,表示新数据库。

image-20250314102022879

2. 数据库初始文件

新数据库目录初始包含一个 .opt 文件,存储默认字符集和排序规则。例如:

default-character-set=utf8
default-collation=utf8_general_ci
  • 字符集utf8,用于存储和处理字符串。
  • 排序规则utf8_general_ci,表示大小写不敏感(ci 为 case-insensitive),如 Aa 在比较时视为相同。

image-20250314102341680

3. 创建表

创建表(如 CREATE TABLE tablename ...)会在数据库目录下生成表相关的文件(通常为二进制格式,无法直接读取)。

image-20250314103334217

提示
数据库和表的创建本质是对文件系统的操作,由 mysqld 服务端自动完成,开发者无需关心底层细节。

关系图

数据库、服务端、客户端和表之间的关系如下:

image-20250314104336129


MySQL 的逻辑存储

MySQL 以行列式结构(表)呈现数据,开发者通过 SQL 操作表,而实际存储由服务end管理。

示例:学生表

1. 创建表
CREATE TABLE students (
    student_id INT AUTO_INCREMENT PRIMARY KEY,  -- 学生唯一标识,自动递增主键
    first_name VARCHAR(50) NOT NULL,           -- 名字,最长 50 字符,非空
    last_name VARCHAR(50) NOT NULL,            -- 姓氏,最长 50 字符,非空
    gender ENUM('M', 'F', 'O') NOT NULL,       -- 性别,枚举类型(M/F/O),非空
    date_of_birth DATE NOT NULL,               -- 出生日期,非空
    class_name VARCHAR(100)                    -- 班级,最长 100 字符
);

image-20250314110042708

2. 插入数据
INSERT INTO students (first_name, last_name, gender, date_of_birth, class_name) VALUES
    ('张', '三', 'M', '2005-08-15', '高一A班'),
    ('李', '四', 'F', '2004-12-23', '高二B班'),
    ('王', '五', 'M', '2006-03-17', '高三C班');
3. 查询数据
SELECT * FROM students;

image-20250314110411422

提示
用户看到的是逻辑上的行列结构,底层存储(如文件格式)由 mysqld 管理,开发者无需关心。


MySQL 架构概述

MySQL 采用模块化架构,分为以下层次:

  • 应用层:提供客户端、API 等与 MySQL 交互的方式。
  • 查询处理器:解析、优化和执行 SQL 语句。
  • 存储引擎层:管理数据的存储和访问方式。
  • 数据存储层:负责数据持久化和高效存取。

image-20250314111453307


存储引擎与查询处理

查询处理器

查询处理器负责解析、优化和执行 SQL 语句,包含以下模块:

  1. 解析器(Parser)

    • 解析 SQL 语句,检查语法是否正确。若有错误,直接返回错误信息。

    image-20250314112523594

  2. 预处理器(Preprocessor)

    • 验证表名、列名等对象是否存在,以及用户是否具有访问权限,确保语句逻辑上可执行。
  3. 查询优化器(Optimizer)

    • 分析多种执行路径,选择最优计划(如选择索引或优化表连接顺序)。
  4. 执行引擎(Execution Engine)

    • 根据优化后的计划,从存储引擎检索或修改数据。

实验:验证查询优化器

  1. 创建表 t1

    CREATE TABLE t1 (
        id INT AUTO_INCREMENT PRIMARY KEY,  -- 唯一标识,自动递增主键
        name VARCHAR(100) NOT NULL,        -- 名称,最长 100 字符,非空
        description TEXT                   -- 描述,文本类型
    );
    
  2. 查看建表语句:

    SHOW CREATE TABLE t1;
    

    image-20250314113101354

    提示
    输出语句与输入不完全一致,说明优化器添加了默认字符集和存储引擎(如 InnoDB),提升规范性。

存储引擎

概念

存储引擎决定数据的存储方式、索引结构和访问方法。MySQL 支持插件式存储引擎,允许用户根据需求选择。

类比:图书馆管理书籍:

  • InnoDB:每本书有唯一编号,快速定位,支持并发借阅(行级锁)和借阅撤销(事务)。
  • MyISAM:索引集中存储,适合快速查找,但多人借阅时需排队(表级锁),不支持撤销。

查看支持的存储引擎

SHOW ENGINES;

image-20250314115050599

  • Support:支持级别(DEFAULTYESNODISABLED)。
  • Transactions:是否支持事务。
  • XA:是否支持分布式事务。
  • Savepoints:是否支持保存点。

Default storage engine can be viewed in the configuration file /etc/my.cnf:

image-20250314114749474

常用存储引擎
InnoDB
  • 默认引擎:MySQL 5.5 及以上版本。
  • 特点
    • 支持事务(ACID 特性),确保数据一致性。
    • 行级锁,允许多用户并发修改不同行。
    • 支持外键,维护引用完整性。
    • 提供崩溃恢复(通过日志文件)。
    • 兼容 MySQL Cluster。
  • 适用场景:事务密集型应用,如电商、银行系统。
MyISAM
  • 历史默认:MySQL 5.5 之前。
  • 特点
    • 表级锁,适合读多写少场景。
    • 不支持事务,数据一致性要求较低。
    • 读取速度快,支持全文索引(MySQL 5.6 前优势)。
  • 适用场景:数据仓库、日志记录等只读场景。
实验:对比存储引擎文件
  1. 创建表,分别使用 MyISAM 和 InnoDB:

    CREATE TABLE test1 (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        description TEXT
    ) ENGINE=MyISAM;
    
    CREATE TABLE test2 (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        description TEXT
    ); -- 默认 InnoDB
    
  2. 查看数据库目录:

    image-20250314122417371

结果

  • MyISAM
    • .frm:表元数据。
    • .MYD:表数据。
    • .MYI:表索引。
  • InnoDB
    • .frm:表元数据。
    • .ibd:表数据和索引(独立表空间模式)。

提示
不同存储引擎生成的文件数量和类型不同,反映了其数据管理方式的差异。


常用 SQL 语句

SQL(Structured Query Language,结构化查询语言)是操作关系型数据库的核心工具。MySQL 主要通过 SQL 语句管理数据,以下是常见分类:

  1. 数据查询语言(DQL, Data Query Language)

    • 用于检索数据。
    • 代表语句:SELECT,从表中提取数据。
  2. 数据操作语言(DML, Data Manipulation Language)

    • 用于插入、更新、删除表中数据。
    • 代表语句:INSERTUPDATEDELETE
  3. 数据定义语言(DDL, Data Definition Language)

    • 用于创建、修改、删除数据库结构(如表、索引、数据库)。
    • 代表语句:CREATEALTERDROP

    注意
    项目开发完成后,数据库结构通常固定不变,因为修改结构可能影响相关代码,需谨慎操作。

试一试
创建一个简单表,插入几行数据并查询,体验 DQL 和 DML 的基本操作!


总结

MySQL 是一个功能强大且灵活的数据库系统,其核心优势在于:

  • C/S 架构:客户端与服务端分离,易于扩展和维护。
  • 插件式存储引擎:支持 InnoDB、MyISAM 等,适应不同场景。
  • 标准 SQL 接口:简化开发,提升跨平台兼容性。

通过本文,你了解了 MySQL 的基本概念、架构、存储引擎和 SQL 操作。建议在实际项目中多实践,如创建数据库、表,尝试不同存储引擎,逐步掌握 MySQL 的精髓。


相关文章:

  • 多版本go冲突问题
  • 数据结构-哈希表
  • 免费送源码:Java+ssm+MySQL 酒店预订管理系统的设计与实现 计算机毕业设计原创定制
  • 社交电商引流策略中的让利行为及其影响——基于开源AI智能名片、链动2+1模式与S2B2C商城小程序的分析
  • Spring Boot 热部署详解,包含详细的配置项说明
  • 行业标准 | IT服务技术与标准研讨会在京召开
  • Qt文件读写
  • AMGCL库的Backends及使用示例
  • Java基础:Stream流操作
  • 【软考系统架构设计师】信息安全技术基础知识点
  • 25级总分413数学一142专业124东南大学820考研经验电子信息通信工程,真题,大纲,参考书。
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)
  • 深入理解 HTML5 语义元素:提升网页结构与可访问性
  • 【C++】中memcpy的使用
  • 校园AI体育:科技赋能教育,运动点亮未来
  • 【集成电路版图设计学习笔记】1. Introduction to Layout Design
  • k8s蓝绿发布
  • 软件系统安全设计方案,信息化安全建设方案(Word原件)
  • cookie、session、token、jwt、oauth
  • ESP32开发之ubuntu环境搭建
  • 在香港做网站需要什么软件/一站式软文发布推广平台
  • 找人做网站属于诈骗吗/备案域名购买
  • 企业网站建设公司有哪些/宁波企业seo推广
  • 深圳响应样式网站建设费用/获客渠道找精准客户
  • 可以做lebenslauf的网站/友链购买有效果吗
  • 公司网站制作教学/seo的中文是什么