MySQL基础核心|数据库原理+MySQL详解

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. 数据按照一定的数据模型整体结构化组织,数据冗余低、可扩展性强、支持多用户共享

  2. 具备物理独立性+逻辑独立性,数据与程序解耦

  3. 提供统一、标准化的查询操作接口

  4. 内置并发控制、数据备份恢复、权限管控、完整性校验功能

1.3.3 DBMS七大核心功能

  1. 数据定义(DDL):定义数据库结构、模式、约束,搭建数据库框架

  2. 数据操作(DML):实现数据增、删、改、查核心操作

  3. 数据组织存储管理:优化存储结构,提升存储空间利用率与查询效率

  4. 数据库运行管理:并发控制、安全校验、事务管理、日志监控,保障系统稳定运行

  5. 数据库维护:数据导入导出、转储、重组、性能监控优化

  6. 数据保护:从恢复、并发、完整性、安全性四个维度保护数据

  7. 通信交互:支持与操作系统、网络程序、其他数据库的跨端通信

1.3.4 数据库三代迭代发展

  1. 层次数据库:最早的数据库模型,树状结构,仅支持一对多关系,灵活性差(代表:IBM IMS)

  2. 网状数据库:网状结构,支持一对一、一对多、多对多复杂关联,结构复杂、维护难度高

  3. 关系型数据库::Relational Database Management System(RDBMS):当前主流,以二维表为核心模型,结构简单、易维护、通用性强(代表:MySQL、Oracle、SQL Server、PostgreSQL)

1.3.5 2025年主流数据库排名(DB-Engines)

全球424款数据库综合评分排名,关系型数据库依旧占据主流地位:

  1. Oracle(关系型+多模型)

  2. MySQL(关系型+多模型,互联网首选)

  3. Microsoft SQL Server

  4. PostgreSQL

  5. 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:1):A对应唯一B,B对应唯一A(人-身份证、丈夫-妻子)

  2. 一对多(1:n):一个A对应多个B,一个B仅对应一个A(班级-学生、部门-员工)

  3. 多对多(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三大主流分支

  1. 官方MySQL:Oracle维护,稳定商用,企业主流选择

  2. MariaDB:MySQL创始人开源分支,完全兼容MySQL,社区驱动、更新更快

  3. 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进阶、数据库优化与运维学习打下扎实基础。

相关推荐
‎ദ്ദിᵔ.˛.ᵔ₎1 小时前
Mysql 基本查询
数据库·mysql
-madongyu-1 小时前
GaussDB 性能调优:等待事件、慢 SQL 定位与关键参数
数据库·sql·gaussdb
-madongyu-1 小时前
GaussDB 部署规划:磁盘水位、RAID 与端口设计
数据库·gaussdb
weixin_511255218 小时前
MySQL升级记录
数据库·mysql
程序猿乐锅9 小时前
【黑马点评 | 第八篇】Redisson分布式锁
java·数据库·spring boot·redis·分布式·spring·缓存
Leo.yuan9 小时前
2026年本地化Data Agent优质厂商盘点:哪些产品更适合企业生产环境
大数据·数据库·人工智能
做运维的阿瑞10 小时前
数据库增删改的安全写法
数据库·sql·mysql
程序边界10 小时前
迁移评估不再拍脑袋,这个数据迁移工具的量化报告把我救了(上)
数据库
阿狗童鞋10 小时前
Redis实战指南
数据库·redis·缓存