☰
MySQL数据库:MySQL基础概要
2026/10/2 12:56:46 网站建设 项目流程

文章目录

  • MySQL入门保姆级指南:从“为啥不用文件存数据”到搞懂四层架构
    • 一、灵魂拷问:有文件了,还要数据库干嘛?
    • 二、数据库圈的“各路神仙”:主流数据库扫盲
      • 1. 企业级老大哥:Oracle
      • 2. 国民级顶流:MySQL
      • 3. 微软全家桶选手:SQL Server
      • 4. 学霸开源款:PostgreSQL
      • 5. 迷你嵌入式:SQLite / H2
    • 三、MySQL 初上手:从连接到写出第一条 SQL
      • 1. 先搞懂:服务器、数据库、表是什么关系?
      • 2. 连接 MySQL:命令详解 + 踩坑指南
        • 参数详解(重点!初学者90%的坑都在这)
      • 3. 服务怎么启停?
      • 4. 五分钟完成:建库→建表→插数据→查询
      • 5. 字符集这个坑:别用 utf8,要用 utf8mb4
    • 四、扒开 MySQL 的壳:四层架构到底干了啥
      • 第一层:接待处——连接池(Connection Pool)
      • 第二层:大脑——SQL 处理层
      • 第三层:干活的——可插拔存储引擎
      • 第四层:家底——文件系统
      • 一条 SQL 的旅行日记
    • 五、SQL 的三大门派:DDL、DML、DCL
      • 1. DDL:数据定义语言
      • 2. DML:数据操纵语言
      • 3. DCL:数据控制语言
    • 六、存储引擎:MySQL 的“可更换心脏”
      • 1. 什么是存储引擎?
      • 2. 两大经典引擎对比:InnoDB vs MyISAM
    • 写在最后

MySQL入门保姆级指南:从“为啥不用文件存数据”到搞懂四层架构

很多刚接触编程的同学都会有一个灵魂拷问:

我用 txt、Excel 存数据不行吗?为啥非要整个数据库出来,又是安装又是配置,麻烦得要死?

别急,这篇文章就从这个问题出发,带你从零开始啃完 MySQL 基础。看完你不仅能上手写 SQL,还能跟人扯清楚 MySQL 内部四层架构,面试基础面直接通关。


一、灵魂拷问:有文件了,还要数据库干嘛?

咱们先说说用文件存数据的几宗罪:

  1. 查询慢到怀疑人生
    你想在 100 万行的 CSV 里找一条特定数据?基本得从头扫到尾,数据量一大,找个数据比在乱房间里找袜子还慢。

  2. 安全性几乎为零
    文件说删就删、说改就改,没有权限控制,也没有操作留痕。哪天手滑删错文件,直接连夜买站票跑路。

  3. 海量数据扛不住
    文件越大读写越卡顿,到了 TB 级别,普通文件系统基本就卡成 PPT 了。

  4. 程序控制太麻烦
    想在代码里实现“按条件修改某几行数据”,用文件得自己写一堆读写、定位、判断逻辑,纯纯重复造轮子。

而数据库,就是专门为了解决这些问题诞生的数据管理系统。它把数据有条理地组织起来,提供标准 SQL 语言来操作,自带权限、事务、索引等一堆黑科技,本质就是在文件系统之上,又封装了一层更智能的数据管理层。


二、数据库圈的“各路神仙”:主流数据库扫盲

现在市面上的数据库五花八门,先给大家盘几个最常见的,心里先有个数:

1. 企业级老大哥:Oracle

甲骨文公司的旗舰闭源商业数据库,贵,但是稳。
银行、国企、大型企业核心系统的标配,主打一个“不出事”。功能极强、性能拉满,就是授权费能让小公司望而却步。
顺带一提:咱们学的 MySQL,现在也是甲骨文旗下的产品。

2. 国民级顶流:MySQL

全世界使用最广的开源数据库,互联网公司标配。
并发能力强,对简单 SQL 的处理速度快,电商、社交、论坛这类场景基本都是它的天下。
优点是免费、生态好、学习资料多;缺点是面对极复杂业务逻辑时,性能不如 Oracle。

3. 微软全家桶选手:SQL Server

微软自家产品,.NET 开发的标配。
和 Windows 生态深度绑定,图形化工具做得很友好,中大型项目用得多。

4. 学霸开源款:PostgreSQL

