MySQL: MySQL简介与数据库基础概念

MySQL 是全球最流行的开源关系型数据库管理系统——它让数据存储和查询变得简单高效。

本教程面向零基础学习者,从数据库概念讲起,直到你能熟练使用 MySQL 进行数据管理。

1. 你将学到


2. 一个开发者的真实故事

(1) 痛点:Excel 撑不住了

一个电商运营经理接到紧急任务:

"统计过去 12 个月、5,000 个客户、30,000 个订单的销售趋势——明天早上给 CEO 做汇报。"

打开 Excel 文件:100,000+ 行数据,文件大小 50 MB

问题接踵而来:

(2) 数据库的解法

用 MySQL 重新设计:

SQL
-- 创建客户表
CREATE TABLE customers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(150)
);

-- 创建订单表
CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT,
    amount DECIMAL(10,2),
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

-- 一条 SQL 查出年度销售趋势
SELECT 
    DATE_FORMAT(order_date, '%Y-%m') AS month,
    COUNT(*) AS total_orders,
    SUM(amount) AS total_revenue
FROM orders
WHERE order_date >= '2025-07-01'
GROUP BY month
ORDER BY month;

收益对比:

维度 Excel MySQL
10 万行查询 30+ 秒 < 1 秒
多表关联 VLOOKUP 手写 JOIN 自动关联
多人协作 文件冲突 并发读写无冲突
数据更新 手动刷新 实时查询最新数据
数据安全 文件丢失风险 事务+备份保障

3. 什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

(1) 数据库 vs 文件存储

100%
graph TB
    A[数据存储方式] --> B[文件存储]
    A --> C[数据库]
    B --> D[Excel / CSV / TXT]
    B --> E[手动管理,效率低]
    C --> F[结构化存储]
    C --> G[高效查询,安全可靠]
维度 文件存储 数据库
数据量 千级行 百万~亿级行
查询速度 慢(全文件扫描) 快(索引优化)
并发访问 不支持 支持多用户同时读写
数据完整性 无保障 约束+事务保障
安全性 文件级 用户权限+加密

(2) 数据库分类

100%
graph TB
    A[数据库] --> B[关系型数据库 RDBMS]
    A --> C[非关系型数据库 NoSQL]
    B --> D[MySQL / PostgreSQL]
    B --> E[Oracle / SQL Server]
    B --> F[SQLite]
    C --> G[键值型: Redis]
    C --> H[文档型: MongoDB]
    C --> I[列族型: Cassandra]
    C --> J[图数据库: Neo4j]
类型 代表产品 数据模型 适用场景
关系型 MySQL, PostgreSQL 表(行+列) 结构化数据、事务处理
键值型 Redis Key-Value 对 缓存、会话、排行榜
文档型 MongoDB JSON/BSON 文档 半结构化数据、内容管理
列族型 Cassandra 列族 大数据分析、时序数据
图数据库 Neo4j 节点+边 社交网络、推荐系统
💡 提示: MySQL 属于关系型数据库,数据以表(Table)的形式存储,表与表之间可以建立关系


4. 关系型数据库核心概念

(1) 表(Table)

表是数据库中存储数据的基本单位,由行(Row)列(Column)组成。

100%
graph LR
    subgraph customers 表
        direction TB
        H[id | name | email | created_at]
        R1[1 | Alice | alice@email.com | 2025-01-15]
        R2[2 | Bob | bob@email.com | 2025-02-20]
        R3[3 | Charlie | charlie@email.com | 2025-03-10]
    end
术语 含义 示例
表(Table) 数据的集合 customers
行(Row) 一条具体记录 Alice 的完整信息
列(Column) 数据的一个属性 name
主键(Primary Key) 唯一标识每行的字段 id
外键(Foreign Key) 关联其他表的字段 orders.customer_id

(2) 关系类型

