MySQL基础核心|数据库原理+MySQL详解
摘要 :本文聚焦MySQL入门核心内容,系统梳理数据库基础原理 与MySQL核心认知及实操基础两大模块。详细讲解数据三大分类、数据管理发展阶段、数据库核心概念、E-R模型与数据库设计范式,同时完整介绍MySQL发展史、主流分支、核心特性、多实例部署原理、配套工具及常用客户端实操命令。内容精简干货、逻辑清晰,适合零基础入门、期末复习、面试速记,可直接用于学习与技术复盘。
一、数据库核心原理
1.1 数据的三大分类
根据数据结构类型,所有数据可分为结构化、半结构化、非结构化三类,也是数据库选型的核心依据。
1.1.1 结构化数据
指可以通过二维表逻辑表达、有固定格式、固定长度的数据,是关系型数据库的核心存储对象。
核心特点:
-
以行为单位存储,一行对应一个实体,每行属性统一
-
结构固定,先定义结构,再存入数据
-
可通过统一数据类型、二维表结构规范管理
范例(二维表):
| no | name | age |
|---|---|---|
| 1 | 唐三 | 123 |
| 2 | 叶凡 | 456 |
1.1.2 半结构化数据
介于结构化与非结构化之间,数据与结构混合存储,也称为自描述结构数据,无需提前定义固定表结构。
核心特点:先有数据,再有结构,通过标记分隔语义元素、分层存储。
常见场景:HTML、JSON、XML、NoSQL数据库
范例(JSON):
json
[
{
"id":1,
"name": "唐三",
"age":123
},
{
"id":2,
"name": "叶凡",
"age":456
}
]
1.1.3 非结构化数据
无固定格式、无固定长度,无法通过二维表逻辑展示的数据,仅支持整体存储。
常见类型:二进制文件、音视频、图片、位置信息、日志文件等。
1.2 数据管理发展三大阶段
数据管理技术随计算机迭代升级,整体分为人工管理、文件系统、数据库系统三个阶段。
1.2.1 人工管理阶段(50年代中期前)
-
场景:计算机仅用于科学计算
-
硬件:仅有磁带、打孔纸带,无专业存储设备
-
特点:无专用数据管理软件,人工手动管理数据,仅支持批处理,数据无法共享、冗余度极高
1.2.2 文件系统阶段(50年代后期-60年代中期)
-
场景:计算机拓展至信息管理领域,数据量激增
-
硬件:出现磁盘、磁鼓等联机存储设备
-
优点:数据可长期保存、文件格式多样化、具备基础数据独立性,支持批处理+实时联机处理
-
缺点:无统一访问接口、不支持并发访问、无安全校验、数据关联性弱、冗余无法避免
1.2.3 数据库系统阶段(60年代后期至今)
-
硬件:大容量磁盘普及,硬件成本大幅下降
-
核心优势:解决文件系统所有缺陷,通过DBMS统一管理数据
-
特点:结构化数据模型、高数据独立性、低冗余、支持数据共享、具备完善的安全与备份机制
1.3 数据库核心概念(DB/DBMS/DBA)
1.3.1 三大核心名词
- 数据库:Database(DB) :长期存储在磁盘上、可共享的数据集合 。数据可以采用固定结构化 模型,也可以是半结构化、非结构化 形式,由数据库系统统一管理,如MySQL 里面建好的
shop_db电商数据库。 - 数据库管理系统:Database Management System(DBMS) :操纵、管理数据库的大型软件,负责数据库的创建、使用、维护,保障数据安全性、完整性,是用户与数据库的中间层,如MySQL。
- 数据库管理员:Database Administrator(DBA):负责数据库全生命周期管理(设计、测试、部署、运维),核心目标是保障数据库稳定、安全、完整、高可用。
- 应用程序:Application :对接DBMS,实现业务功能的客户端软件,完成数据交互,如淘宝APP。
1.3.2 DBMS核心特点
-
数据按照一定的数据模型整体结构化组织,数据冗余低、可扩展性强、支持多用户共享
-
具备物理独立性+逻辑独立性,数据与程序解耦
-
提供统一、标准化的查询操作接口
-
内置并发控制、数据备份恢复、权限管控、完整性校验功能
1.3.3 DBMS七大核心功能
-
数据定义(DDL):定义数据库结构、模式、约束,搭建数据库框架
-
数据操作(DML):实现数据增、删、改、查核心操作
-
数据组织存储管理:优化存储结构,提升存储空间利用率与查询效率
-
数据库运行管理:并发控制、安全校验、事务管理、日志监控,保障系统稳定运行
-
数据库维护:数据导入导出、转储、重组、性能监控优化
-
数据保护:从恢复、并发、完整性、安全性四个维度保护数据
-
通信交互:支持与操作系统、网络程序、其他数据库的跨端通信
1.3.4 数据库三代迭代发展
-
层次数据库:最早的数据库模型,树状结构,仅支持一对多关系,灵活性差(代表:IBM IMS)
-
网状数据库:网状结构,支持一对一、一对多、多对多复杂关联,结构复杂、维护难度高
-
关系型数据库::Relational Database Management System(RDBMS):当前主流,以二维表为核心模型,结构简单、易维护、通用性强(代表:MySQL、Oracle、SQL Server、PostgreSQL)
1.3.5 2025年主流数据库排名(DB-Engines)
全球424款数据库综合评分排名,关系型数据库依旧占据主流地位:
-
Oracle(关系型+多模型)
-
MySQL(关系型+多模型,互联网首选)
-
Microsoft SQL Server
-
PostgreSQL
-
MongoDB(文档型非关系库)
1.4 关系型数据库核心理论
1.4.1关系型数据库相关概念
| 名词 | 一句话核心 | 比喻 |
|---|---|---|
| 数据库 | 多张有关联数据表的集合 | 整个工作簿 |
| 数据表 | 行列组成的矩阵,类似 Excel 工作表 | 单个工作表 |
| 列(column) | 竖列,同一类型属性 | 表头:姓名、手机号 |
| 行(Row) | 横向一整条完整数据 | 一行用户信息 |
| 冗余 | 重复存储数据,安全上升、性能下降 | 多存一份备份 |
| 主键(Primary key) | 唯一标识一行,一张表只能一个主键 | 身份证号 |
| 外键(Foreign key) | 用来关联两张表,引用另一表主键 | 订单里的用户编号 |
| 复合键 | 多个字段组合作为主键 / 索引 | 学号 + 课程号联合唯一 |
| 索引 | 类似书本目录,加速查询 | 书的目录 |
| 参照完整性 | 外键不能引用不存在的数据 | 不能下单给一个不存在的用户 |