加州大学伯克利分校研发,完全开源免费,可商用可二次修改。
功能非常强大,支持很多复杂数据类型和高级特性,这几年热度飙升,很多公司开始从 MySQL 转向 PG。

5. 迷你嵌入式:SQLite / H2

这俩都是“小个子”选手:

  • SQLite:C 语言编写的轻量数据库,整个程序就一个小文件,嵌入式设备、手机 APP 里常用,几百 KB 内存就能跑。
  • H2:Java 编写的嵌入式数据库,直接当作 jar 包嵌进项目里,本地开发测试非常方便。

三、MySQL 初上手:从连接到写出第一条 SQL

咱们以最经典的 MySQL 5.7 为例,从零跑通第一波操作。

1. 先搞懂:服务器、数据库、表是什么关系?

很多初学者一开始会把这仨搞混,其实逻辑很简单:

  • 数据库服务器(MySQL Server):安装在机器上的后台程序,一台机器一般装一个,它可以同时管理很多个数据库。
  • 数据库(Database):可以理解成独立的仓库,一般一个项目对应一个数据库。比如电商项目建shop库,博客项目建blog库。
  • 表(Table):数据库里的一张张表格,用来存储一类具体数据。比如用户表、商品表、订单表。

一句话总结:一个服务器管多个仓库,一个仓库里放多个货架,货架上摆着数据。

2. 连接 MySQL:命令详解 + 踩坑指南

安装完 MySQL 服务后,我们用客户端命令去连接它。标准命令长这样:

mysql-h127.0.0.1-P3306-uroot-p
参数详解(重点!初学者90%的坑都在这)
参数含义注意事项
-h主机地址本机连接可以省略,默认连 localhost
-P端口号大写P!默认 3306,可省略
-u用户名比如管理员账号 root
-p密码小写p!后面不要直接写密码,回车后再输入,更安全

❌ 经典错误写法:mysql -h 127.0.0.1 -p 3306 -u root -p
小写-p后面的3306会被 MySQL 当成数据库名,直接报错Unknown database '3306',这个坑几乎人人踩过。

回车后输入密码,看到mysql>提示符,就说明连接成功了。

小提示:SQL 语句末尾要加分号;代表结束,也可以用\g,效果完全一样。

3. 服务怎么启停?

MySQL 是后台服务,不同系统管理方式不同:

  • Windows:按下Win+R输入services.msc,在服务管理器里找到 MySQL 服务,就能启停。
  • Linux/CentOS:用 systemctl 命令管理
    systemctl start mysqld# 启动systemctl stop mysqld# 停止systemctl restart mysqld# 重启systemctl status mysqld# 查看状态

4. 五分钟完成:建库→建表→插数据→查询

一套标准流程,直接复制就能跑:

-- 1. 创建数据库,指定字符集(划重点!)CREATEDATABASEhelloworldDEFAULTCHARACTERSETutf8mb4;-- 2. 进入这个数据库USEhelloworld;-- 3. 创建学生表CREATETABLEstudent(idINT,nameVARCHAR(32),genderVARCHAR(2));-- 4. 插入三条数据INSERTINTOstudent(id,name,gender)VALUES(1,'张三','男');INSERTINTOstudent(id,name,gender)VALUES(2,'李四','女');INSERTINTOstudent(id,name,gender)VALUES(3,'王五','男');-- 5. 查询所有数据SELECT*FROMstudent;

5. 字符集这个坑:别用 utf8,要用 utf8mb4

这里补一个教材里很少提但必踩的坑:
MySQL 里的utf8不是真正的 UTF-8,它最多只存 3 个字节,存不了 emoji 表情和生僻字。
真正的 UTF-8 是utf8mb4,支持 4 字节存储。
建库一律默认用 utf8mb4,省得后面出现乱码拍大腿。


四、扒开 MySQL 的壳:四层架构到底干了啥

很多人学了半年 SQL,都不知道 MySQL 内部长啥样。其实它就是典型的分层设计,从上到下一共四层,咱们一层一层扒。

第一层:接待处——连接池(Connection Pool)

所有客户端连接,第一步都到这。
负责连接管理、账号密码认证、安全校验,就像公司前台,先核对你有没有预约(密码对不对),再给你发个访客牌(连接)。

第二层:大脑——SQL 处理层