100%
erDiagram
    CUSTOMERS ||--o{ ORDERS : "一个客户有多个订单"
    ORDERS ||--|{ ORDER_ITEMS : "一个订单有多个商品项"
    PRODUCTS ||--o{ ORDER_ITEMS : "一个商品出现在多个订单中"
关系类型 说明 示例
一对一(1:1) 一条记录对应另一条记录 用户 ↔ 身份证
一对多(1:N) 一条记录对应多条记录 客户 → 订单
多对多(M:N) 多条记录相互对应 学生 ↔ 课程(通过选课表)

(3) SQL 语言分类

SQL(Structured Query Language)是操作关系型数据库的标准语言。

分类 全称 关键字 用途
DDL Data Definition Language CREATE/ALTER/DROP 定义数据库结构
DML Data Manipulation Language INSERT/UPDATE/DELETE 增删改数据
DQL Data Query Language SELECT 查询数据
DCL Data Control Language GRANT/REVOKE 权限管理
TCL Transaction Control Language COMMIT/ROLLBACK 事务控制

5. MySQL 的发展历史

(1) 版本演进

100%
timeline
    title MySQL 版本演进
    1995 : MySQL 1.0 发布
         : 由瑞典 MySQL AB 公司开发
    2000 : MySQL 3.23
         : 支持事务处理
    2003 : MySQL 4.0
         : 支持 UNION 查询
    2005 : MySQL 5.0
         : 支持存储过程、视图、触发器
    2008 : Sun 收购 MySQL AB
    2010 : Oracle 收购 Sun
         : 获得 MySQL 所有权
    2013 : MySQL 5.6
         : InnoDB 全文搜索
    2016 : MySQL 5.7
         : JSON 支持、性能提升
    2018 : MySQL 8.0
         : 窗口函数、CTE、角色
    2024 : MySQL 8.4 LTS
         : 长期支持版本
    2024 : MySQL 9.0 Innovation
         : 最新创新版本

(2) MySQL 的设计哲学

MySQL 的核心设计理念:

简单优先

性能优先

开放生态


6. MySQL 的核心优势

(1) 优势对比

维度 MySQL PostgreSQL Oracle SQL Server
价格 免费(开源) 免费(开源) 昂贵(商业) 昂贵(商业)
学习难度 ⭐ 简单 ⭐⭐ 中等 ⭐⭐⭐ 难 ⭐⭐ 中等
读取性能 ⭐⭐⭐ 极快 ⭐⭐ 快 ⭐⭐ 快 ⭐⭐ 快
社区活跃度 ⭐⭐⭐ 极高 ⭐⭐ 高 ⭐ 中等 ⭐ 中等
适用场景 Web 应用、电商 复杂查询、GIS 企业级大系统 Windows 生态

(2) 典型应用场景

100%
mindmap
  root((MySQL 应用))
    Web 开发
      博客系统
      电商平台
      社交网络
      内容管理
    企业应用
      ERP 系统
      CRM 系统
      库存管理
      订单处理
    数据分析
      日志存储
      用户行为
      报表统计
    移动应用
      App 后端
      游戏数据
      推送系统

谁在用 MySQL?

公司 用途
Meta (Facebook) 用户数据、社交图谱
Twitter 推文、用户信息
GitHub 代码仓库、用户数据
Airbnb 房源、订单、用户
Shopify 电商后端、商品订单
Booking.com 酒店预订、用户评价

7. 快速体验 MySQL

(1) 三步连接 MySQL

步骤 命令/操作
1. 安装 Docker 一行启动(详见第 2 课)
2. 连接 mysql -u root -p
3. 验证 SELECT VERSION();

📖 下一课将详细讲解:全平台安装(Windows/Mac/Linux/Docker)、MySQL Workbench 连接、安全配置。本节只做快速体验。

▶ 示例:Docker 一行启动

BASH
# 拉取并启动 MySQL 8.0(详细参数说明见第 2 课)
docker run -d --name mysql-tutorial \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=MyPass123! \
  mysql:8.0

# 进入 MySQL 命令行
docker exec -it mysql-tutorial mysql -u root -pMyPass123!

▶ 示例:连接后快速验证

SQL
-- 查看 MySQL 版本
SELECT VERSION();

-- 查看所有数据库
SHOW DATABASES;
▶ 试一试

输出:

TEXT 📖 仅展示
+-----------+
| VERSION() |
+-----------+
| 8.0.36    |
+-----------+

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

▶ 示例:创建第一个数据库和表

SQL
-- 1. 创建数据库
CREATE DATABASE my_first_db;

-- 2. 使用数据库
USE my_first_db;

-- 3. 创建用户表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 4. 插入数据
INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (username, email) VALUES ('Bob', 'bob@example.com');

-- 5. 查询数据
SELECT * FROM users;
▶ 试一试

输出:

TEXT 📖 仅展示
+----+----------+-----------------+---------------------+
| id | username | email           | created_at          |
+----+----------+-----------------+---------------------+
|  1 | Alice    | alice@example.com | 2026-07-03 10:30:00 |
|  2 | Bob      | bob@example.com   | 2026-07-03 10:30:01 |
+----+----------+-----------------+---------------------+

▶ 示例:数据的增删改查

SQL
-- 条件查询
SELECT username, email FROM users WHERE username = 'Alice';

-- 更新数据
UPDATE users SET email = 'alice_new@example.com' WHERE id = 1;

-- 删除数据
DELETE FROM users WHERE id = 2;

-- 统计用户数
SELECT COUNT(*) AS total_users FROM users;
▶ 试一试

❓ 常见问题

Q MySQL 和 SQL 是什么关系?
A SQL 是操作数据库的标准语言(类似"英语"),MySQL 是实现 SQL 标准的数据库软件(类似"英国人说的英语")。
Q MySQL 免费吗?可以商用吗?
A MySQL 社区版是免费开源的(GPL 协议),可以商用。但如果你修改了 MySQL 源码并分发,也需要开源。Oracle 提供商业版(付费),提供更多企业功能。
Q MySQL 和 MariaDB 选哪个?
A MariaDB 是 MySQL 的分支,语法高度兼容。对于新项目,MySQL 8.0+ 是主流选择;如果你担心 Oracle 的开源策略,MariaDB 是不错的替代。
Q 学 MySQL 需要先学编程语言吗?
A 不需要。SQL 是独立的语言,语法接近自然英语。你可以直接在 MySQL 命令行中学习。后续课程会介绍如何用 Node.js/Python 连接 MySQL。
Q MySQL 适合什么规模的项目?
A MySQL 适合从小型个人项目到大型企业应用。单表可存储数亿行数据,配合分库分表可支撑更大规模。Meta/Twitter/GitHub 都在用 MySQL。
Q Windows/Mac/Linux 都能用 MySQL 吗?
A 是的。MySQL 官方提供全平台支持。推荐用 Docker 安装,一次配置,到处运行。

📖 小节


📝 作业

  1. 基础题(难度⭐):使用 Docker 安装 MySQL 8.0,连接成功后执行 SELECT VERSION(); 查看版本号。

  2. 进阶题(难度⭐⭐):创建一个名为 school 的数据库,包含 students 表(id, name, age, grade),插入 5 条数据并查询所有记录。

  3. 挑战题(难度⭐⭐⭐):创建 courses 表和 student_courses 关联表(多对多关系),设计合理的字段,并用 JOIN 查询某个学生选修的所有课程。

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