- 表头(header): 每一列的名称;
- 列(col): 具有相同数据类型的数据的集合;
- 行(row): 每一行用来描述某条记录的具体信息;
- 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
- 键(key): 键的值在当前列中具有唯一性。
1.4.2 E-R模型(数据库设计核心)
E-R(实体-属性-联系)模型是数据库设计的通用建模工具,不受数据库类型限制,三大组成部分:
-
实体(Entity):客观存在的业务对象(学生、老师、商品)
-
属性((Attribute):实体的特征(学生姓名、年龄、学号)
-
联系(Relationship):实体之间的关联关系
1.4.3 三大实体联系类型
-
一对一(1:1):A对应唯一B,B对应唯一A(人-身份证、丈夫-妻子)
-
一对多(1:n):一个A对应多个B,一个B仅对应一个A(班级-学生、部门-员工)
-
多对多(m:n):A、B互相一对多(学生-课程、商品-订单)
1.4.4 数据库CRUD操作
数据库基础操作统称CRUD,对应SQL核心关键字:
| 操作 | 全称 | SQL关键字 | 作用 |
|---|---|---|---|
| 增 | Create | INSERT | 新增数据 |
| 查 | Read | SELECT | 查询读取数据 |
| 改 | Update | UPDATE | 更新已有数据 |
| 删 | Delete | DELETE | 删除数据 |
1.4.5 数据库三大范式(设计必守规则)
范式用于规范数据库表结构,范式越高,数据冗余越低,表拆分越细 ,目的是减少数据冗余、避免插入 / 更新 / 删除异常,企业开发一般满足3NF即可。
第一范式(1NF):原子性
核心规则:所有字段必须是不可拆分的原子值,一列只能存单一数据,禁止复合数据。
❌错误示例(违反 1NF)
表格
| id | 姓名 | 联系电话 |
|---|---|---|
| 1 | 张三 | 138001,139002 |
联系电话这一列存了 2 个号码,可以拆分,不满足原子性。
✅改成符合 1NF:拆成 2 条记录,或者新建多电话表
表格
| id | 姓名 | 联系电话 |
|---|---|---|
| 1 | 张三 | 138001 |
| 1 | 张三 | 139002 |
考点:只要单元格里面有多个可拆分数据,就违反 1NF。
第二范式(2NF):消除部分依赖
前提:满足1NF;核心规则:所有非主键字段必须完全依赖整个主键,不能仅依赖联合主键的某一部分。
适用场景:只有复合主键(多个字段一起当主键)才会出现部分依赖! 单主键(单个字段主键)天然满足 2NF,不会存在部分依赖。
举例子: 复合主键:(学号,课程号)
表格
| 学号 | 课程号 | 学生姓名 | 课程名 | 成绩 |
|---|---|---|---|---|
| 001 | C01 | 张三 | Linux | 90 |
- 成绩:完全依赖(学号 + 课程号),必须两个一起才能确定成绩 ✔
- 学生姓名:只依赖学号 ,只需要主键其中一部分就能确定姓名 → 部分依赖 ❌,违反 2NF
✅拆分两张表消除部分依赖 学生表 (学号,姓名) 选课表 (学号,课程号,成绩)
第三范式(3NF):消除传递依赖
前提:满足2NF;核心规则:非主键字段之间无依赖关系,所有字段直接依赖主键,杜绝间接传递依赖。
范式总结对比
| 范式 | 核心目标 | 关键规则 |
|---|---|---|
| 1NF | 保证原子性 | 字段不可拆分 |
| 2NF | 消除部分依赖 | 非主属性完全依赖主键 |
| 3NF | 消除传递依赖 | 非主属性无相互依赖 |
大白话:非主键列,不能依赖另外一个非主键列。只能全部直接依赖主键。
例子:用户表
表格
| id (主键) | 姓名 | 省份 | 城市 | 邮编 |
|---|---|---|---|---|
| 1 | 张三 | 安徽省 | 滁州市 | 239000 |
邮编可以直接决定城市、省份。
城市 → 邮编(非主键依赖另一个非主键),这就是传递依赖,违反 3NF。
✅拆分:
用户表 (id, 姓名,邮编)
地区表 (邮编,城市,省份)
二、MySQL全方位详解(安装+特性+实操)
2.1 MySQL简介与发展史
2.1.1 发展历程与关键事件
MySQL由Michael "Monty" Widenius研发,命名源自其女儿名字,是全球最流行的开源关系型数据库:
-
1995年:MySQL首个内部版本发布,1996年正式开源
-
2000年:切换GPL开源协议,个人/商业均可免费使用
-
2003年:集成InnoDB存储引擎,支持事务、外键
-
2008年:Sun公司10亿美金收购MySQL
-
2009年:Oracle收购Sun,MySQL归入Oracle旗下
-
2010年后:迭代5.5、5.7、8.0版本,8.0为当前主流稳定版
2.1.2 MySQL三大主流分支
-
官方MySQL:Oracle维护,稳定商用,企业主流选择
-
MariaDB:MySQL创始人开源分支,完全兼容MySQL,社区驱动、更新更快
-
Percona Server:基于MySQL优化,搭载XtraDB引擎,性能、稳定性更强,适配高并发场景
2.1.3 MySQL核心特性
-
完全开源免费,支持二次开发,商用成本极低
-
支持标准SQL语句,通用性强,学习成本低
-
跨平台运行(Windows/Linux/Mac),支持多语言对接
-
插件式存储引擎,可按需选择引擎适配业务
-
单进程多线程架构,并发处理能力优秀
-
自带完善的备份、权限、事务、日志管理功能
2.2 MySQL多实例部署原理
2.2.1 多实例定义
单台服务器运行多个MySQL服务进程,每个进程独立监听不同端口(3306/3307/3308),拥有独立配置、独立数据目录,客户端通过端口区分访问不同实例。
2.2.2 多实例优缺点
优点:
-
节约硬件资源,无需多台服务器部署多版本MySQL
-
统一环境,方便版本对比、性能测试、新旧业务切换
-
集中管理,统一配置安全规则、备份策略,运维高效
缺点:
-
单服务器资源抢占,高并发场景下互相影响性能
-
存在单点故障,服务器宕机所有实例同步失效
2.3 MySQL组成与常用工具
2.3.1 服务端核心组件
-
mysqld:MySQL核心服务进程,数据库运行核心
-
mysqld_safe:安全启动脚本,保障服务稳定运行、异常重启
-
mysqld_multi:多实例管理工具,统一管理多实例启停
2.3.2 客户端常用工具
-
mysql:交互式命令行客户端,核心操作工具
-
mysqldump:数据库备份工具,支持全量/增量备份
-
mysqladmin:服务端管理工具,可创建/删除数据库、查看状态
-
mysqlimport:批量数据导入工具
2.3.3 配置文件生效顺序
优先级从高到低:~/.my.cnf> /etc/mysql/my.cnf > /etc/my.cnf
2.4 linux系统安装mysql
使用CentOS Stream 8安装8.0.26版本的MySQL
bash
# 安装mysql软件
[root@localhost ~]# dnf install -y mysql-server-8.0.26
# 设置开机自启,同时启动服务
[root@localhost ~]# systemctl enable mysqld --now
# 查看服务端口,是否启动
[root@localhost ~]# ss -nlp | grep 3306
# 登录及初始化MySQL
[root@localhost ~]# mysql # 当前用户为root,8.0.x在安装完成后,root的默认密码为空,不需要输入密码即可登录
mysql> ALTER USER root@'localhost' IDENTIFIED BY 'Huawei@123'; # 设置root密码为Huawei@123
2.5 MySQL客户端实操命令大全
2.5.1 客户端登录常用参数
bash
# 常用参数
-V/--version # 查看客户端版本
-u/--user # 指定登录用户名
-p/--password # 指定登录密码
-h/--host # 指定服务端IP
-P/--port # 指定端口(默认3306)
-D/--database # 登录直接指定数据库
-E/--vertical # 垂直展示查询结果
-e/--execute # 非交互式执行SQL并退出
实操范例:
bash
# 账号密码登录
mysql -uroot -pHuawei@123
# 指定IP端口登录
mysql -uroot -h127.0.0.1 -P3306
# 查看版本
mysql -V
# 非交互式执行查询
mysql -e "show databases;"
2.5.2 常用客户端内置命令
\h / ?:查看帮助\c / clear:清空当前未执行的SQL语句\q / exit / quit:退出MySQL客户端\s / status:查看数据库连接、编码、版本状态\u / use 库名:切换数据库source 脚本路径:导入SQL脚本文件delimiter:修改SQL语句结束符
三、总结
本章主要包含数据库基础原理 与MySQL基础实操两大核心内容。
数据库原理:区分三类数据结构,掌握数据管理三阶段差异、DB/DBMS/DBA核心概念、E-R模型、实体关系、CRUD操作与三大设计范式,奠定数据库理论基础。
MySQL基础:熟悉MySQL发展、分支与核心特性,理解多实例部署场景,掌握数据库组件、工具、配置优先级以及客户端常用实操命令,具备基础运维与操作能力。
整体做到懂理论、会实操,为后续SQL进阶、数据库优化与运维学习打下扎实基础。