这一层是 MySQL 的核心,只负责处理 SQL 逻辑,不直接碰磁盘。

  1. SQL 接口:接收客户端发过来的 SQL 语句。
  2. 解析器(Parser):检查 SQL 语法是否正确,比如你写show databass;拼错单词,就是在这被拦下的。
  3. 优化器(Optimizer):同一条 SQL 有很多种执行方式,优化器会选出成本最低的方案。比如要不要走索引、先查哪张表。
  4. 缓存(Caches):查询过的结果会缓存起来,下次同样的查询直接返回,不用去读磁盘。

旁边还有一堆工具组件:备份恢复、主从复制、集群、分区等等。

第三层:干活的——可插拔存储引擎

这是 MySQL 最有特色的设计:插件式存储引擎。
上面的 SQL 层只下发“读数据、写数据”的命令,具体怎么存、怎么读,全靠存储引擎实现。不同的存储引擎,有完全不同的特性。

常见的引擎有 InnoDB、MyISAM、Memory、Archive 等等。
现在默认、也是最常用的就是 InnoDB,支持事务、行锁、崩溃恢复,项目开发基本都用它。

第四层:家底——文件系统

最底层就是操作系统的文件系统(Linux 的 ext4、Windows 的 NTFS),也可以是 SAN、NAS 这类存储设备。
所有的数据、索引、日志,最终都会写成磁盘上的文件。

一条 SQL 的旅行日记

给大家捋一遍SELECT * FROM student WHERE id=1;的完整流程:

  1. 客户端发请求 → 连接池校验账号密码,建立连接
  2. SQL 语句交给 SQL 接口
  3. 解析器检查语法,生成语法树
  4. 优化器生成执行计划,决定走主键查询
  5. 调用 InnoDB 存储引擎去读取数据
  6. InnoDB 先查缓存,没有就去磁盘查找,把数据返回
  7. 结果原路返回给客户端

五、SQL 的三大门派:DDL、DML、DCL

SQL 语句按功能分成三大类,别记混了:

1. DDL:数据定义语言

Data Definition Language,用来定义数据结构。
通俗说就是建库、建表、改表结构这类“搞建筑”的操作。
代表命令:CREATE(创建)、DROP(删除)、ALTER(修改)

2. DML:数据操纵语言

Data Manipulation Language,用来操作表里的数据。
就是增、删、改、查,日常开发写得最多的就是这类。
其中查询语句SELECT又单独被称为DQL(数据查询语言)。
代表命令:INSERT、DELETE、UPDATE、SELECT

3. DCL:数据控制语言

Data Control Language,用来管理权限、控制事务。
比如创建用户、给用户授权、提交事务这些。
代表命令:GRANT(授权)、REVOKE(撤权)、COMMIT(提交事务)


六、存储引擎:MySQL 的“可更换心脏”

1. 什么是存储引擎?

简单说,存储引擎就是数据的存储方式 + 读写实现逻辑。
MySQL 厉害就厉害在,你可以给每张表选不同的存储引擎,就像给不同的车装不同的发动机——拉货用柴油机,跑赛道用汽油机。

查看所有引擎的命令:

SHOWENGINES;

2. 两大经典引擎对比:InnoDB vs MyISAM

这是面试基础题必考点,直接整理成对比表:

特性InnoDBMyISAM
事务支持✅ 支持(核心优势)❌ 不支持
锁粒度行级锁,并发性能高表级锁,并发性能差
崩溃恢复✅ 支持,不容易丢数据❌ 崩溃后容易损坏
外键约束✅ 支持❌ 不支持
全文索引5.7 版本后开始支持✅ 原生支持
适用场景绝大多数业务场景,需要事务、高并发读多写少的简单场景,现在基本淘汰

一句话总结:现在开发无脑用 InnoDB 就对了,MyISAM 是上古时代的产物,了解历史就行。


写在最后

MySQL 入门其实不难,难的是很多人上来就死背语法,却没搞懂“为什么这么设计”。
这篇文章带你从“为什么要有数据库”讲到内部架构,再到基础操作,就是希望你先建立一个整体的认知。

接下来的学习建议:

  1. 多敲命令,别光看。SQL 是敲出来的,不是背出来的。
  2. 先把基础的增删改查、条件查询、联表查询练熟。
  3. 再去深入索引、事务、存储引擎这些进阶内容。

祝大家 SQL 写得飞起,永不死锁~

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询